From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- .../about_omni.ja_(formerly_omni.jar)/index.html | 61 + .../fr/mozilla/add-ons/add-on_debugger/index.html | 94 ++ .../add-ons/amo/r\303\250gles/featured/index.html" | 85 ++ .../mozilla/add-ons/amo/r\303\250gles/index.html" | 21 + .../add-ons/amo/r\303\250gles/reviews/index.html" | 157 +++ .../add-ons/bootstrapped_extensions/index.html | 348 +++++ .../index.html | 213 +++ .../retrait_de_votre_extension/index.html | 68 + files/fr/mozilla/add-ons/index.html | 108 ++ .../mozilla/add-ons/install_manifests/index.html | 566 ++++++++ files/fr/mozilla/add-ons/nous_contacter/index.html | 45 + .../index.html | 103 ++ files/fr/mozilla/add-ons/plugins/index.html | 110 ++ .../add-ons/sdk/high-level_apis/base64/index.html | 111 ++ .../sdk/high-level_apis/context-menu/index.html | 833 +++++++++++ .../mozilla/add-ons/sdk/high-level_apis/index.html | 13 + .../sdk/high-level_apis/indexed-db/index.html | 166 +++ .../sdk/high-level_apis/simple-storage/index.html | 170 +++ .../add-ons/sdk/high-level_apis/tabs/index.html | 669 +++++++++ files/fr/mozilla/add-ons/sdk/index.html | 337 +++++ .../mozilla/add-ons/sdk/low-level_apis/index.html | 24 + .../sdk/low-level_apis/io_byte-streams/index.html | 109 ++ .../add-ons/sdk/low-level_apis/io_file/index.html | 196 +++ .../low-level_apis/system_child_process/index.html | 50 + .../sdk/low-level_apis/ui_button_action/index.html | 659 +++++++++ .../add-ons/sdk/tools/cfx_to_jpm/index.html | 192 +++ files/fr/mozilla/add-ons/sdk/tools/index.html | 13 + files/fr/mozilla/add-ons/sdk/tools/jpm/index.html | 600 ++++++++ .../tutorials/add_a_context_menu_item/index.html | 115 ++ .../sdk/tutorials/getting_started_(jpm)/index.html | 165 +++ files/fr/mozilla/add-ons/sdk/tutorials/index.html | 143 ++ .../mozilla/add-ons/sdk/tutorials/l10n/index.html | 383 ++++++ files/fr/mozilla/add-ons/thunderbird/index.html | 135 ++ .../mozilla/add-ons/th\303\250mes/fond/index.html" | 79 ++ .../fr/mozilla/add-ons/th\303\250mes/index.html" | 45 + .../th\303\250mes/theme_concepts/index.html" | 231 ++++ .../index.html | 224 +++ .../index.html" | 219 +++ .../add-ons_for_desktop_apps/index.html | 30 + .../add-ons_in_the_enterprise/index.html | 166 +++ .../alternative_distribution_options/index.html | 68 + .../sideloading_add-ons/index.html | 134 ++ .../anatomy_of_a_webextension/index.html | 146 ++ .../webextensions/api/alarms/alarm/index.html | 46 + .../webextensions/api/alarms/clear/index.html | 64 + .../webextensions/api/alarms/clearall/index.html | 57 + .../webextensions/api/alarms/create/index.html | 105 ++ .../webextensions/api/alarms/get/index.html | 62 + .../webextensions/api/alarms/getall/index.html | 63 + .../add-ons/webextensions/api/alarms/index.html | 60 + .../webextensions/api/alarms/onalarm/index.html | 88 ++ .../api/bookmarks/bookmarktreenode/index.html | 91 ++ .../api/bookmarks/bookmarktreenodetype/index.html | 35 + .../bookmarktreenodeunmodifiable/index.html | 68 + .../webextensions/api/bookmarks/create/index.html | 103 ++ .../api/bookmarks/createdetails/index.html | 81 ++ .../webextensions/api/bookmarks/get/index.html | 99 ++ .../api/bookmarks/getchildren/index.html | 105 ++ .../api/bookmarks/getrecent/index.html | 105 ++ .../api/bookmarks/getsubtree/index.html | 121 ++ .../webextensions/api/bookmarks/gettree/index.html | 120 ++ .../add-ons/webextensions/api/bookmarks/index.html | 130 ++ .../webextensions/api/bookmarks/move/index.html | 120 ++ .../api/bookmarks/onchanged/index.html | 138 ++ .../api/bookmarks/onchildrenreordered/index.html | 126 ++ .../api/bookmarks/oncreated/index.html | 123 ++ .../api/bookmarks/onimportbegan/index.html | 113 ++ .../api/bookmarks/onimportended/index.html | 113 ++ .../webextensions/api/bookmarks/onmoved/index.html | 135 ++ .../api/bookmarks/onremoved/index.html | 137 ++ .../webextensions/api/bookmarks/remove/index.html | 108 ++ .../api/bookmarks/removetree/index.html | 114 ++ .../webextensions/api/bookmarks/search/index.html | 152 ++ .../webextensions/api/bookmarks/update/index.html | 126 ++ .../api/browseraction/colorarray/index.html | 75 + .../api/browseraction/disable/index.html | 95 ++ .../api/browseraction/enable/index.html | 91 ++ .../getbadgebackgroundcolor/index.html | 112 ++ .../api/browseraction/getbadgetext/index.html | 108 ++ .../api/browseraction/getbadgetextcolor/index.html | 102 ++ .../api/browseraction/getpopup/index.html | 108 ++ .../api/browseraction/gettitle/index.html | 116 ++ .../api/browseraction/imagedatatype/index.html | 68 + .../webextensions/api/browseraction/index.html | 133 ++ .../api/browseraction/isenabled/index.html | 86 ++ .../api/browseraction/onclicked/index.html | 112 ++ .../api/browseraction/openpopup/index.html | 58 + .../setbadgebackgroundcolor/index.html | 128 ++ .../api/browseraction/setbadgetext/index.html | 116 ++ .../api/browseraction/setbadgetextcolor/index.html | 119 ++ .../api/browseraction/seticon/index.html | 194 +++ .../api/browseraction/setpopup/index.html | 146 ++ .../api/browseraction/settitle/index.html | 126 ++ .../allowpopupsforuserevents/index.html | 56 + .../api/browsersettings/cacheenabled/index.html | 48 + .../closetabsbydoubleclick/index.html | 27 + .../contextmenushowevent/index.html | 40 + .../browsersettings/ftpprotocolenabled/index.html | 47 + .../browsersettings/homepageoverride/index.html | 36 + .../imageanimationbehavior/index.html | 38 + .../webextensions/api/browsersettings/index.html | 71 + .../browsersettings/newtabpageoverride/index.html | 36 + .../api/browsersettings/newtabposition/index.html | 36 + .../openbookmarksinnewtabs/index.html | 38 + .../opensearchresultsinnewtabs/index.html | 40 + .../openurlbarresultsinnewtabs/index.html | 40 + .../overridedocumentcolors/index.html | 46 + .../api/browsersettings/proxyconfig/index.html | 73 + .../browsersettings/usedocumentfonts/index.html | 45 + .../webnotificationsdisabled/index.html | 49 + .../api/browsersettings/zoomfullpage/index.html | 45 + .../browsersettings/zoomsitespecific/index.html | 55 + .../api/browsingdata/datatypeset/index.html | 101 ++ .../webextensions/api/browsingdata/index.html | 128 ++ .../api/browsingdata/removaloptions/index.html | 89 ++ .../api/browsingdata/remove/index.html | 129 ++ .../api/browsingdata/removecache/index.html | 100 ++ .../api/browsingdata/removecookies/index.html | 132 ++ .../api/browsingdata/removedownloads/index.html | 125 ++ .../api/browsingdata/removeformdata/index.html | 124 ++ .../api/browsingdata/removehistory/index.html | 125 ++ .../api/browsingdata/removelocalstorage/index.html | 103 ++ .../api/browsingdata/removepasswords/index.html | 123 ++ .../api/browsingdata/removeplugindata/index.html | 124 ++ .../api/browsingdata/settings/index.html | 109 ++ .../api/captiveportal/canonicalurl/index.html | 60 + .../api/captiveportal/getlastchecked/index.html | 68 + .../api/captiveportal/getstate/index.html | 64 + .../webextensions/api/captiveportal/index.html | 90 ++ .../onconnectivityavailable/index.html | 100 ++ .../api/captiveportal/onstatechanged/index.html | 102 ++ .../add-ons/webextensions/api/clipboard/index.html | 39 + .../api/clipboard/setimagedata/index.html | 81 ++ .../webextensions/api/commands/command/index.html | 46 + .../webextensions/api/commands/getall/index.html | 61 + .../add-ons/webextensions/api/commands/index.html | 91 ++ .../api/commands/oncommand/index.html | 98 ++ .../webextensions/api/commands/reset/index.html | 59 + .../webextensions/api/commands/update/index.html | 70 + .../webextensions/api/contentscripts/index.html | 45 + .../api/contentscripts/register/index.html | 106 ++ .../registeredcontentscript/index.html | 69 + .../registeredcontentscript/unregister/index.html | 67 + .../contextualidentity/index.html | 76 + .../api/contextualidentities/create/index.html | 108 ++ .../api/contextualidentities/get/index.html | 65 + .../api/contextualidentities/index.html | 65 + .../api/contextualidentities/oncreated/index.html | 98 ++ .../api/contextualidentities/onremoved/index.html | 98 ++ .../api/contextualidentities/onupdated/index.html | 98 ++ .../api/contextualidentities/query/index.html | 85 ++ .../api/contextualidentities/remove/index.html | 67 + .../api/contextualidentities/update/index.html | 114 ++ .../webextensions/api/cookies/cookie/index.html | 113 ++ .../api/cookies/cookiestore/index.html | 99 ++ .../webextensions/api/cookies/get/index.html | 122 ++ .../webextensions/api/cookies/getall/index.html | 120 ++ .../api/cookies/getallcookiestores/index.html | 101 ++ .../add-ons/webextensions/api/cookies/index.html | 169 +++ .../webextensions/api/cookies/onchanged/index.html | 128 ++ .../api/cookies/onchangedcause/index.html | 92 ++ .../webextensions/api/cookies/remove/index.html | 121 ++ .../api/cookies/samesitestatus/index.html | 35 + .../webextensions/api/cookies/set/index.html | 124 ++ .../api/devtools.inspectedwindow/eval/index.html | 219 +++ .../api/devtools.inspectedwindow/index.html | 82 ++ .../api/devtools.inspectedwindow/reload/index.html | 100 ++ .../api/devtools.inspectedwindow/tabid/index.html | 85 ++ .../api/devtools.network/gethar/index.html | 88 ++ .../webextensions/api/devtools.network/index.html | 75 + .../api/devtools.network/onnavigated/index.html | 103 ++ .../devtools.network/onrequestfinished/index.html | 112 ++ .../api/devtools.panels/create/index.html | 110 ++ .../api/devtools.panels/elements/index.html | 29 + .../elementspanel/createsidebarpane/index.html | 107 ++ .../api/devtools.panels/elementspanel/index.html | 73 + .../elementspanel/onselectionchanged/index.html | 74 + .../api/devtools.panels/extensionpanel/index.html | 93 ++ .../extensionsidebarpane/index.html | 89 ++ .../extensionsidebarpane/onhidden/index.html | 80 ++ .../extensionsidebarpane/onshown/index.html | 78 ++ .../extensionsidebarpane/setexpression/index.html | 106 ++ .../extensionsidebarpane/setobject/index.html | 104 ++ .../extensionsidebarpane/setpage/index.html | 89 ++ .../webextensions/api/devtools.panels/index.html | 103 ++ .../api/devtools.panels/onthemechanged/index.html | 72 + .../api/devtools.panels/themename/index.html | 39 + .../add-ons/webextensions/api/devtools/index.html | 72 + .../add-ons/webextensions/api/dns/index.html | 31 + .../webextensions/api/dns/resolve/index.html | 102 ++ .../api/downloads/acceptdanger/index.html | 86 ++ .../api/downloads/booleandelta/index.html | 74 + .../webextensions/api/downloads/cancel/index.html | 101 ++ .../api/downloads/dangertype/index.html | 93 ++ .../api/downloads/doubledelta/index.html | 75 + .../api/downloads/download/index.html | 145 ++ .../api/downloads/downloaditem/index.html | 111 ++ .../api/downloads/downloadquery/index.html | 122 ++ .../api/downloads/downloadtime/index.html | 79 ++ .../webextensions/api/downloads/drag/index.html | 80 ++ .../webextensions/api/downloads/erase/index.html | 123 ++ .../downloads/filenameconflictaction/index.html | 79 ++ .../api/downloads/getfileicon/index.html | 124 ++ .../add-ons/webextensions/api/downloads/index.html | 132 ++ .../api/downloads/interruptreason/index.html | 119 ++ .../api/downloads/onchanged/index.html | 150 ++ .../api/downloads/oncreated/index.html | 110 ++ .../api/downloads/onerased/index.html | 115 ++ .../webextensions/api/downloads/open/index.html | 112 ++ .../webextensions/api/downloads/pause/index.html | 96 ++ .../api/downloads/removefile/index.html | 118 ++ .../webextensions/api/downloads/resume/index.html | 99 ++ .../webextensions/api/downloads/search/index.html | 168 +++ .../api/downloads/setshelfenabled/index.html | 84 ++ .../webextensions/api/downloads/show/index.html | 111 ++ .../api/downloads/showdefaultfolder/index.html | 86 ++ .../webextensions/api/downloads/state/index.html | 83 ++ .../api/downloads/stringdelta/index.html | 75 + .../webextensions/api/events/event/index.html | 87 ++ .../add-ons/webextensions/api/events/index.html | 72 + .../webextensions/api/events/rule/index.html | 81 ++ .../webextensions/api/events/urlfilter/index.html | 142 ++ .../api/extension/getbackgroundpage/index.html | 100 ++ .../api/extension/getextensiontabs/index.html | 88 ++ .../webextensions/api/extension/geturl/index.html | 94 ++ .../api/extension/getviews/index.html | 117 ++ .../add-ons/webextensions/api/extension/index.html | 109 ++ .../api/extension/inincognitocontext/index.html | 64 + .../extension/isallowedfileschemeaccess/index.html | 94 ++ .../extension/isallowedincognitoaccess/index.html | 92 ++ .../api/extension/lasterror/index.html | 64 + .../api/extension/onrequest/index.html | 117 ++ .../api/extension/onrequestexternal/index.html | 116 ++ .../api/extension/sendrequest/index.html | 97 ++ .../api/extension/setupdateurldata/index.html | 80 ++ .../api/extension/viewtype/index.html | 68 + .../api/extensiontypes/imagedetails/index.html | 75 + .../api/extensiontypes/imageformat/index.html | 68 + .../webextensions/api/extensiontypes/index.html | 76 + .../api/extensiontypes/injectdetails/index.html | 24 + .../api/extensiontypes/runat/index.html | 76 + .../add-ons/webextensions/api/find/find/index.html | 292 ++++ .../api/find/highlightresults/index.html | 53 + .../add-ons/webextensions/api/find/index.html | 32 + .../api/find/removehighlighting/index.html | 41 + .../webextensions/api/history/addurl/index.html | 150 ++ .../webextensions/api/history/deleteall/index.html | 96 ++ .../api/history/deleterange/index.html | 107 ++ .../webextensions/api/history/deleteurl/index.html | 142 ++ .../webextensions/api/history/getvisits/index.html | 119 ++ .../api/history/historyitem/index.html | 83 ++ .../add-ons/webextensions/api/history/index.html | 134 ++ .../api/history/ontitlechanged/index.html | 117 ++ .../webextensions/api/history/onvisited/index.html | 113 ++ .../api/history/onvisitremoved/index.html | 122 ++ .../webextensions/api/history/search/index.html | 155 +++ .../api/history/transitiontype/index.html | 93 ++ .../webextensions/api/history/visititem/index.html | 81 ++ .../api/i18n/detectlanguage/index.html | 115 ++ .../api/i18n/getacceptlanguages/index.html | 92 ++ .../webextensions/api/i18n/getmessage/index.html | 119 ++ .../api/i18n/getuilanguage/index.html | 86 ++ .../add-ons/webextensions/api/i18n/index.html | 57 + .../webextensions/api/i18n/languagecode/index.html | 69 + .../locale-specific_message_reference/index.html | 129 ++ .../api/identity/getredirecturl/index.html | 55 + .../add-ons/webextensions/api/identity/index.html | 106 ++ .../api/identity/launchwebauthflow/index.html | 124 ++ .../webextensions/api/idle/idlestate/index.html | 68 + .../add-ons/webextensions/api/idle/index.html | 88 ++ .../api/idle/onstatechanged/index.html | 113 ++ .../webextensions/api/idle/querystate/index.html | 100 ++ .../api/idle/setdetectioninterval/index.html | 84 ++ .../mozilla/add-ons/webextensions/api/index.html | 60 + .../api/management/extensioninfo/index.html | 128 ++ .../webextensions/api/management/get/index.html | 98 ++ .../webextensions/api/management/getall/index.html | 96 ++ .../getpermissionwarningsbyid/index.html | 103 ++ .../getpermissionwarningsbymanifest/index.html | 112 ++ .../api/management/getself/index.html | 90 ++ .../webextensions/api/management/index.html | 112 ++ .../api/management/install/index.html | 85 ++ .../api/management/ondisabled/index.html | 106 ++ .../api/management/onenabled/index.html | 106 ++ .../api/management/oninstalled/index.html | 106 ++ .../api/management/onuninstalled/index.html | 106 ++ .../api/management/setenabled/index.html | 105 ++ .../api/management/uninstall/index.html | 111 ++ .../api/management/uninstallself/index.html | 121 ++ .../menus/action_menu_top_level_limit/index.html | 66 + .../webextensions/api/menus/contexttype/index.html | 103 ++ .../webextensions/api/menus/create/index.html | 228 +++ .../api/menus/createproperties/index.html | 130 ++ .../api/menus/gettargetelement/index.html | 74 + .../add-ons/webextensions/api/menus/index.html | 203 +++ .../webextensions/api/menus/itemtype/index.html | 81 ++ .../api/menus/menus.overridecontext()/index.html | 62 + .../webextensions/api/menus/onclickdata/index.html | 105 ++ .../webextensions/api/menus/onclicked/index.html | 118 ++ .../webextensions/api/menus/onhidden/index.html | 70 + .../webextensions/api/menus/onshown/index.html | 153 +++ .../api/menus/overridecontext/index.html | 46 + .../webextensions/api/menus/refresh/index.html | 66 + .../webextensions/api/menus/remove/index.html | 113 ++ .../webextensions/api/menus/removeall/index.html | 107 ++ .../webextensions/api/menus/update/index.html | 193 +++ .../api/notifications/clear/index.html | 80 ++ .../api/notifications/create/index.html | 149 ++ .../api/notifications/getall/index.html | 88 ++ .../webextensions/api/notifications/index.html | 66 + .../notifications/notificationoptions/index.html | 91 ++ .../api/notifications/onbuttonclicked/index.html | 69 + .../api/notifications/onclicked/index.html | 75 + .../api/notifications/onclosed/index.html | 77 ++ .../api/notifications/onshown/index.html | 77 ++ .../api/notifications/templatetype/index.html | 69 + .../api/notifications/update/index.html | 110 ++ .../add-ons/webextensions/api/omnibox/index.html | 70 + .../api/omnibox/oninputcancelled/index.html | 60 + .../api/omnibox/oninputchanged/index.html | 153 +++ .../api/omnibox/oninputentered/index.html | 153 +++ .../omnibox/oninputentereddisposition/index.html | 45 + .../api/omnibox/oninputstarted/index.html | 70 + .../api/omnibox/setdefaultsuggestion/index.html | 58 + .../api/omnibox/suggestresult/index.html | 43 + .../api/pageaction/getpopup/index.html | 114 ++ .../api/pageaction/gettitle/index.html | 109 ++ .../webextensions/api/pageaction/hide/index.html | 88 ++ .../api/pageaction/imagedatatype/index.html | 68 + .../webextensions/api/pageaction/index.html | 112 ++ .../api/pageaction/isshown/index.html | 77 ++ .../api/pageaction/onclicked/index.html | 114 ++ .../api/pageaction/openpopup/index.html | 58 + .../api/pageaction/seticon/index.html | 130 ++ .../api/pageaction/setpopup/index.html | 107 ++ .../api/pageaction/settitle/index.html | 103 ++ .../webextensions/api/pageaction/show/index.html | 107 ++ .../api/permissions/contains/index.html | 95 ++ .../api/permissions/getall/index.html | 56 + .../webextensions/api/permissions/index.html | 84 ++ .../api/permissions/onadded/index.html | 75 + .../api/permissions/onremoved/index.html | 75 + .../api/permissions/permissions/index.html | 41 + .../api/permissions/remove/index.html | 70 + .../api/permissions/request/index.html | 90 ++ .../api/pkcs11/getmoduleslots/index.html | 94 ++ .../add-ons/webextensions/api/pkcs11/index.html | 90 ++ .../api/pkcs11/installmodule/index.html | 73 + .../api/pkcs11/ismoduleinstalled/index.html | 57 + .../api/pkcs11/uninstallmodule/index.html | 53 + .../add-ons/webextensions/api/privacy/index.html | 70 + .../webextensions/api/privacy/network/index.html | 116 ++ .../webextensions/api/privacy/services/index.html | 60 + .../webextensions/api/privacy/websites/index.html | 160 +++ .../add-ons/webextensions/api/proxy/index.html | 68 + .../api/proxy/onproxyerror/index.html | 60 + .../webextensions/api/proxy/onrequest/index.html | 107 ++ .../webextensions/api/proxy/proxyinfo/index.html | 63 + .../webextensions/api/proxy/register/index.html | 161 +++ .../api/proxy/requestdetails/index.html | 60 + .../webextensions/api/proxy/unregister/index.html | 55 + .../webextensions/api/runtime/connect/index.html | 161 +++ .../api/runtime/connectnative/index.html | 122 ++ .../api/runtime/getbackgroundpage/index.html | 112 ++ .../api/runtime/getbrowserinfo/index.html | 63 + .../api/runtime/getmanifest/index.html | 86 ++ .../runtime/getpackagedirectoryentry/index.html | 88 ++ .../api/runtime/getplatforminfo/index.html | 90 ++ .../webextensions/api/runtime/geturl/index.html | 97 ++ .../webextensions/api/runtime/id/index.html | 70 + .../add-ons/webextensions/api/runtime/index.html | 171 +++ .../webextensions/api/runtime/lasterror/index.html | 124 ++ .../api/runtime/messagesender/index.html | 86 ++ .../runtime/onbrowserupdateavailable/index.html | 103 ++ .../webextensions/api/runtime/onconnect/index.html | 155 +++ .../api/runtime/onconnectexternal/index.html | 140 ++ .../api/runtime/oninstalled/index.html | 125 ++ .../api/runtime/oninstalledreason/index.html | 79 ++ .../webextensions/api/runtime/onmessage/index.html | 327 +++++ .../api/runtime/onmessageexternal/index.html | 157 +++ .../api/runtime/onrestartrequired/index.html | 100 ++ .../api/runtime/onrestartrequiredreason/index.html | 74 + .../webextensions/api/runtime/onstartup/index.html | 105 ++ .../webextensions/api/runtime/onsuspend/index.html | 108 ++ .../api/runtime/onsuspendcanceled/index.html | 103 ++ .../api/runtime/onupdateavailable/index.html | 116 ++ .../api/runtime/openoptionspage/index.html | 86 ++ .../api/runtime/platformarch/index.html | 77 ++ .../api/runtime/platforminfo/index.html | 77 ++ .../api/runtime/platformnaclarch/index.html | 68 + .../api/runtime/platformos/index.html | 83 ++ .../webextensions/api/runtime/port/index.html | 248 ++++ .../webextensions/api/runtime/reload/index.html | 83 ++ .../api/runtime/requestupdatecheck/index.html | 110 ++ .../runtime/requestupdatecheckstatus/index.html | 77 ++ .../api/runtime/sendmessage/index.html | 167 +++ .../api/runtime/sendnativemessage/index.html | 114 ++ .../api/runtime/setuninstallurl/index.html | 97 ++ .../webextensions/api/search/get/index.html | 71 + .../add-ons/webextensions/api/search/index.html | 32 + .../webextensions/api/search/search/index.html | 102 ++ .../webextensions/api/sessions/filter/index.html | 75 + .../api/sessions/forgetclosedtab/index.html | 80 ++ .../api/sessions/forgetclosedwindow/index.html | 77 ++ .../api/sessions/getrecentlyclosed/index.html | 115 ++ .../api/sessions/gettabvalue/index.html | 66 + .../api/sessions/getwindowvalue/index.html | 66 + .../add-ons/webextensions/api/sessions/index.html | 137 ++ .../api/sessions/max_session_results/index.html | 62 + .../api/sessions/onchanged/index.html | 123 ++ .../api/sessions/removetabvalue/index.html | 84 ++ .../api/sessions/removewindowvalue/index.html | 82 ++ .../webextensions/api/sessions/restore/index.html | 112 ++ .../webextensions/api/sessions/session/index.html | 86 ++ .../api/sessions/settabvalue/index.html | 71 + .../api/sessions/setwindowvalue/index.html | 70 + .../api/sidebaraction/close/index.html | 56 + .../api/sidebaraction/getpanel/index.html | 109 ++ .../api/sidebaraction/gettitle/index.html | 116 ++ .../api/sidebaraction/imagedatatype/index.html | 67 + .../webextensions/api/sidebaraction/index.html | 101 ++ .../api/sidebaraction/isopen/index.html | 86 ++ .../api/sidebaraction/open/index.html | 59 + .../api/sidebaraction/seticon/index.html | 137 ++ .../api/sidebaraction/setpanel/index.html | 138 ++ .../api/sidebaraction/settitle/index.html | 125 ++ .../api/sidebaraction/toggle/index.html | 56 + .../add-ons/webextensions/api/storage/index.html | 107 ++ .../webextensions/api/storage/local/index.html | 94 ++ .../webextensions/api/storage/managed/index.html | 136 ++ .../webextensions/api/storage/onchanged/index.html | 127 ++ .../api/storage/storagearea/clear/index.html | 62 + .../api/storage/storagearea/get/index.html | 135 ++ .../storage/storagearea/getbytesinuse/index.html | 54 + .../api/storage/storagearea/index.html | 83 ++ .../api/storage/storagearea/remove/index.html | 70 + .../api/storage/storagearea/set/index.html | 101 ++ .../api/storage/storagechange/index.html | 75 + .../webextensions/api/storage/sync/index.html | 88 ++ .../webextensions/api/tabs/capturetab/index.html | 102 ++ .../api/tabs/capturevisibletab/index.html | 105 ++ .../webextensions/api/tabs/connect/index.html | 122 ++ .../webextensions/api/tabs/create/index.html | 145 ++ .../api/tabs/detectlanguage/index.html | 127 ++ .../webextensions/api/tabs/discard/index.html | 119 ++ .../webextensions/api/tabs/duplicate/index.html | 114 ++ .../api/tabs/executescript/index.html | 176 +++ .../add-ons/webextensions/api/tabs/get/index.html | 97 ++ .../api/tabs/getallinwindow/index.html | 90 ++ .../webextensions/api/tabs/getcurrent/index.html | 100 ++ .../webextensions/api/tabs/getselected/index.html | 93 ++ .../webextensions/api/tabs/getzoom/index.html | 116 ++ .../api/tabs/getzoomsettings/index.html | 103 ++ .../webextensions/api/tabs/goback/index.html | 101 ++ .../webextensions/api/tabs/goforward/index.html | 101 ++ .../add-ons/webextensions/api/tabs/hide/index.html | 88 ++ .../webextensions/api/tabs/highlight/index.html | 102 ++ .../add-ons/webextensions/api/tabs/index.html | 225 +++ .../webextensions/api/tabs/insertcss/index.html | 144 ++ .../add-ons/webextensions/api/tabs/move/index.html | 168 +++ .../api/tabs/moveinsuccession/index.html | 54 + .../webextensions/api/tabs/mutedinfo/index.html | 81 ++ .../api/tabs/mutedinforeason/index.html | 81 ++ .../webextensions/api/tabs/onactivated/index.html | 127 ++ .../api/tabs/onactivechanged/index.html | 120 ++ .../webextensions/api/tabs/onattached/index.html | 133 ++ .../webextensions/api/tabs/oncreated/index.html | 121 ++ .../webextensions/api/tabs/ondetached/index.html | 133 ++ .../api/tabs/onhighlightchanged/index.html | 112 ++ .../api/tabs/onhighlighted/index.html | 126 ++ .../webextensions/api/tabs/onmoved/index.html | 133 ++ .../webextensions/api/tabs/onremoved/index.html | 129 ++ .../webextensions/api/tabs/onreplaced/index.html | 124 ++ .../api/tabs/onselectionchanged/index.html | 119 ++ .../webextensions/api/tabs/onupdated/index.html | 281 ++++ .../webextensions/api/tabs/onzoomchange/index.html | 134 ++ .../webextensions/api/tabs/pagesettings/index.html | 92 ++ .../webextensions/api/tabs/print/index.html | 50 + .../webextensions/api/tabs/printpreview/index.html | 66 + .../webextensions/api/tabs/query/index.html | 190 +++ .../webextensions/api/tabs/reload/index.html | 115 ++ .../webextensions/api/tabs/remove/index.html | 116 ++ .../webextensions/api/tabs/removecss/index.html | 121 ++ .../webextensions/api/tabs/saveaspdf/index.html | 68 + .../webextensions/api/tabs/sendmessage/index.html | 148 ++ .../webextensions/api/tabs/sendrequest/index.html | 93 ++ .../webextensions/api/tabs/setzoom/index.html | 107 ++ .../api/tabs/setzoomsettings/index.html | 102 ++ .../add-ons/webextensions/api/tabs/show/index.html | 73 + .../add-ons/webextensions/api/tabs/tab/index.html | 127 ++ .../webextensions/api/tabs/tab_id_none/index.html | 68 + .../webextensions/api/tabs/tabstatus/index.html | 72 + .../api/tabs/togglereadermode/index.html | 85 ++ .../webextensions/api/tabs/update/index.html | 172 +++ .../webextensions/api/tabs/windowtype/index.html | 79 ++ .../webextensions/api/tabs/zoomsettings/index.html | 81 ++ .../api/tabs/zoomsettingsmode/index.html | 81 ++ .../api/tabs/zoomsettingsscope/index.html | 79 ++ .../webextensions/api/theme/getcurrent/index.html | 66 + .../add-ons/webextensions/api/theme/index.html | 50 + .../webextensions/api/theme/onupdated/index.html | 85 ++ .../webextensions/api/theme/reset/index.html | 80 ++ .../webextensions/api/theme/theme/index.html | 25 + .../webextensions/api/theme/update/index.html | 86 ++ .../webextensions/api/topsites/get/index.html | 145 ++ .../add-ons/webextensions/api/topsites/index.html | 81 ++ .../api/topsites/mostvisitedurl/index.html | 79 ++ .../api/types/browsersetting/clear/index.html | 98 ++ .../api/types/browsersetting/get/index.html | 121 ++ .../api/types/browsersetting/index.html | 85 ++ .../api/types/browsersetting/onchange/index.html | 128 ++ .../api/types/browsersetting/set/index.html | 127 ++ .../add-ons/webextensions/api/types/index.html | 64 + .../api/userscripts/apiscript/index.html | 43 + .../webextensions/api/userscripts/index.html | 70 + .../api/userscripts/onbeforescript/index.html | 51 + .../api/userscripts/register/index.html | 78 ++ .../userscripts/registereduserscript/index.html | 34 + .../registereduserscript.unregister()/index.html | 49 + .../registereduserscript/unregister/index.html | 47 + .../travailler_avec_userscripts/index.html | 115 ++ .../api/userscripts/userscriptoptions/index.html | 48 + .../api/webnavigation/getallframes/index.html | 135 ++ .../api/webnavigation/getframe/index.html | 126 ++ .../webextensions/api/webnavigation/index.html | 143 ++ .../api/webnavigation/onbeforenavigate/index.html | 142 ++ .../api/webnavigation/oncommitted/index.html | 148 ++ .../api/webnavigation/oncompleted/index.html | 141 ++ .../oncreatednavigationtarget/index.html | 156 +++ .../webnavigation/ondomcontentloaded/index.html | 142 ++ .../api/webnavigation/onerroroccurred/index.html | 144 ++ .../webnavigation/onhistorystateupdated/index.html | 147 ++ .../onreferencefragmentupdated/index.html | 149 ++ .../api/webnavigation/ontabreplaced/index.html | 126 ++ .../webnavigation/transitionqualifier/index.html | 85 ++ .../api/webnavigation/transitiontype/index.html | 95 ++ .../api/webrequest/blockingresponse/index.html | 97 ++ .../api/webrequest/certificateinfo/index.html | 79 ++ .../api/webrequest/filterresponsedata/index.html | 76 + .../api/webrequest/getsecurityinfo/index.html | 106 ++ .../webrequest/handlerbehaviorchanged/index.html | 115 ++ .../api/webrequest/httpheaders/index.html | 77 ++ .../webextensions/api/webrequest/index.html | 200 +++ .../index.html | 68 + .../api/webrequest/onauthrequired/index.html | 367 +++++ .../api/webrequest/onbeforeredirect/index.html | 208 +++ .../api/webrequest/onbeforerequest/index.html | 301 ++++ .../api/webrequest/onbeforesendheaders/index.html | 286 ++++ .../api/webrequest/oncompleted/index.html | 209 +++ .../api/webrequest/onerroroccurred/index.html | 196 +++ .../api/webrequest/onheadersreceived/index.html | 248 ++++ .../api/webrequest/onresponsestarted/index.html | 205 +++ .../api/webrequest/onsendheaders/index.html | 200 +++ .../api/webrequest/requestfilter/index.html | 81 ++ .../api/webrequest/resourcetype/index.html | 120 ++ .../api/webrequest/securityinfo/index.html | 98 ++ .../api/webrequest/streamfilter/close/index.html | 63 + .../webrequest/streamfilter/disconnect/index.html | 67 + .../api/webrequest/streamfilter/error/index.html | 46 + .../api/webrequest/streamfilter/index.html | 126 ++ .../api/webrequest/streamfilter/ondata/index.html | 197 +++ .../api/webrequest/streamfilter/onerror/index.html | 51 + .../api/webrequest/streamfilter/onstart/index.html | 47 + .../api/webrequest/streamfilter/onstop/index.html | 51 + .../api/webrequest/streamfilter/resume/index.html | 63 + .../api/webrequest/streamfilter/status/index.html | 72 + .../api/webrequest/streamfilter/suspend/index.html | 63 + .../api/webrequest/streamfilter/write/index.html | 76 + .../api/webrequest/uploaddata/index.html | 75 + .../webextensions/api/windows/create/index.html | 192 +++ .../api/windows/createtype/index.html | 79 ++ .../webextensions/api/windows/get/index.html | 123 ++ .../webextensions/api/windows/getall/index.html | 120 ++ .../api/windows/getcurrent/index.html | 119 ++ .../api/windows/getlastfocused/index.html | 117 ++ .../add-ons/webextensions/api/windows/index.html | 115 ++ .../webextensions/api/windows/oncreated/index.html | 110 ++ .../api/windows/onfocuschanged/index.html | 114 ++ .../webextensions/api/windows/onremoved/index.html | 111 ++ .../webextensions/api/windows/remove/index.html | 120 ++ .../webextensions/api/windows/update/index.html | 134 ++ .../webextensions/api/windows/window/index.html | 96 ++ .../api/windows/window_id_current/index.html | 67 + .../api/windows/window_id_none/index.html | 68 + .../api/windows/windowstate/index.html | 83 ++ .../api/windows/windowtype/index.html | 79 ++ .../index.html | 31 + .../webextensions/browser_actions/index.html | 46 + .../index.html | 25 + .../index.html | 218 +++ .../comparaison_avec_le_sdk_add-on/index.html | 746 ++++++++++ .../index.html" | 24 + .../webextensions/compte_developpeurs/index.html | 26 + .../index.html | 252 ++++ .../webextensions/content_scripts/index.html | 474 +++++++ .../content_security_policy/index.html | 96 ++ .../debogage_(avant_firefox_50)/index.html | 236 ++++ .../demander_les_bonnes_permissions/index.html | 367 +++++ .../demandes_de_permission/index.html | 134 ++ .../index.html | 24 + .../index.html | 77 ++ .../embedded_webextensions/index.html | 219 +++ .../add-ons/webextensions/exemples/index.html | 33 + .../index.html | 190 +++ .../index.html | 166 +++ .../firefox_differentiators/index.html | 90 ++ .../firefox_workflow_overview/index.html | 74 + .../incompatibilit\303\251s_chrome/index.html" | 179 +++ files/fr/mozilla/add-ons/webextensions/index.html | 80 ++ .../mozilla/add-ons/webextensions/index/index.html | 12 + .../index.html | 103 ++ .../index.html | 56 + .../interagir_avec_le_presse_papier/index.html | 189 +++ .../intercepter_requ\303\252tes_http/index.html" | 160 +++ .../webextensions/internationalization/index.html | 410 ++++++ .../manifest.json/arriere-plan/index.html | 93 ++ .../webextensions/manifest.json/auteur/index.html | 44 + .../manifest.json/browser_action/index.html | 254 ++++ .../browser_specific_settings/index.html | 117 ++ .../chrome_settings_overrides/index.html | 136 ++ .../manifest.json/chrome_url_overrides/index.html | 97 ++ .../manifest.json/commands/index.html | 200 +++ .../manifest.json/content_scripts/index.html | 235 ++++ .../content_security_policy/index.html | 117 ++ .../manifest.json/default_locale/index.html | 46 + .../manifest.json/description/index.html | 44 + .../manifest.json/developer/index.html | 52 + .../manifest.json/devtools_page/index.html | 50 + .../manifest.json/dictionaries/index.html | 47 + .../externally_connectable/index.html | 69 + .../manifest.json/homepage_url/index.html | 46 + .../webextensions/manifest.json/icons/index.html | 78 ++ .../manifest.json/incognito/index.html | 70 + .../add-ons/webextensions/manifest.json/index.html | 138 ++ .../manifest.json/manifest_version/index.html | 45 + .../webextensions/manifest.json/name/index.html | 46 + .../manifest.json/offline_enabled/index.html | 48 + .../webextensions/manifest.json/omnibox/index.html | 52 + .../manifest.json/optional_permissions/index.html | 106 ++ .../manifest.json/options_page/index.html | 62 + .../manifest.json/options_ui/index.html | 118 ++ .../manifest.json/page_action/index.html | 200 +++ .../manifest.json/permissions/index.html | 198 +++ .../manifest.json/protocol_handlers/index.html | 85 ++ .../manifest.json/short_name/index.html | 44 + .../manifest.json/sidebar_action/index.html | 151 ++ .../webextensions/manifest.json/storage/index.html | 69 + .../webextensions/manifest.json/theme/index.html | 1374 +++++++++++++++++++ .../manifest.json/theme_experimentation/index.html | 194 +++ .../manifest.json/user_scripts/index.html | 48 + .../webextensions/manifest.json/version/index.html | 63 + .../manifest.json/version_name/index.html | 40 + .../web_accessible_resources/index.html | 98 ++ .../webextensions/manifests_native/index.html | 309 +++++ .../webextensions/match_patterns/index.html | 436 ++++++ .../webextensions/modify_a_web_page/index.html | 245 ++++ .../webextensions/native_messaging/index.html | 368 +++++ .../index.html | 258 ++++ .../index.html | 85 ++ .../add-ons/webextensions/prerequisites/index.html | 11 + .../publishing_your_webextension/index.html | 58 + .../webextensions/que_faire_ensuite/index.html | 72 + .../index.html | 44 + .../securite_bonne_pratique/index.html | 63 + .../index.html | 124 ++ .../mozilla/add-ons/webextensions/tips/index.html | 56 + .../index.html | 169 +++ .../travailler_avec_l_api_cookies/index.html | 254 ++++ .../travailler_avec_l_api_tabs/index.html | 628 +++++++++ .../add-ons/webextensions/user_actions/index.html | 47 + .../user_interface/barres_laterales/index.html | 61 + .../user_interface/browser_action/index.html | 48 + .../user_interface/browser_styles/index.html | 472 +++++++ .../elements_menu_contextuel/index.html | 59 + .../webextensions/user_interface/index.html | 117 ++ .../index.html | 153 +++ .../user_interface/notifications/index.html | 53 + .../user_interface/omnibox/index.html | 76 + .../user_interface/options_pages/index.html | 71 + .../user_interface/page_actions/index.html | 109 ++ .../user_interface/pages_web_incluses/index.html | 77 ++ .../user_interface/panneaux_devtools/index.html | 74 + .../webextensions/user_interface/popups/index.html | 62 + .../what_are_webextensions/index.html | 59 + .../work_with_the_bookmarks_api/index.html | 206 +++ .../webextensions/working_with_files/index.html | 160 +++ .../your_first_webextension/index.html | 161 +++ .../your_second_webextension/index.html | 360 +++++ .../index.html | 94 ++ files/fr/mozilla/bugzilla/index.html | 59 + files/fr/mozilla/command_line_options/index.html | 472 +++++++ files/fr/mozilla/css/index.html | 10 + .../how_to_submit_a_patch/index.html | 108 ++ files/fr/mozilla/developer_guide/index.html | 91 ++ .../developer_guide/mozilla-central/index.html | 65 + .../developer_guide/reviewer_checklist/index.html | 134 ++ .../index.html | 103 ++ .../index.html | 10 + files/fr/mozilla/enregistrement_chrome/index.html | 168 +++ .../firefox/compiler_firefox_avec_rust/index.html | 38 + .../firefox/deploiement_entreprise/index.html | 145 ++ .../mozilla/firefox/developer_edition/index.html | 57 + .../firefox/developer_edition/reverting/index.html | 23 + .../firefox/experimental_features/index.html | 695 ++++++++++ files/fr/mozilla/firefox/firefox_esr/index.html | 15 + files/fr/mozilla/firefox/headless_mode/index.html | 124 ++ files/fr/mozilla/firefox/index.html | 73 + .../mozilla/firefox/le_protocole_about/index.html | 174 +++ .../firefox/multiprocessus_firefox/index.html | 77 ++ .../multiprocessus_firefox/motivation/index.html | 44 + .../technical_overview/index.html | 164 +++ files/fr/mozilla/firefox/privacy/index.html | 15 + .../protection_contre_le_pistage/index.html | 79 ++ .../protection_du_pistage_par_rebond/index.html | 101 ++ files/fr/mozilla/firefox/releases/25/index.html | 94 ++ .../releases/25/site_compatibility/index.html | 13 + files/fr/mozilla/firefox/releases/26/index.html | 94 ++ .../releases/26/site_compatibility/index.html | 13 + files/fr/mozilla/firefox/releases/27/index.html | 113 ++ .../releases/27/site_compatibility/index.html | 13 + files/fr/mozilla/firefox/releases/28/index.html | 121 ++ .../releases/28/site_compatibility/index.html | 13 + files/fr/mozilla/firefox/releases/29/index.html | 137 ++ .../releases/29/site_compatibility/index.html | 13 + files/fr/mozilla/firefox/releases/30/index.html | 97 ++ .../releases/30/site_compatibility/index.html | 13 + files/fr/mozilla/firefox/releases/31/index.html | 132 ++ .../releases/31/site_compatibility/index.html | 13 + files/fr/mozilla/firefox/releases/32/index.html | 139 ++ .../releases/32/site_compatibility/index.html | 122 ++ files/fr/mozilla/firefox/releases/33/index.html | 148 ++ .../releases/33/site_compatibility/index.html | 13 + files/fr/mozilla/firefox/releases/34/index.html | 158 +++ .../releases/34/site_compatibility/index.html | 13 + files/fr/mozilla/firefox/releases/36/index.html | 198 +++ .../releases/36/site_compatibility/index.html | 13 + files/fr/mozilla/firefox/releases/37/index.html | 128 ++ .../releases/37/site_compatibility/index.html | 13 + files/fr/mozilla/firefox/releases/38/index.html | 186 +++ .../releases/38/site_compatibility/index.html | 13 + files/fr/mozilla/firefox/releases/39/index.html | 123 ++ .../releases/39/site_compatibility/index.html | 13 + files/fr/mozilla/firefox/releases/42/index.html | 198 +++ .../releases/42/site_compatibility/index.html | 13 + files/fr/mozilla/firefox/versions/1.5/index.html | 125 ++ files/fr/mozilla/firefox/versions/11/index.html | 144 ++ files/fr/mozilla/firefox/versions/12/index.html | 162 +++ files/fr/mozilla/firefox/versions/13/index.html | 145 ++ files/fr/mozilla/firefox/versions/14/index.html | 90 ++ files/fr/mozilla/firefox/versions/15/index.html | 114 ++ files/fr/mozilla/firefox/versions/16/index.html | 88 ++ files/fr/mozilla/firefox/versions/17/index.html | 87 ++ .../versions/17/site_compatibility/index.html | 12 + files/fr/mozilla/firefox/versions/18/index.html | 92 ++ .../versions/18/site_compatibility/index.html | 12 + files/fr/mozilla/firefox/versions/19/index.html | 82 ++ .../versions/19/site_compatibility/index.html | 12 + files/fr/mozilla/firefox/versions/2/index.html | 149 ++ files/fr/mozilla/firefox/versions/20/index.html | 75 + .../versions/20/site_compatibility/index.html | 12 + files/fr/mozilla/firefox/versions/21/index.html | 141 ++ .../versions/21/site_compatibility/index.html | 12 + files/fr/mozilla/firefox/versions/22/index.html | 72 + .../versions/22/site_compatibility/index.html | 12 + files/fr/mozilla/firefox/versions/23/index.html | 85 ++ .../versions/23/site_compatibility/index.html | 12 + files/fr/mozilla/firefox/versions/24/index.html | 77 ++ .../versions/24/site_compatibility/index.html | 13 + files/fr/mozilla/firefox/versions/3.5/index.html | 233 ++++ files/fr/mozilla/firefox/versions/3.6/index.html | 297 ++++ files/fr/mozilla/firefox/versions/3/index.html | 272 ++++ files/fr/mozilla/firefox/versions/35/index.html | 197 +++ .../versions/35/site_compatibility/index.html | 13 + files/fr/mozilla/firefox/versions/4/index.html | 640 +++++++++ files/fr/mozilla/firefox/versions/40/index.html | 198 +++ .../versions/40/site_compatibility/index.html | 13 + files/fr/mozilla/firefox/versions/41/index.html | 198 +++ .../versions/41/site_compatibility/index.html | 13 + files/fr/mozilla/firefox/versions/5/index.html | 168 +++ files/fr/mozilla/firefox/versions/50/index.html | 198 +++ files/fr/mozilla/firefox/versions/59/index.html | 204 +++ files/fr/mozilla/firefox/versions/6/index.html | 290 ++++ files/fr/mozilla/firefox/versions/63/index.html | 275 ++++ files/fr/mozilla/firefox/versions/65/index.html | 249 ++++ files/fr/mozilla/firefox/versions/68/index.html | 245 ++++ files/fr/mozilla/firefox/versions/69/index.html | 139 ++ files/fr/mozilla/firefox/versions/7/index.html | 239 ++++ files/fr/mozilla/firefox/versions/70/index.html | 111 ++ files/fr/mozilla/firefox/versions/76/index.html | 114 ++ files/fr/mozilla/firefox/versions/77/index.html | 117 ++ files/fr/mozilla/firefox/versions/8/index.html | 255 ++++ files/fr/mozilla/firefox/versions/9/index.html | 233 ++++ files/fr/mozilla/firefox/versions/index.html | 13 + files/fr/mozilla/firefox_pour_android/index.html | 65 + .../test_compatibilite/index.html | 105 ++ .../chrome/css/-moz-window-dragging/index.html | 107 ++ .../index.html | 19 + .../_doublecolon_-moz-tree-cell-text/index.html | 32 + .../css/_doublecolon_-moz-tree-cell/index.html | 40 + .../css/_doublecolon_-moz-tree-column/index.html | 31 + .../index.html | 30 + .../css/_doublecolon_-moz-tree-image/index.html | 36 + .../_doublecolon_-moz-tree-indentation/index.html | 29 + .../css/_doublecolon_-moz-tree-line/index.html | 30 + .../index.html | 30 + .../_doublecolon_-moz-tree-row(hover)/index.html | 19 + .../css/_doublecolon_-moz-tree-row/index.html | 55 + .../_doublecolon_-moz-tree-separator/index.html | 31 + .../css/_doublecolon_-moz-tree-twisty/index.html | 35 + files/fr/mozilla/gecko/chrome/css/index.html | 25 + files/fr/mozilla/gecko/chrome/index.html | 15 + files/fr/mozilla/gecko/faq/index.html | 201 +++ .../gecko/gecko_embedding_basics/index.html | 403 ++++++ files/fr/mozilla/gecko/index.html | 118 ++ .../api_overview/index.html" | 422 ++++++ .../embarquer_gecko/index.html" | 133 ++ .../index.html" | 53 + .../gecko/mozilla_embarqu\303\251/index.html" | 59 + .../int\303\251gration_\303\251diteur/index.html" | 133 ++ files/fr/mozilla/gecko/sdk_gecko/index.html | 61 + .../index.html | 76 + files/fr/mozilla/index.html | 16 + files/fr/mozilla/instantbird/index.html | 58 + .../fr/mozilla/internal_css_attributes/index.html | 20 + files/fr/mozilla/javascript_astuces/index.html | 115 ++ .../fr/mozilla/javascript_code_modules/index.html | 93 ++ .../javascript_code_modules/osfile.jsm/index.html | 70 + .../os.file_for_the_main_thread/index.html | 1159 ++++++++++++++++ .../services.jsm/index.html | 283 ++++ .../javascript_code_modules/sqlite.jsm/index.html | 360 +++++ files/fr/mozilla/localization/index.html | 25 + files/fr/mozilla/localization/index/index.html | 8 + .../localization/l10n_style_guide/index.html | 357 +++++ .../localization/localiser_avec_pontoon/index.html | 135 ++ .../localization/localization_notes/index.html | 25 + .../localizing_with_verbatim/index.html | 169 +++ files/fr/mozilla/marketplace/index.html | 127 ++ files/fr/mozilla/marketplace/index/index.html | 8 + .../fr/mozilla/marketplace/monetisation/index.html | 73 + .../options/creating_a_store/index.html | 66 + files/fr/mozilla/marketplace/options/index.html | 21 + .../marketplace/options/introduction/index.html | 25 + .../options/open_web_apps_for_android/index.html | 216 +++ .../marketplace/options/packaged_apps/index.html | 92 ++ .../marketplace/options/self_publishing/index.html | 144 ++ .../fr/mozilla/marketplace/publication/index.html | 9 + .../marketplace_critere_revue/index.html | 110 ++ .../publication/updating_apps/index.html | 68 + files/fr/mozilla/marketplace/publish/index.html | 25 + .../marketplace/publishing/submit/index.html | 10 + files/fr/mozilla/mathml_project/index.html | 99 ++ .../mathml_project/mathml_torture_test/index.html | 1445 ++++++++++++++++++++ .../mozilla/mobile/balise_meta_viewport/index.html | 80 ++ files/fr/mozilla/mobile/index.html | 22 + .../mode_presque_standard_de_gecko/index.html | 75 + .../participer_au_projet_mozilla/index.html | 9 + files/fr/mozilla/preferences/index.html | 53 + files/fr/mozilla/projects/emscripten/index.html | 37 + files/fr/mozilla/projects/index.html | 15 + .../fr/mozilla/projects/rhino/examples/index.html | 32 + files/fr/mozilla/projects/rhino/index.html | 25 + files/fr/mozilla/projects/talos/index.html | 8 + .../thunderbird_localisation/index.html | 95 ++ files/fr/mozilla/rejoindre/index.html | 94 ++ files/fr/mozilla/rust/index.html | 47 + files/fr/mozilla/security/index.html | 30 + files/fr/mozilla/tech/index.html | 13 + .../index.html | 37 + .../an_overview_of_xpcom/index.html | 504 +++++++ .../xpcom/guide/creating_components/index.html | 281 ++++ .../guide/creating_components/preface/index.html | 77 ++ .../using_xpcom_components/index.html | 303 ++++ files/fr/mozilla/tech/xpcom/guide/index.html | 16 + files/fr/mozilla/tech/xpidl/index.html | 22 + .../testing/asan_nightly_project/index.html | 126 ++ .../firefox_and_address_sanitizer/index.html | 11 + files/fr/mozilla/testing/index.html | 12 + .../thunderbird/account_examples/index.html | 71 + .../thunderbird/autoconfiguration/index.html | 173 +++ files/fr/mozilla/thunderbird/index.html | 72 + files/fr/mozilla/thunderbird/index/index.html | 8 + .../index.html | 97 ++ .../working_with_windows_in_chrome_code/index.html | 250 ++++ 883 files changed, 100964 insertions(+) create mode 100644 files/fr/mozilla/about_omni.ja_(formerly_omni.jar)/index.html create mode 100644 files/fr/mozilla/add-ons/add-on_debugger/index.html create mode 100644 "files/fr/mozilla/add-ons/amo/r\303\250gles/featured/index.html" create mode 100644 "files/fr/mozilla/add-ons/amo/r\303\250gles/index.html" create mode 100644 "files/fr/mozilla/add-ons/amo/r\303\250gles/reviews/index.html" create mode 100644 files/fr/mozilla/add-ons/bootstrapped_extensions/index.html create mode 100644 files/fr/mozilla/add-ons/distribution/gagner_de_l_argent_avec_les_extensions_de_navigateur/index.html create mode 100644 files/fr/mozilla/add-ons/distribution/retrait_de_votre_extension/index.html create mode 100644 files/fr/mozilla/add-ons/index.html create mode 100644 files/fr/mozilla/add-ons/install_manifests/index.html create mode 100644 files/fr/mozilla/add-ons/nous_contacter/index.html create mode 100644 files/fr/mozilla/add-ons/performance_best_practices_in_extensions/index.html create mode 100644 files/fr/mozilla/add-ons/plugins/index.html create mode 100644 files/fr/mozilla/add-ons/sdk/high-level_apis/base64/index.html create mode 100644 files/fr/mozilla/add-ons/sdk/high-level_apis/context-menu/index.html create mode 100644 files/fr/mozilla/add-ons/sdk/high-level_apis/index.html create mode 100644 files/fr/mozilla/add-ons/sdk/high-level_apis/indexed-db/index.html create mode 100644 files/fr/mozilla/add-ons/sdk/high-level_apis/simple-storage/index.html create mode 100644 files/fr/mozilla/add-ons/sdk/high-level_apis/tabs/index.html create mode 100644 files/fr/mozilla/add-ons/sdk/index.html create mode 100644 files/fr/mozilla/add-ons/sdk/low-level_apis/index.html create mode 100644 files/fr/mozilla/add-ons/sdk/low-level_apis/io_byte-streams/index.html create mode 100644 files/fr/mozilla/add-ons/sdk/low-level_apis/io_file/index.html create mode 100644 files/fr/mozilla/add-ons/sdk/low-level_apis/system_child_process/index.html create mode 100644 files/fr/mozilla/add-ons/sdk/low-level_apis/ui_button_action/index.html create mode 100644 files/fr/mozilla/add-ons/sdk/tools/cfx_to_jpm/index.html create mode 100644 files/fr/mozilla/add-ons/sdk/tools/index.html create mode 100644 files/fr/mozilla/add-ons/sdk/tools/jpm/index.html create mode 100644 files/fr/mozilla/add-ons/sdk/tutorials/add_a_context_menu_item/index.html create mode 100644 files/fr/mozilla/add-ons/sdk/tutorials/getting_started_(jpm)/index.html create mode 100644 files/fr/mozilla/add-ons/sdk/tutorials/index.html create mode 100644 files/fr/mozilla/add-ons/sdk/tutorials/l10n/index.html create mode 100644 files/fr/mozilla/add-ons/thunderbird/index.html create mode 100644 "files/fr/mozilla/add-ons/th\303\250mes/fond/index.html" create mode 100644 "files/fr/mozilla/add-ons/th\303\250mes/index.html" create mode 100644 "files/fr/mozilla/add-ons/th\303\250mes/theme_concepts/index.html" create mode 100644 files/fr/mozilla/add-ons/webextensions/ajouter_un_bouton_a_la_barre_d_outils/index.html create mode 100644 "files/fr/mozilla/add-ons/webextensions/ajouter_une_page_de_param\303\250tres/index.html" create mode 100644 files/fr/mozilla/add-ons/webextensions/alternative_distribution_options/add-ons_for_desktop_apps/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/alternative_distribution_options/add-ons_in_the_enterprise/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/alternative_distribution_options/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/alternative_distribution_options/sideloading_add-ons/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/alarms/alarm/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/alarms/clear/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/alarms/clearall/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/alarms/create/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/alarms/get/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/alarms/getall/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/alarms/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/alarms/onalarm/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/bookmarks/bookmarktreenode/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/bookmarks/bookmarktreenodetype/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/bookmarks/bookmarktreenodeunmodifiable/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/bookmarks/create/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/bookmarks/createdetails/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/bookmarks/get/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/bookmarks/getchildren/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/bookmarks/getrecent/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/bookmarks/getsubtree/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/bookmarks/gettree/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/bookmarks/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/bookmarks/move/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/bookmarks/onchanged/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/bookmarks/onchildrenreordered/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/bookmarks/oncreated/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/bookmarks/onimportbegan/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/bookmarks/onimportended/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/bookmarks/onmoved/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/bookmarks/onremoved/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/bookmarks/remove/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/bookmarks/removetree/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/bookmarks/search/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/bookmarks/update/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browseraction/colorarray/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browseraction/disable/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browseraction/enable/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browseraction/getbadgebackgroundcolor/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browseraction/getbadgetext/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browseraction/getbadgetextcolor/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browseraction/getpopup/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browseraction/gettitle/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browseraction/imagedatatype/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browseraction/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browseraction/isenabled/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browseraction/onclicked/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browseraction/openpopup/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browseraction/setbadgebackgroundcolor/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browseraction/setbadgetext/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browseraction/setbadgetextcolor/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browseraction/seticon/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browseraction/setpopup/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browseraction/settitle/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browsersettings/allowpopupsforuserevents/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browsersettings/cacheenabled/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browsersettings/closetabsbydoubleclick/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browsersettings/contextmenushowevent/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browsersettings/ftpprotocolenabled/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browsersettings/homepageoverride/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browsersettings/imageanimationbehavior/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browsersettings/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browsersettings/newtabpageoverride/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browsersettings/newtabposition/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browsersettings/openbookmarksinnewtabs/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browsersettings/opensearchresultsinnewtabs/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browsersettings/openurlbarresultsinnewtabs/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browsersettings/overridedocumentcolors/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browsersettings/proxyconfig/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browsersettings/usedocumentfonts/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browsersettings/webnotificationsdisabled/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browsersettings/zoomfullpage/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browsersettings/zoomsitespecific/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browsingdata/datatypeset/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browsingdata/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browsingdata/removaloptions/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browsingdata/remove/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browsingdata/removecache/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browsingdata/removecookies/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browsingdata/removedownloads/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browsingdata/removeformdata/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browsingdata/removehistory/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browsingdata/removelocalstorage/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browsingdata/removepasswords/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browsingdata/removeplugindata/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/browsingdata/settings/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/captiveportal/canonicalurl/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/captiveportal/getlastchecked/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/captiveportal/getstate/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/captiveportal/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/captiveportal/onconnectivityavailable/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/captiveportal/onstatechanged/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/clipboard/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/clipboard/setimagedata/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/commands/command/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/commands/getall/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/commands/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/commands/oncommand/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/commands/reset/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/commands/update/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/contentscripts/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/contentscripts/register/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/contentscripts/registeredcontentscript/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/contentscripts/registeredcontentscript/unregister/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/contextualidentities/contextualidentity/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/contextualidentities/create/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/contextualidentities/get/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/contextualidentities/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/contextualidentities/oncreated/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/contextualidentities/onremoved/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/contextualidentities/onupdated/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/contextualidentities/query/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/contextualidentities/remove/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/contextualidentities/update/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/cookies/cookie/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/cookies/cookiestore/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/cookies/get/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/cookies/getall/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/cookies/getallcookiestores/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/cookies/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/cookies/onchanged/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/cookies/onchangedcause/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/cookies/remove/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/cookies/samesitestatus/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/cookies/set/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/devtools.inspectedwindow/eval/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/devtools.inspectedwindow/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/devtools.inspectedwindow/reload/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/devtools.inspectedwindow/tabid/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/devtools.network/gethar/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/devtools.network/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/devtools.network/onnavigated/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/devtools.network/onrequestfinished/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/devtools.panels/create/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/devtools.panels/elements/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/devtools.panels/elementspanel/createsidebarpane/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/devtools.panels/elementspanel/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/devtools.panels/elementspanel/onselectionchanged/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/devtools.panels/extensionpanel/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/devtools.panels/extensionsidebarpane/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/devtools.panels/extensionsidebarpane/onhidden/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/devtools.panels/extensionsidebarpane/onshown/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/devtools.panels/extensionsidebarpane/setexpression/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/devtools.panels/extensionsidebarpane/setobject/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/devtools.panels/extensionsidebarpane/setpage/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/devtools.panels/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/devtools.panels/onthemechanged/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/devtools.panels/themename/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/devtools/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/dns/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/dns/resolve/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/downloads/acceptdanger/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/downloads/booleandelta/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/downloads/cancel/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/downloads/dangertype/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/downloads/doubledelta/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/downloads/download/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/downloads/downloaditem/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/downloads/downloadquery/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/downloads/downloadtime/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/downloads/drag/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/downloads/erase/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/downloads/filenameconflictaction/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/downloads/getfileicon/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/downloads/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/downloads/interruptreason/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/downloads/onchanged/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/downloads/oncreated/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/downloads/onerased/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/downloads/open/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/downloads/pause/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/downloads/removefile/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/downloads/resume/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/downloads/search/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/downloads/setshelfenabled/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/downloads/show/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/downloads/showdefaultfolder/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/downloads/state/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/downloads/stringdelta/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/events/event/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/events/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/events/rule/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/events/urlfilter/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/extension/getbackgroundpage/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/extension/getextensiontabs/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/extension/geturl/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/extension/getviews/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/extension/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/extension/inincognitocontext/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/extension/isallowedfileschemeaccess/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/extension/isallowedincognitoaccess/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/extension/lasterror/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/extension/onrequest/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/extension/onrequestexternal/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/extension/sendrequest/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/extension/setupdateurldata/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/extension/viewtype/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/extensiontypes/imagedetails/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/extensiontypes/imageformat/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/extensiontypes/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/extensiontypes/injectdetails/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/extensiontypes/runat/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/find/find/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/find/highlightresults/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/find/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/find/removehighlighting/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/history/addurl/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/history/deleteall/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/history/deleterange/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/history/deleteurl/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/history/getvisits/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/history/historyitem/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/history/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/history/ontitlechanged/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/history/onvisited/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/history/onvisitremoved/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/history/search/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/history/transitiontype/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/history/visititem/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/i18n/detectlanguage/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/i18n/getacceptlanguages/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/i18n/getmessage/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/i18n/getuilanguage/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/i18n/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/i18n/languagecode/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/i18n/locale-specific_message_reference/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/identity/getredirecturl/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/identity/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/identity/launchwebauthflow/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/idle/idlestate/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/idle/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/idle/onstatechanged/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/idle/querystate/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/idle/setdetectioninterval/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/management/extensioninfo/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/management/get/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/management/getall/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/management/getpermissionwarningsbyid/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/management/getpermissionwarningsbymanifest/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/management/getself/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/management/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/management/install/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/management/ondisabled/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/management/onenabled/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/management/oninstalled/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/management/onuninstalled/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/management/setenabled/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/management/uninstall/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/management/uninstallself/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/menus/action_menu_top_level_limit/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/menus/contexttype/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/menus/create/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/menus/createproperties/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/menus/gettargetelement/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/menus/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/menus/itemtype/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/menus/menus.overridecontext()/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/menus/onclickdata/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/menus/onclicked/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/menus/onhidden/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/menus/onshown/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/menus/overridecontext/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/menus/refresh/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/menus/remove/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/menus/removeall/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/menus/update/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/notifications/clear/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/notifications/create/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/notifications/getall/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/notifications/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/notifications/notificationoptions/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/notifications/onbuttonclicked/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/notifications/onclicked/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/notifications/onclosed/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/notifications/onshown/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/notifications/templatetype/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/notifications/update/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/omnibox/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/omnibox/oninputcancelled/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/omnibox/oninputchanged/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/omnibox/oninputentered/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/omnibox/oninputentereddisposition/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/omnibox/oninputstarted/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/omnibox/setdefaultsuggestion/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/omnibox/suggestresult/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/pageaction/getpopup/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/pageaction/gettitle/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/pageaction/hide/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/pageaction/imagedatatype/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/pageaction/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/pageaction/isshown/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/pageaction/onclicked/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/pageaction/openpopup/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/pageaction/seticon/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/pageaction/setpopup/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/pageaction/settitle/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/pageaction/show/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/permissions/contains/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/permissions/getall/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/permissions/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/permissions/onadded/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/permissions/onremoved/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/permissions/permissions/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/permissions/remove/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/permissions/request/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/pkcs11/getmoduleslots/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/pkcs11/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/pkcs11/installmodule/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/pkcs11/ismoduleinstalled/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/pkcs11/uninstallmodule/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/privacy/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/privacy/network/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/privacy/services/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/privacy/websites/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/proxy/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/proxy/onproxyerror/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/proxy/onrequest/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/proxy/proxyinfo/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/proxy/register/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/proxy/requestdetails/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/proxy/unregister/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/connect/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/connectnative/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/getbackgroundpage/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/getbrowserinfo/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/getmanifest/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/getpackagedirectoryentry/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/getplatforminfo/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/geturl/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/id/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/lasterror/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/messagesender/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/onbrowserupdateavailable/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/onconnect/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/onconnectexternal/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/oninstalled/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/oninstalledreason/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/onmessage/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/onmessageexternal/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/onrestartrequired/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/onrestartrequiredreason/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/onstartup/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/onsuspend/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/onsuspendcanceled/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/onupdateavailable/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/openoptionspage/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/platformarch/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/platforminfo/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/platformnaclarch/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/platformos/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/port/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/reload/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/requestupdatecheck/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/requestupdatecheckstatus/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/sendmessage/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/sendnativemessage/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/runtime/setuninstallurl/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/search/get/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/search/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/search/search/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/sessions/filter/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/sessions/forgetclosedtab/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/sessions/forgetclosedwindow/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/sessions/getrecentlyclosed/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/sessions/gettabvalue/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/sessions/getwindowvalue/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/sessions/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/sessions/max_session_results/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/sessions/onchanged/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/sessions/removetabvalue/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/sessions/removewindowvalue/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/sessions/restore/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/sessions/session/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/sessions/settabvalue/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/sessions/setwindowvalue/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/sidebaraction/close/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/sidebaraction/getpanel/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/sidebaraction/gettitle/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/sidebaraction/imagedatatype/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/sidebaraction/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/sidebaraction/isopen/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/sidebaraction/open/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/sidebaraction/seticon/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/sidebaraction/setpanel/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/sidebaraction/settitle/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/sidebaraction/toggle/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/storage/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/storage/local/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/storage/managed/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/storage/onchanged/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/storage/storagearea/clear/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/storage/storagearea/get/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/storage/storagearea/getbytesinuse/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/storage/storagearea/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/storage/storagearea/remove/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/storage/storagearea/set/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/storage/storagechange/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/storage/sync/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/capturetab/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/capturevisibletab/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/connect/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/create/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/detectlanguage/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/discard/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/duplicate/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/executescript/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/get/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/getallinwindow/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/getcurrent/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/getselected/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/getzoom/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/getzoomsettings/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/goback/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/goforward/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/hide/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/highlight/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/insertcss/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/move/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/moveinsuccession/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/mutedinfo/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/mutedinforeason/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/onactivated/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/onactivechanged/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/onattached/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/oncreated/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/ondetached/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/onhighlightchanged/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/onhighlighted/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/onmoved/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/onremoved/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/onreplaced/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/onselectionchanged/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/onupdated/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/onzoomchange/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/pagesettings/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/print/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/printpreview/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/query/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/reload/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/remove/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/removecss/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/saveaspdf/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/sendmessage/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/sendrequest/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/setzoom/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/setzoomsettings/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/show/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/tab/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/tab_id_none/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/tabstatus/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/togglereadermode/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/update/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/windowtype/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/zoomsettings/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/zoomsettingsmode/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/tabs/zoomsettingsscope/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/theme/getcurrent/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/theme/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/theme/onupdated/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/theme/reset/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/theme/theme/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/theme/update/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/topsites/get/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/topsites/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/topsites/mostvisitedurl/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/types/browsersetting/clear/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/types/browsersetting/get/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/types/browsersetting/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/types/browsersetting/onchange/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/types/browsersetting/set/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/types/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/userscripts/apiscript/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/userscripts/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/userscripts/onbeforescript/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/userscripts/register/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/userscripts/registereduserscript/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/userscripts/registereduserscript/registereduserscript.unregister()/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/userscripts/registereduserscript/unregister/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/userscripts/travailler_avec_userscripts/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/userscripts/userscriptoptions/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webnavigation/getallframes/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webnavigation/getframe/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webnavigation/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webnavigation/onbeforenavigate/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webnavigation/oncommitted/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webnavigation/oncompleted/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webnavigation/oncreatednavigationtarget/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webnavigation/ondomcontentloaded/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webnavigation/onerroroccurred/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webnavigation/onhistorystateupdated/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webnavigation/onreferencefragmentupdated/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webnavigation/ontabreplaced/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webnavigation/transitionqualifier/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webnavigation/transitiontype/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webrequest/blockingresponse/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webrequest/certificateinfo/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webrequest/filterresponsedata/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webrequest/getsecurityinfo/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webrequest/handlerbehaviorchanged/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webrequest/httpheaders/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webrequest/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webrequest/max_handler_behavior_changed_calls_per_10_minutes/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webrequest/onauthrequired/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webrequest/onbeforeredirect/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webrequest/onbeforerequest/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webrequest/onbeforesendheaders/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webrequest/oncompleted/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webrequest/onerroroccurred/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webrequest/onheadersreceived/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webrequest/onresponsestarted/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webrequest/onsendheaders/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webrequest/requestfilter/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webrequest/resourcetype/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webrequest/securityinfo/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/close/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/disconnect/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/error/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/ondata/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/onerror/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/onstart/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/onstop/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/resume/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/status/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/suspend/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/write/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/webrequest/uploaddata/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/windows/create/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/windows/createtype/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/windows/get/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/windows/getall/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/windows/getcurrent/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/windows/getlastfocused/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/windows/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/windows/oncreated/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/windows/onfocuschanged/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/windows/onremoved/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/windows/remove/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/windows/update/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/windows/window/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/windows/window_id_current/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/windows/window_id_none/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/windows/windowstate/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/api/windows/windowtype/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/bonnes_pratiques_pour_la_mise_a_jour_de_votre_extension/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/browser_actions/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/browser_compatibility_for_manifest.json/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/choisissez_une_version_firefox_pour_le_developpement_extensions_web/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/comparaison_avec_le_sdk_add-on/index.html create mode 100644 "files/fr/mozilla/add-ons/webextensions/compatibilit\303\251_navigateurs_api_javascript/index.html" create mode 100644 files/fr/mozilla/add-ons/webextensions/compte_developpeurs/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/construction_extension_cross_browser/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/content_scripts/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/content_security_policy/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/debogage_(avant_firefox_50)/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/demander_les_bonnes_permissions/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/demandes_de_permission/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/developing_webextensions_for_thunderbird/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/differences_entre_les_implementations_api/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/embedded_webextensions/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/exemples/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/experience_utilisateur_bonnes_pratiques/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/extension_des_outils_de_developpement/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/firefox_differentiators/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/firefox_workflow_overview/index.html create mode 100644 "files/fr/mozilla/add-ons/webextensions/incompatibilit\303\251s_chrome/index.html" create mode 100644 files/fr/mozilla/add-ons/webextensions/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/index/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/inserer_en_toute_securite_du_contenu_externe_dans_une_page/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/installation_temporaire_dans_firefox/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/interagir_avec_le_presse_papier/index.html create mode 100644 "files/fr/mozilla/add-ons/webextensions/intercepter_requ\303\252tes_http/index.html" create mode 100644 files/fr/mozilla/add-ons/webextensions/internationalization/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/arriere-plan/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/auteur/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/browser_action/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/browser_specific_settings/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/chrome_settings_overrides/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/chrome_url_overrides/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/commands/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/content_scripts/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/content_security_policy/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/default_locale/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/description/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/developer/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/devtools_page/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/dictionaries/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/externally_connectable/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/homepage_url/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/icons/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/incognito/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/manifest_version/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/name/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/offline_enabled/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/omnibox/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/optional_permissions/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/options_page/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/options_ui/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/page_action/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/permissions/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/protocol_handlers/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/short_name/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/sidebar_action/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/storage/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/theme/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/theme_experimentation/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/user_scripts/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/version/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/version_name/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifest.json/web_accessible_resources/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/manifests_native/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/match_patterns/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/modify_a_web_page/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/native_messaging/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/partage_d_objets_avec_des_scripts_de_page/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/portage_d_une_extension_firefox_heritee/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/prerequisites/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/publishing_your_webextension/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/que_faire_ensuite/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/que_signifie_le_rejet_d_une_revision_pour_les_utilisateurs/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/securite_bonne_pratique/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/test_des_fonctionnalites_persistantes_et_de_redemarrage/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/tips/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/travailler_avec_des_identites_contextuelles/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/travailler_avec_l_api_cookies/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/travailler_avec_l_api_tabs/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/user_actions/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/user_interface/barres_laterales/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/user_interface/browser_action/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/user_interface/browser_styles/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/user_interface/elements_menu_contextuel/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/user_interface/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/user_interface/lignes_directrices_en_matiere_accessibilite/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/user_interface/notifications/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/user_interface/omnibox/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/user_interface/options_pages/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/user_interface/page_actions/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/user_interface/pages_web_incluses/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/user_interface/panneaux_devtools/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/user_interface/popups/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/what_are_webextensions/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/work_with_the_bookmarks_api/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/working_with_files/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/your_first_webextension/index.html create mode 100644 files/fr/mozilla/add-ons/webextensions/your_second_webextension/index.html create mode 100644 files/fr/mozilla/add-ons_bonnes_pratiques_performances_extensions/index.html create mode 100644 files/fr/mozilla/bugzilla/index.html create mode 100644 files/fr/mozilla/command_line_options/index.html create mode 100644 files/fr/mozilla/css/index.html create mode 100644 files/fr/mozilla/developer_guide/how_to_submit_a_patch/index.html create mode 100644 files/fr/mozilla/developer_guide/index.html create mode 100644 files/fr/mozilla/developer_guide/mozilla-central/index.html create mode 100644 files/fr/mozilla/developer_guide/reviewer_checklist/index.html create mode 100644 files/fr/mozilla/developer_guide/utilisation_de_la_machine_virtuelle_vm/index.html create mode 100644 files/fr/mozilla/developer_guide/vous_venez_juste_de_compiler_firefox/index.html create mode 100644 files/fr/mozilla/enregistrement_chrome/index.html create mode 100644 files/fr/mozilla/firefox/compiler_firefox_avec_rust/index.html create mode 100644 files/fr/mozilla/firefox/deploiement_entreprise/index.html create mode 100644 files/fr/mozilla/firefox/developer_edition/index.html create mode 100644 files/fr/mozilla/firefox/developer_edition/reverting/index.html create mode 100644 files/fr/mozilla/firefox/experimental_features/index.html create mode 100644 files/fr/mozilla/firefox/firefox_esr/index.html create mode 100644 files/fr/mozilla/firefox/headless_mode/index.html create mode 100644 files/fr/mozilla/firefox/index.html create mode 100644 files/fr/mozilla/firefox/le_protocole_about/index.html create mode 100644 files/fr/mozilla/firefox/multiprocessus_firefox/index.html create mode 100644 files/fr/mozilla/firefox/multiprocessus_firefox/motivation/index.html create mode 100644 files/fr/mozilla/firefox/multiprocessus_firefox/technical_overview/index.html create mode 100644 files/fr/mozilla/firefox/privacy/index.html create mode 100644 files/fr/mozilla/firefox/privacy/protection_contre_le_pistage/index.html create mode 100644 files/fr/mozilla/firefox/privacy/protection_du_pistage_par_rebond/index.html create mode 100644 files/fr/mozilla/firefox/releases/25/index.html create mode 100644 files/fr/mozilla/firefox/releases/25/site_compatibility/index.html create mode 100644 files/fr/mozilla/firefox/releases/26/index.html create mode 100644 files/fr/mozilla/firefox/releases/26/site_compatibility/index.html create mode 100644 files/fr/mozilla/firefox/releases/27/index.html create mode 100644 files/fr/mozilla/firefox/releases/27/site_compatibility/index.html create mode 100644 files/fr/mozilla/firefox/releases/28/index.html create mode 100644 files/fr/mozilla/firefox/releases/28/site_compatibility/index.html create mode 100644 files/fr/mozilla/firefox/releases/29/index.html create mode 100644 files/fr/mozilla/firefox/releases/29/site_compatibility/index.html create mode 100644 files/fr/mozilla/firefox/releases/30/index.html create mode 100644 files/fr/mozilla/firefox/releases/30/site_compatibility/index.html create mode 100644 files/fr/mozilla/firefox/releases/31/index.html create mode 100644 files/fr/mozilla/firefox/releases/31/site_compatibility/index.html create mode 100644 files/fr/mozilla/firefox/releases/32/index.html create mode 100644 files/fr/mozilla/firefox/releases/32/site_compatibility/index.html create mode 100644 files/fr/mozilla/firefox/releases/33/index.html create mode 100644 files/fr/mozilla/firefox/releases/33/site_compatibility/index.html create mode 100644 files/fr/mozilla/firefox/releases/34/index.html create mode 100644 files/fr/mozilla/firefox/releases/34/site_compatibility/index.html create mode 100644 files/fr/mozilla/firefox/releases/36/index.html create mode 100644 files/fr/mozilla/firefox/releases/36/site_compatibility/index.html create mode 100644 files/fr/mozilla/firefox/releases/37/index.html create mode 100644 files/fr/mozilla/firefox/releases/37/site_compatibility/index.html create mode 100644 files/fr/mozilla/firefox/releases/38/index.html create mode 100644 files/fr/mozilla/firefox/releases/38/site_compatibility/index.html create mode 100644 files/fr/mozilla/firefox/releases/39/index.html create mode 100644 files/fr/mozilla/firefox/releases/39/site_compatibility/index.html create mode 100644 files/fr/mozilla/firefox/releases/42/index.html create mode 100644 files/fr/mozilla/firefox/releases/42/site_compatibility/index.html create mode 100644 files/fr/mozilla/firefox/versions/1.5/index.html create mode 100644 files/fr/mozilla/firefox/versions/11/index.html create mode 100644 files/fr/mozilla/firefox/versions/12/index.html create mode 100644 files/fr/mozilla/firefox/versions/13/index.html create mode 100644 files/fr/mozilla/firefox/versions/14/index.html create mode 100644 files/fr/mozilla/firefox/versions/15/index.html create mode 100644 files/fr/mozilla/firefox/versions/16/index.html create mode 100644 files/fr/mozilla/firefox/versions/17/index.html create mode 100644 files/fr/mozilla/firefox/versions/17/site_compatibility/index.html create mode 100644 files/fr/mozilla/firefox/versions/18/index.html create mode 100644 files/fr/mozilla/firefox/versions/18/site_compatibility/index.html create mode 100644 files/fr/mozilla/firefox/versions/19/index.html create mode 100644 files/fr/mozilla/firefox/versions/19/site_compatibility/index.html create mode 100644 files/fr/mozilla/firefox/versions/2/index.html create mode 100644 files/fr/mozilla/firefox/versions/20/index.html create mode 100644 files/fr/mozilla/firefox/versions/20/site_compatibility/index.html create mode 100644 files/fr/mozilla/firefox/versions/21/index.html create mode 100644 files/fr/mozilla/firefox/versions/21/site_compatibility/index.html create mode 100644 files/fr/mozilla/firefox/versions/22/index.html create mode 100644 files/fr/mozilla/firefox/versions/22/site_compatibility/index.html create mode 100644 files/fr/mozilla/firefox/versions/23/index.html create mode 100644 files/fr/mozilla/firefox/versions/23/site_compatibility/index.html create mode 100644 files/fr/mozilla/firefox/versions/24/index.html create mode 100644 files/fr/mozilla/firefox/versions/24/site_compatibility/index.html create mode 100644 files/fr/mozilla/firefox/versions/3.5/index.html create mode 100644 files/fr/mozilla/firefox/versions/3.6/index.html create mode 100644 files/fr/mozilla/firefox/versions/3/index.html create mode 100644 files/fr/mozilla/firefox/versions/35/index.html create mode 100644 files/fr/mozilla/firefox/versions/35/site_compatibility/index.html create mode 100644 files/fr/mozilla/firefox/versions/4/index.html create mode 100644 files/fr/mozilla/firefox/versions/40/index.html create mode 100644 files/fr/mozilla/firefox/versions/40/site_compatibility/index.html create mode 100644 files/fr/mozilla/firefox/versions/41/index.html create mode 100644 files/fr/mozilla/firefox/versions/41/site_compatibility/index.html create mode 100644 files/fr/mozilla/firefox/versions/5/index.html create mode 100644 files/fr/mozilla/firefox/versions/50/index.html create mode 100644 files/fr/mozilla/firefox/versions/59/index.html create mode 100644 files/fr/mozilla/firefox/versions/6/index.html create mode 100644 files/fr/mozilla/firefox/versions/63/index.html create mode 100644 files/fr/mozilla/firefox/versions/65/index.html create mode 100644 files/fr/mozilla/firefox/versions/68/index.html create mode 100644 files/fr/mozilla/firefox/versions/69/index.html create mode 100644 files/fr/mozilla/firefox/versions/7/index.html create mode 100644 files/fr/mozilla/firefox/versions/70/index.html create mode 100644 files/fr/mozilla/firefox/versions/76/index.html create mode 100644 files/fr/mozilla/firefox/versions/77/index.html create mode 100644 files/fr/mozilla/firefox/versions/8/index.html create mode 100644 files/fr/mozilla/firefox/versions/9/index.html create mode 100644 files/fr/mozilla/firefox/versions/index.html create mode 100644 files/fr/mozilla/firefox_pour_android/index.html create mode 100644 files/fr/mozilla/firefox_pour_android/test_compatibilite/index.html create mode 100644 files/fr/mozilla/gecko/chrome/css/-moz-window-dragging/index.html create mode 100644 files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-cell-text(hover)/index.html create mode 100644 files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-cell-text/index.html create mode 100644 files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-cell/index.html create mode 100644 files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-column/index.html create mode 100644 files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-drop-feedback/index.html create mode 100644 files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-image/index.html create mode 100644 files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-indentation/index.html create mode 100644 files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-line/index.html create mode 100644 files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-progressmeter/index.html create mode 100644 files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-row(hover)/index.html create mode 100644 files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-row/index.html create mode 100644 files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-separator/index.html create mode 100644 files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-twisty/index.html create mode 100644 files/fr/mozilla/gecko/chrome/css/index.html create mode 100644 files/fr/mozilla/gecko/chrome/index.html create mode 100644 files/fr/mozilla/gecko/faq/index.html create mode 100644 files/fr/mozilla/gecko/gecko_embedding_basics/index.html create mode 100644 files/fr/mozilla/gecko/index.html create mode 100644 "files/fr/mozilla/gecko/mozilla_embarqu\303\251/api_overview/index.html" create mode 100644 "files/fr/mozilla/gecko/mozilla_embarqu\303\251/faq_de_mozilla_embarqu\303\251/embarquer_gecko/index.html" create mode 100644 "files/fr/mozilla/gecko/mozilla_embarqu\303\251/faq_de_mozilla_embarqu\303\251/introduction_\303\240_gecko_et_\303\240_l'embarqu\303\251/index.html" create mode 100644 "files/fr/mozilla/gecko/mozilla_embarqu\303\251/index.html" create mode 100644 "files/fr/mozilla/gecko/mozilla_embarqu\303\251/int\303\251gration_\303\251diteur/index.html" create mode 100644 files/fr/mozilla/gecko/sdk_gecko/index.html create mode 100644 files/fr/mozilla/implementer_pontoon_sur_un_projet_mozilla/index.html create mode 100644 files/fr/mozilla/index.html create mode 100644 files/fr/mozilla/instantbird/index.html create mode 100644 files/fr/mozilla/internal_css_attributes/index.html create mode 100644 files/fr/mozilla/javascript_astuces/index.html create mode 100644 files/fr/mozilla/javascript_code_modules/index.html create mode 100644 files/fr/mozilla/javascript_code_modules/osfile.jsm/index.html create mode 100644 files/fr/mozilla/javascript_code_modules/osfile.jsm/os.file_for_the_main_thread/index.html create mode 100644 files/fr/mozilla/javascript_code_modules/services.jsm/index.html create mode 100644 files/fr/mozilla/javascript_code_modules/sqlite.jsm/index.html create mode 100644 files/fr/mozilla/localization/index.html create mode 100644 files/fr/mozilla/localization/index/index.html create mode 100644 files/fr/mozilla/localization/l10n_style_guide/index.html create mode 100644 files/fr/mozilla/localization/localiser_avec_pontoon/index.html create mode 100644 files/fr/mozilla/localization/localization_notes/index.html create mode 100644 files/fr/mozilla/localization/localizing_with_verbatim/index.html create mode 100644 files/fr/mozilla/marketplace/index.html create mode 100644 files/fr/mozilla/marketplace/index/index.html create mode 100644 files/fr/mozilla/marketplace/monetisation/index.html create mode 100644 files/fr/mozilla/marketplace/options/creating_a_store/index.html create mode 100644 files/fr/mozilla/marketplace/options/index.html create mode 100644 files/fr/mozilla/marketplace/options/introduction/index.html create mode 100644 files/fr/mozilla/marketplace/options/open_web_apps_for_android/index.html create mode 100644 files/fr/mozilla/marketplace/options/packaged_apps/index.html create mode 100644 files/fr/mozilla/marketplace/options/self_publishing/index.html create mode 100644 files/fr/mozilla/marketplace/publication/index.html create mode 100644 files/fr/mozilla/marketplace/publication/marketplace_critere_revue/index.html create mode 100644 files/fr/mozilla/marketplace/publication/updating_apps/index.html create mode 100644 files/fr/mozilla/marketplace/publish/index.html create mode 100644 files/fr/mozilla/marketplace/publishing/submit/index.html create mode 100644 files/fr/mozilla/mathml_project/index.html create mode 100644 files/fr/mozilla/mathml_project/mathml_torture_test/index.html create mode 100644 files/fr/mozilla/mobile/balise_meta_viewport/index.html create mode 100644 files/fr/mozilla/mobile/index.html create mode 100644 files/fr/mozilla/mode_presque_standard_de_gecko/index.html create mode 100644 files/fr/mozilla/participer_au_projet_mozilla/index.html create mode 100644 files/fr/mozilla/preferences/index.html create mode 100644 files/fr/mozilla/projects/emscripten/index.html create mode 100644 files/fr/mozilla/projects/index.html create mode 100644 files/fr/mozilla/projects/rhino/examples/index.html create mode 100644 files/fr/mozilla/projects/rhino/index.html create mode 100644 files/fr/mozilla/projects/talos/index.html create mode 100644 files/fr/mozilla/projects/thunderbird/thunderbird_localisation/index.html create mode 100644 files/fr/mozilla/rejoindre/index.html create mode 100644 files/fr/mozilla/rust/index.html create mode 100644 files/fr/mozilla/security/index.html create mode 100644 files/fr/mozilla/tech/index.html create mode 100644 files/fr/mozilla/tech/visualisation_et_recherche_du_code_source_mozilla_en_ligne/index.html create mode 100644 files/fr/mozilla/tech/xpcom/guide/creating_components/an_overview_of_xpcom/index.html create mode 100644 files/fr/mozilla/tech/xpcom/guide/creating_components/index.html create mode 100644 files/fr/mozilla/tech/xpcom/guide/creating_components/preface/index.html create mode 100644 files/fr/mozilla/tech/xpcom/guide/creating_components/using_xpcom_components/index.html create mode 100644 files/fr/mozilla/tech/xpcom/guide/index.html create mode 100644 files/fr/mozilla/tech/xpidl/index.html create mode 100644 files/fr/mozilla/testing/asan_nightly_project/index.html create mode 100644 files/fr/mozilla/testing/firefox_and_address_sanitizer/index.html create mode 100644 files/fr/mozilla/testing/index.html create mode 100644 files/fr/mozilla/thunderbird/account_examples/index.html create mode 100644 files/fr/mozilla/thunderbird/autoconfiguration/index.html create mode 100644 files/fr/mozilla/thunderbird/index.html create mode 100644 files/fr/mozilla/thunderbird/index/index.html create mode 100644 files/fr/mozilla/trouver_trace_appels_pour_rapport_bug/index.html create mode 100644 files/fr/mozilla/working_with_windows_in_chrome_code/index.html (limited to 'files/fr/mozilla') 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) +--- +

{{ gecko_minversion_header("2.0") }}

+ +

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é omni.ja; 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.

+ +
+

Remarque: Depuis Firefox 10 et Thunderbird 10, l'extension de fichier .ja est utilisée parce que Windows System Restore ne sauvegarde pas les fichiers .jar.

+
+ +

Inspecter omni.ja

+ +
Remarque: Lors de l'extraction omni.ja, vous pouvez obtenir de manière incorrecte de faux avertissements de certains logiciels de protection contre les virus.
+ +

Plusieurs outils d'archivage et de zip/unzip (y compris toutes les versions de 7-Zip) ne peuvent pas lire omni.ja, 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 omni.zip et en utilisant l'Explorateur Windows pour extraire tous les fichiers. Les utilisateurs de versions plus anciennes de Windows peuvent utiliser l'outil InfoZip pour extraire les fichiers - faire une copie de omni.ja, et glisser-déposer sur unzip.exe. Les utilisateurs de Linux peuvent utiliser simplement unzip pour decompresser les fichiers de omni.ja.

+ +

omni.ja 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 omni.ja est:

+ +
zip -qr9XD omni.ja *
+ +
Remarque: Avant Firefox 10 et Thunderbird 10, omni.ja était appelé omni.jar .
+ +

contenu de omni.ja

+ +

Le fichier omni.ja contient des ressources d'application variés:

+ +
+
chrome.manifest
+
Le fichier chrome manifest.
+
/chrome/
+
fichiers d'interface utilisateur pour l'application
+
/chrome/localized.manifest
+
Manifeste du contenu francisé; référencé par le fichier chrome manifeste principal.
+
/chrome/nonlocalized.manifest
+
Manifest de contenu non-francisé; référencé par le fichier chrome manifeste principal.
+
/components/
+
Composants de l'application reposant sur XPCOM.
+
/defaults/
+
Fichiers de préférences par défaut.
+
/modules
+
modules de code JavaScript.
+
/res/
+
Divers fichiers de ressources.
+
+ +

Voir aussi

+ + + +
+

{{ languages( { "ja": "ja/About_omni.jar" } ) }}

+
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/' +--- +
{{AddonSidebar}}
+ +

Le débogueur de module complémentaire (Add-on) vous permet d'exécuter un ensemble d'outils de développement de Firefox dans le contexte de votre module :

+ + + +

Le débogueur de module complémentaire n'est pas disponible pour les modules de superposition XUL requis pour le redémarrage. Pour déboguer des modules comme ceux-ci, utilisez la boîte à outils du navigateur.

+ +

Pour une rapide introduction sur le débogueur, regardez la rapide démonstration ici (en) :

+ +

{{EmbedYouTube("KU3Xsck7qy0")}}

+ +

Ouverture du débogueur de module complémentaire

+ +
+

Ceci décrit comment ouvrir le débogueur à partir de Firefox 45. Pour les versions antérieures de Firefox, vous devez :

+ + + + +
+ +

Pour connecter le débogueur d'extensions à un module complémentaire, ouvrez la page modules dans Firefox, assurez-vous que la case "Activer le débogage des modules" est cochée et cliquez sur le bouton "Déboguer" à proximité de votre add-on dans la page.

+ +

Ensuite, vous verrez une boîte de dialogue vous demandant d'accepter une connexion entrante. Cliquez sur "OK", et le débogueur va commencer dans une fenêtre séparée. Notez que parfois la fenêtre du débogueur est masquée par la fenêtre principale de Firefox.

+ +

{{EmbedYouTube("tGGcA3bT3VA")}}

+ +

Utilisation du débogueur de module complémentaire

+ +

Le débogueur de module complémentaire a une apparence et un comportement proches de ceux de la Boîte à outils du navigateur, à 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é. À l'instar de la boîte à outils du navigateur, une barre d'outils en haut vous permet de basculer entre plusieurs outils différents. 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.

+ +

Le débogueur JavaScript

+ +

Il se comporte comme le débogueur JavaScript normal, à l'exception de sa portée qui est le module complémentaire et non une page Web. Sur la gauche, il répertorie les sources JavaScript:

+ + + +

Scripts de contenu

+ +

Les scripts de contenu ne sont listés que s'ils sont chargés. Par conséquent, si votre module complémentaire charge un script de contenu avec contentScriptFile, le fichier n'apparaîtra pas dans les sources du débogueur tant que vous n'allez pas sur une page qui le charge.

+ +

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.

+ +

Par exemple, supposons que vous ayez un module complémentaire qui attache un script de contenu à chaque onglet chargé par l'utilisateur. Le script de contenu ajoute un gestionnaire de clics à la page. Dès que vous ouvrez un onglet, ce script de contenu sera répertorié dans le débogueur. 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. 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.

+ +

Nous étudions des améliorations à ce bug 1016046.

+ +

La console

+ +

La console se comporte comme la console web, mais sa portée est le module complémentaire et non une page web.

+ +

Notez toutefois qu'elle s'exécute réellement dans le contexte du bootstrap.js 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 main.jsde votre extension, et vous ne verrez pas require() non plus. Ce problème fait l'objet d'un suivi  bug 1005193.

+ +

Vous pouvez exécuter des instructions de la console dans le contexte de main.js tandis que l'exécution est interrompue dans main.js.

+ +

L'ardoise JavaScript

+ +

L'ardoise se comporte comme l'ardoise JavaScript normale, mais sa portée est l'extension et non la page web.

+ +

Comme pour la console, le module complémentaire s'exécute dans le contexte du bootstrap.js 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 main.js pendant que l'exécution est suspendue dans main.js.

+ +

Débogage des pages chrome: et about:

+ +

À 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.

diff --git "a/files/fr/mozilla/add-ons/amo/r\303\250gles/featured/index.html" "b/files/fr/mozilla/add-ons/amo/r\303\250gles/featured/index.html" new file mode 100644 index 0000000000..6955588244 --- /dev/null +++ "b/files/fr/mozilla/add-ons/amo/r\303\250gles/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 +--- +

{{AddonSidebar}}

+ +

Featured add-ons are top-quality extensions and themes highlighted on AMO, 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.

+ +

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.

+ +

New featured extensions are chosen every month.

+ + + +

Before nominating an extension to be featured, please ensure it meets the following criteria:

+ +
    +
  1. The extension must have a complete and informative listing on AMO. This means: +
      +
    • a 64-pixel custom icon
    • +
    • a clear and concise name (no lengthy keywords)
    • +
    • a clear and concise summary of the extension's functionality
    • +
    • detailed description and privacy policy, if applicable
    • +
    • updated screenshots of the extension's functionality
    • +
    +
  2. +
  3. The extension must have excellent user reviews and any problems or support requests must be promptly addressed by the developer.
  4. +
  5. The extension must have a minimum of 500 users.
  6. +
  7. The extension must be built with WebExtensions API.
  8. +
  9. The extension must be compatible with the latest release of Firefox.
  10. +
  11. Most importantly, 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.
  12. +
+ +

Discovery Pane

+ +

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.

+ +

Only content that is part of AMO’s Featured Extensions collection will be considered for the Discovery Pane; please note that featured content must meet certain criteria.

+ +

Discovery Pane content is updated monthly, though some highly popular extensions may remain on the page for an indefinite period of time.

+ +

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 amo-featured@mozilla.org 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.

+ +

Nominating an Add-on

+ +

If you wish to nominate an extension to be featured and it meets the criteria above, send an email to amo-featured@mozilla.org with:

+ + + +

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.

+ + + +

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:

+ + + + + +

Every six months a new Advisory Board is chosen based on applications from the add-ons community. Members must:

+ + + +

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.

+ +

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.

+ +

Follow the Add-ons Blog or @mozamo on Twitter to learn when the next application period opens.

+ +

Last updated: April 12, 2018

+ +

How up-and-coming add-ons become featured and what's involved in the process.

diff --git "a/files/fr/mozilla/add-ons/amo/r\303\250gles/index.html" "b/files/fr/mozilla/add-ons/amo/r\303\250gles/index.html" new file mode 100644 index 0000000000..c99c0d1094 --- /dev/null +++ "b/files/fr/mozilla/add-ons/amo/r\303\250gles/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 +--- +

{{AddonSidebar}}

+ +

Mozilla s'engage à assurer une excellente expérience pour nos utilisateurs et développeurs d'extensions. Veuillez consulter les règles ci-dessous avant de soumettre votre module.

+ +
+
Agrément du développeur
+
Effective January 5, 2016

+
Processus de revue
+
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.

+
Présentation des extensions
+
How up-and-coming add-ons become featured and what's involved in the process.

+ Nous contacter + +

Comment nous contacter à propos de ces règles ou de votre module.

+ +
diff --git "a/files/fr/mozilla/add-ons/amo/r\303\250gles/reviews/index.html" "b/files/fr/mozilla/add-ons/amo/r\303\250gles/reviews/index.html" new file mode 100644 index 0000000000..fab668a282 --- /dev/null +++ "b/files/fr/mozilla/add-ons/amo/r\303\250gles/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 +--- +

{{AddonSidebar}}

+ +

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.

+ +

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.

+ +

No Surprises

+ +

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.

+ +

Unexpected Features

+ +

“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.

+ +

Should an add-on include any unexpected feature that falls into one of the following categories:

+ + + +

Then the “unexpected” feature(s) must adhere to all of the following requirements:

+ + + +

Content

+ +

Add-ons that make use of Mozilla trademarks must comply with the Mozilla Trademark Policy. 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”.

+ +

In addition, add-ons listed on addons.mozilla.org (AMO) must adhere to the following policies:

+ + + +

Submission Guidelines

+ +

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 here.

+ +

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.

+ +

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.

+ +

Source Code Submission

+ +

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.

+ +

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.

+ +

Please read our Source Code Submission guidelines to avoid unexpected rejections.

+ +

Development Practices

+ +

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.

+ +

While any code, method or practice in a submitted add-on is subject to review and rejection, the following requirements are of particular importance:

+ + + +

Data Disclosure, Collection and Management

+ +

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 Lean Data Practices and Mozilla’s Data Privacy Principles, and uses the data only for the purpose for which it was originally collected.

+ +

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.

+ +

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:

+ + + +

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.

+ +

User Interactions & Technical Data

+ + + +

Cookies

+ + + +

Personal Data

+ + + +

Additional Privacy Protocols

+ + + +

Security Vulnerabilities

+ +

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.

+ +

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.

+ +

Monetization

+ + + +

Compliance & Blocklisting

+ +

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.

+ +

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.

+ +

Mozilla reserves the right to block or delete the developer’s account on addons.mozilla.org, thereby preventing further use of the service.

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 +--- +

{{LegacyAddonsNotice}}{{AddonSidebar}}

+ +

{{ gecko_minversion_header("2.0") }}

+ +

Les extensions traditionnelles incluent des superpositions, dans lesquelles l'application peut charger XUL depuis le paquet de l'extension et l'appliquer automatiquement sur sa propre interface utilisateur. 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.

+ +

Gecko 2.0 {{geckoRelease ("2.0")}} introduit des extensions "bootstrapées". 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. 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.

+ +

Toute l'application fait appel à ce fichier de script; 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.

+ +

Cet article explique comment fonctionnent les extensions "bootstrap". Consultez ce didacticiel sur la conversion d'une extension superposée en une opération sans redémarrage pour obtenir un guide pratique étape par étape de la migration.

+ +

Le processus de démarrage et d'arrêt

+ +

Une fonctionnalité clé des extensions "bootstrapées" est qu'elles doivent pouvoir démarrer et arrêter à la demande de l'application. Lorsque la fonction de startup() (démarrage) de l'extension est appelée, elle doit injecter manuellement son interface utilisateur et tout autre comportement dans l'application. De même, lorsque sa fonction shutdown() (arrêt) 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.

+ +

Il existe plusieurs scénarios dans lesquels la fonction startup() peut être appelée, par exemple :

+ + + +

Quelques exemples  de situations où la fonction shutdown() peut être appelée :

+ + + +

Notes sur la modification de l'interface utilisateur de l'application

+ +

chrome.manifest dans les extensions "bootstrapées"

+ +

Vous pouvez utiliser un fichier chrome.manifest dans l'extension "bootstrapée" pour :

+ + + +

Toutes les instructions chrome.manifest ne sont pas supportées dans les extensions bootstrapées, par exemple, vous ne pouvez toujours pas enregistrer d' Overlays XUL à partir d'une extension "bootstrapée". Voir la documentation Enregistrement chrome pour les détails.

+ +

Dans Firefox 10 et versions ultérieures, le fichier chrome.manifest situé dans la racine du XPI du module complémentaire (c'est-à-dire un frère du fichier install.rdf) est chargé automatiquement. Dans Firefox 8 et 9, vous devez charger / décharger manuellement le manifeste en utilisant {{ifmethod ("nsIComponentManager", "addBootstrappedManifestLocation")}} et {{ifmethod ("nsIComponentManager", "removeBootstrappedManifestLocation")}}. Cette fonctionnalité n'était pas disponible dans les versions de Firefox avant 8.

+ +

Ajout manuel d'une interface utilisateur

+ +

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.

+ +

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. Par exemple, vous pouvez accéder à la barre de menus de Firefox avec document.getElementById ("main-menubar").

+ +

Assurez-vous qu'au moment de l'arrêt, vous supprimez toute interface utilisateur que vous avez ajoutée.

+ +

Création d'une extension "bootstrapée"

+ +

Pour marquer une extension comme "bootstrappable", vous devez ajouter l'élément suivant à son manifeste d'installation :

+ +
<em:bootstrap>true</em:bootstrap>
+ +

Alors, vous devez ajouter un fichier bootstrap.js qui contient les fonctions requises ; elles devraient être à côté du fichier install.rdf dans le paquet de l'extension.

+ +

Rétrocompatibilité

+ +

Parce que les anciennes versions de Firefox ne connaissent pas la propriété bootstrap ou le fichier bootstrap.js, il n'est pas trop difficile de créer un XPI qui fonctionnera à la fois comme une extension "bootstrapable" et comme une extension traditionnelle. Créez votre extension en tant qu'extension "bootstrapable", puis ajoutez les "overlays" (superpositions) traditionnels. Les versions plus récentes de Firefox utiliseront le script bootstrap.js, en ignorant les composants et les superpositions, alors que les versions plus anciennes utiliseront les superpositions.

+ +

Points d'entrée Bootstrap

+ +

Le script bootstrap.js doit contenir plusieurs fonctions spécifiques, appelées par le navigateur pour gérer l'extension. 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.

+ +

startup (démarrage)

+ +

Appelé lorsque l'extension doit se démarrer elle-même. 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. Il peut être appelé plusieurs fois pendant la durée de vie de l'application.

+ +

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.

+ +
void startup(
+  data,
+  reason
+);
+
+ +
Paramètres
+ +
+
data (donnée)
+
Une donnée bootstrap.
+
reason (motif)
+
Une des constantes causales, indiquant pourquoi l'extension est en cours de démarrage. Ce peut être l'une d'entre elles : APP_STARTUP, ADDON_ENABLE, ADDON_INSTALL, ADDON_UPGRADE ou ADDON_DOWNGRADE.
+
+ +

shutdown (arrêt)

+ +

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. 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.

+ +
void shutdown(
+  data,
+  reason
+);
+
+ +
Paramètres
+ +
+
data (donnée)
+
Une donnée bootstrap.
+
reason (motif)
+
Une des constantes causales, indiquant pourquoi l'extension est en train de se fermet. Ce peut être l'une d'entre elles : APP_SHUTDOWN, ADDON_DISABLE, ADDON_UNINSTALL, ADDON_UPGRADE ou ADDON_DOWNGRADE.
+
+ +

install (installation)

+ +

Votre script "bootstrap" doit inclure une fonction install() que l'application appelle avant le premier appel startup() après l'installation, la mise à niveau ou le déclassement de l'extension.

+ +
void install(
+  data,
+  reason
+);
+
+ +
Paramètres
+ +
+
data (donnée)
+
Une donnée bootstrap.
+
reason (motif)
+
Une des constantes causales, indiquant pourquoi l'extension est en train d'être installée. Ce peut être l'une d'entre elles : ADDON_INSTALL, ADDON_UPGRADE, ou ADDON_DOWNGRADE.
+
+ +

uninstall (désinstallation)

+ +

Cette fonction est appelée après le dernier appel à shutdown()  avant qu'une version particulière de l'extension soit désinstallée. Il n'est pas appelé si install()  n'a jamais été appelé .

+ +
Note : 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. Il s'agit d'une désinstallation en raison de l'option "Annuler" disponible. 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.
+ +
Note : 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 :
+function uninstall(aData, aReason) {
+     if (aReason == ADDON_UNINSTALL) {
+          console.log('really uninstalling');
+     } else {
+          console.log('not a permanent uninstall, likely an upgrade or downgrade');
+     }
+}
+ +
void uninstall(
+  data,
+  reason
+);
+
+ +
Paramètres
+ +
+
data (donnée)
+
Une donnée bootstrap.
+
reason
+
Une des constantes causales, indiquant pourquoi l'extension est en train d'être désinstallée. Ce peut être l'une d'entre elles : ADDON_UNINSTALL, ADDON_UPGRADE ou ADDON_DOWNGRADE.
+
+ +

Constantes causales

+ +

La fonction bootstrap accepte un paramètre reason (motif), qui explique pourquoi l'extension est appelée. Les constantes causales sont :

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ConstanteValeurDescription
APP_STARTUP1L'application est démarrée.
APP_SHUTDOWN2L'application est fermée.
ADDON_ENABLE3Le module complémentaire est activé.
ADDON_DISABLE4Le module complémentaire est désactivé. (également envoyé pendant la désinstallation)
ADDON_INSTALL5Le module complémentaire est installé.
ADDON_UNINSTALL6Le module complémentaire est désinstallé.
ADDON_UPGRADE7Le module complémentaire est mis à jour.
ADDON_DOWNGRADE8Le module complémentaire est déclassé.
+ +

Données bootstrap

+ +

Chacun des points d'entrée est transmis à une structure de données simple contenant des informations utiles sur le module complémentaire "bootstrapé". Plus d'informations sur l'extension peuvent être obtenues en appelant AddonManager.getAddonByID(). Les données sont un objet JavaScript simple avec les propriétés suivantes :

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropriétéTypeDescription
idchaîne de caractèresL'ID du module complémentaire est "bootstrapé".
versionchaîne de caractèresLa version du module complémentaire est "bootstrapée".
installPath (chemin d'installation)nsIFileL'emplacement d'installation du module complémentaire est "bootstrapé". 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.
resourceURI (URI ressource)nsIURIL'URI pointe sur la racine des fichiers complémentaires, il peut s'agir d'un URI jar: ou file: , selon que le module complémentaire est installé ou non. {{ gecko_minversion_inline("7.0") }}
oldVersion (ancienne version)chaîne de caractèresLa précédente version installée, si le motif est ADDON_UPGRADE ou ADDON_DOWNGRADE, et si la méthode est install oustartup. {{ gecko_minversion_inline("22.0") }}
newVersion (nouvelle version)chaîne de caractèresLa version à installer, si le motif est ADDON_UPGRADE ou ADDON_DOWNGRADE, et si la méthode est shutdown ou uninstall. {{ gecko_minversion_inline("22.0") }}
+ +
+

Note : 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 startup est APP_STARTUP et la propriété oldVersion n'est pas définie. 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.

+
+ +

Débogueur de module complémentaire

+ +

A partir de Firefox 31, vous pouvez utiliser le débogueur de module complémentaire pour déboguer les modules complémentaires "bootstrapés".

+ +

Localisation (L10n)

+ +

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é.

+ +

Fichiers JS et JSM - Utilisation des fichiers de propriétés

+ +

Pour localiser vos fichiers .js et .jsm , vous avez à utiliser les fichiers de propriétés.

+ +

Le minimum absolument nécessaire est :

+ +
    +
  1. Fichier : install.rdf
  2. +
  3. Fichier : chrome.manifest
  4. +
  5. Fichier : bootstrap.js
  6. +
  7. Dossier : locale (langue) +
      +
    1. Dossier : VALID_LOCALE_HERE (localisation valide ici) +
        +
      1. Fichier : ANYTHING.properties (toutes les propriétés)
      2. +
      +
    2. +
    +
  8. +
+ +

Dans le dossier "locale", vous devez disposer de dossiers pour chacune des langues que vous souhaitez fournir; chaque dossier doit être nommé avec un nom "locale" valide (exemple : fr). Dans ce dossier, doit exister un fichier de propriétés. Dans le fichier chrome.manifest, ces paramètres régionaux doivent être définis. 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/

+ +

Ici un exemple : GitHub :: l10n-properties - 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. Vous pouvez tester différents "locale" en allant sur about:config et en changeant les préférences de general.useragent.locale, et en désactivant puis en réactivant le module complémentaire.

+ +

Fichiers XUL et HTML - Utilisation d'entités à partir de fichiers DTD

+ +

Plusieurs pages HTML sont utilisées, mais elles ne peuvent pas être localisées avec des fichiers DTD. Il y a trois changements que vous devez faire :

+ +
    +
  1. Vous devez changer l'extension du fichier HTML en .xhtml
  2. +
  3. Le doctype doit être défini pointant sur un fichier DTD dans votre dossier "locale", ainsi par exemple : <!DOCTYPE html SYSTEM "chrome://l10n/locale/mozilla.dtd">
  4. +
  5. Vous devez ajouter l'attribut xmlns à la balise html, par exemple : <html xmlns="http://www.w3.org/1999/xhtml">
  6. +
  7. Si vous avez plusieurs fichiers DTD lisez ceci : Utilisation de plusieurs DTD
  8. +
+ +

Le minimum nécessaire est :

+ +
    +
  1. Fichier : install.rdf
  2. +
  3. Fichier : chrome.manifest
  4. +
  5. Fichier : bootstrap.js
  6. +
  7. Dossier : locale +
      +
    1. Dossier : VALID_LOCALE_HERE +
        +
      1. Fichier : ANYTHING.dtd
      2. +
      +
    2. +
    +
  8. +
+ +

Le fichier chrome.manifest doit inclure une définition pour le contenu, par exemple: content NAME_OF_YOUR_ADDON ./

+ +

Le fichier chrome.manifest doit aussi inclure une ligne pointant sur le dossier "locale", comme dans la section de propriété ci-dessus, si vous avez un dossier nommé en-US dans le dossier "locale", le fichier chrome.manifest doit contenir : locale NAME_OF_YOUR_ADDON en-US locale/en-US/

+ +

ici un exemple de module complémentaire qui ouvre une page HTML et une page  XUL sur install : GitHub :: l10n-xhtml-xul. Voici un exemple montrant comment utiliser une page HTML localisée en tant que page d'options : GitHub :: l10n-html-options. Vous pouvez aller sur about:config et changer la valeur de la préférence general.useragent.locale en-US par en-GB et recharger la page ouverte pour voir les changements sur les paramètres régionaux.

+ +

Plus de lecture

+ + 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 +--- +

{{AddonSidebar}}

+ +

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.

+ +

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..

+ +

Est-ce que je pourrai un jour vendre par l'entremise d'AMO ?

+ +

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.

+ +

Qu'est-ce que tu ne peux pas faire ?

+ +

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 :

+ + + +

Pour plus de détails, consultez les sections contenu et monétisation des politiques complémentaires.

+ +

Que pouvez-vous faire ?

+ +

Il y a trois approches que vous pouvez adopter pour monétiser l'extension de votre navigateur :

+ + + +

Facturation des fonctions

+ +

Il existe de nombreuses approches que vous pouvez prendre pour facturer les fonctionnalités de votre extension de navigateur, vous pouvez par exemple :

+ + + +

À 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.

+ +

Choisir un fournisseur de paiement

+ +

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 :

+ + + +

Choix de la fréquence de paiement

+ +

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.

+ +

Mise en œuvre d'un mécanisme de paiement et d'octroi de licences

+ +

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.

+ +

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 :

+ + + +

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.

+ +

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.

+ +

Conversion de la gratuité en paiement

+ +

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.

+ +

Affichage d'annonces

+ +

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.

+ +

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 :

+ + + +

Choisir un programme publicitaire

+ +

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 :

+ + + +

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.

+ +

Meilleures pratiques pour l'affichage des annonces

+ +

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.

+ + + +

Demander des dons

+ +

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.

+ +

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.

+ +

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.

+ +

Il existe un certain nombre de plates-formes que vous pouvez utiliser pour fournir des services de paiement pour les dons, y compris :

+ + + +

Lorsque vous choisissez un fournisseur de plateforme de dons, tenez compte de ce qui suit  :

+ + + +

Avec les extensions de navigateur pour Firefox, vous avez deux façons de demander des dons : par AMO et par votre extension.

+ +

Demande de dons par l'entremise de l'AMO

+ +

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 :

+ + + +

Une section de contribution est alors ajoutée à la page AMO de votre poste.

+ +

Example extension page on AMO highlighting the contribution next section

+ +

Demander des dons à partir de l'extension de votre navigateur

+ +

Pour ce faire, vous ajoutez un bouton de don ou un lien vers un endroit approprié dans votre extension.

+ +

Bonnes pratiques

+ +

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 :

+ + + +

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.

+ +

Offres non sollicitées

+ +

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 !"

+ +

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.

+ +

Comment puis-je maximiser mon revenu ?

+ +

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 :

+ + 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 +--- +

{{AddonSidebar}}

+ +

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é.

+ +

Raisons du retrait d'une extension

+ +

Il y a deux raisons principales pour lesquelles vous pourriez vouloir mettre fin à votre extension :

+ + + +

Étapes à suivre pour retirer une extension

+ +

Lorsque vous souhaitez retirer une extension, envisagez de prendre les mesures suivantes :

+ +
    +
  1. Concevoir un calendrier pour la fin de vie de votre extension
    + Envisagez d'inclure les étapes suivantes dans un calendrier de retrait de votre extension : +
      +
    1. publier le calendrier de fin de vie de votre poste, y compris une explication des raisons pour lesquelles vous retirez votre poste.
    2. +
    3. publier une mise à jour qui supprime les copies installées de votre extension.
    4. +
    5. rendre l'extension indisponible pour les nouvelles installations, en rendant sa liste AMO invisible.
    6. +
    +
  2. +
  3. Publier des conseils que vous prévoyez de mettre fin à votre extension
    + Considérez les options suivantes pour informer les gens de votre intention de prendre votre extension : +
      +
    1. mettez à jour la page AMO de votre extension avec son calendrier de fin de vie.
    2. +
    3. 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")}}.
    4. +
    5. communiquez le calendrier par le biais des médias sociaux, des forums ou, si possible, par courrier électronique.
    6. +
    +
  4. +
  5. Publier une version finale, auto-supprimée de votre extension
    + 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.
  6. +
  7. Rendez votre liste AMO invisible pour éviter de nouvelles installations
    + Pour masquer la liste des AMO de votre extension +
      +
    1. Ouvrez la liste de votre extension dans AMO.
    2. +
    3. Dans le menu de la barre latérale, ouvrez Gérer le statut & les  versions.
    4. +
    5. Dans la section Visibilité de la liste, cliquez sur Invisible.
    6. +
    +
  8. +
+ +

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.

+ +

Calendrier de départ suggéré

+ +

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 :

+ + + +

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 Afficher le tableau de bord des statistiques dans le menu contextuel.

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 +--- +
{{AddonSidebar}}
+ +

Les modules complémentaires (add-ons) permettent aux développeurs d'ajouter et de modifier les fonctionnalités de Firefox. 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 :

+ + + +

Il y a plusieurs types de modules complémentaires (add-ons), mais le plus courant est l'extension.

+ +

Développer des modules complémentaires

+ +

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 WebExtensions sont devenues le format standard. Les autres outils (le SDK Add-On par exemple) sont maintenant dépréciés.

+ +

En savoir plus à propos des WebExtensions

+ +

Si vous développez un nouveau module complémentaire, nous vous recommandons d'utiliser WebExtension.

+ +

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.
+
+ Voici la liste des API actuellement prises en charge par Firefox et les autres navigateurs. Nous continuons à concevoir et à implémenter de nouvelles API afin de répondre aux besoins des développeurs.
+
+ La plupart des API utilisées pour WebExtension sont également disponibles pour Firefox pour Android.

+ +

L'atelier des extensions Firefox (Extension Workshop)

+ +

L'atelier des extensions firefox (Extension Workshop) 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 : 

+ + + +

Les extensions pour Firefox pour Android

+ +

En 2020, Mozilla sortira une nouvelle expérience Firefox pour Android. Le nouveau Firefox ultra-performant pour Android a été entièrement repensé avec GeckoView, le nouveau moteur de rendu pour mobiles de Mozilla. Nous travaillons actuellement à la création d'un support pour WebExtensions sur GeckoView.

+ +

Migrer un module existant

+ +

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. Voici quelques ressources MDN à propos du portage d'extension.

+ +

Nous avons rassemblé un ensemble de ressources sur un page wiki afin d'aider les développeurs pendant cette phase de transition. Pour commencer, vous pouvez utiliser l'outil Lookup afin de détecter si votre module complémentaire est impacté.

+ +

Publier des modules

+ +

addons.mozilla.org, 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.

+ +

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.

+ +

Dans cet article, vous trouverez différentes informations relatives au processus de publication de son module.

+ +

Les autres types de modules

+ +

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 :

+ + + +
+

Nous contacter

+ +

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.

+ +

Forum

+ +

Le forum Discourse dédié aux modules complémentaires est un lieu où discuter du développement de modules complémentaires et où demander de l'aide.

+ +

Liste de diffusion

+ +

La liste de diffusion dev-addons (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 (https://addons.mozilla.org) :

+ + + +

IRC

+ +

Si vous utilisez IRC, vous pouvez utiliser ces canaux (anglophones) :

+ + 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 +--- +

Présentation

+ +

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...

+ +

Le format du manifest d'installation est RDF/XML.

+ +

Le fichier doit être appelé install.rdf et se trouver au niveau le plus haut du fichier XPI de l'add-on.

+ +

Disposition

+ +

La disposition de base d'un Manifest d'installation est comme cela:

+ +
+
<?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>
+
+
+ +

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.

+ +

Référence de Propriété Requise

+ +

Votre Manifest d'installation doit spécifier ces propriétés autrement votre add-on ne s'installera pas.

+ +

id

+ +

L'ID de l'extension, qui doit être l'une des suivantes:

+ + + +

Ce dernier format est considérablement plus facile à générer et à manipuler. Firefox 1.5 vérifie que votre id correspond à un format ou à l'autre et refusera d'installer des addons contenant des id mal formés. Cependant, vous ne devriez pas utiliser une adresse email réelle pour votre id, car cela pourrait attirer des spams.

+ +

Exemples

+ +
<em:id>extensionname@example.org</em:id>
+
+<em:id>{daf44bf7-a45e-4450-979c-91cf07434c3d}</em:id>
+ +

version

+ +

A version string identifying the version of the add-on being supplied.

+ +

For Firefox/Thunderbird 1.0, the format must conform to the rules specified in Extension Versioning, Update and Compatibility. For Firefox/Thunderbird 1.5, see Toolkit version format.

+ +

Examples

+ +
<em:version>2.0</em:version>
+
+<em:version>1.0.2</em:version>
+
+<em:version>0.4.1.2005090112</em:version>
+ +

Firefox 1.5 / XULRunner 1.8 - 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.

+ +

For addons hosted on addons.mozilla.org - Mozilla's update website may repackage your add-on and correct or reject malformed version strings.

+ +

type

+ +

An integer value representing the type of add-on.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
2Extensions
4Themes
8Locale
32Multiple Item Package
64Spell check dictionary
128Telemetry Experiment
+ +

Examples

+ +
<em:type>2</em:type>
+ +

{{ 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.

+ +

{{ Fx_minversion_inline(3) }} Firefox 2 and previous supported a value of 16 to represent plug-ins. In Firefox 3 this has been removed.

+ +

targetApplication

+ +

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 (<em:id>) specified (for a comprehensive list of application IDs and valid min/maxVersions for them see Valid application versions for add-on developers), from the minimum version (<em:minVersion>) up to and including the maximum version (<em:maxVersion>). These version strings are formatted in the same fashion as the version property 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.

+ +

id, minVersion, and maxVersion are all required.

+ +
Note: Extensions compatible with Firefox 3.5 should specify a maxVersion of 3.5.*, so that they are automatically compatible with security and stability updates. For Firefox 3.0, a maxVersion of 3.0.* should be used. Extensions compatible only with Firefox or Thunderbird 2 should specify a maxVersion of 2.0.0.*.
+ +

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).

+ +

Examples

+ +
<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>
+ +

{{ Fx_minversion_inline(3) }} Gecko 1.9 based applications allow you to use the special targetApplication id toolkit@mozilla.org to say that the add-on is compatible with any toolkit app with a toolkit version matching the minVersion and maxVersion.

+ +

name

+ +

The name of the add-on; intended for display in the UI.

+ +

Examples

+ +
<em:name>My Extension</em:name>
+ +

Optional Property Reference

+ +

You may need to supply these properties, depending on the capabilities of your add-on.

+ +

bootstrap

+ +

{{ 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 false. For more information, see Bootstrapped extensions.

+ +

unpack

+ +

{{ 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:

+ + + +

Examples

+ +
<Description about="urn:mozilla:install-manifest">
+   <em:id>extension@mysite.com</em:id>
+   <em:unpack>true</em:unpack>
+   ...
+</Description>
+ +

skinnable

+ +

{{ 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:

+ +

Examples

+ +
<em:skinnable>true</em:skinnable>
+
+ +

localized

+ +

{{ 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 em:locale which indicates which locales to use this information for.

+ +

Examples

+ +

This declares a set of add-on metadata to be displayed when the application is running in the de-DE locale.

+ +
<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>
+ +

The following properties which are described elsewhere in this page can be included in the localized property:

+ + + +

More documentation can be found at Localizing extension descriptions.

+ +

description

+ +

A short description of the add-on - intended for display in the user interface. This description should fit on one short line of text.

+ +

Examples

+ +
<em:description>Advanced foo tools.</em:description>
+ +

creator

+ +

The name of the creator/principal developer - intended for display in the user interface.

+ +

Examples

+ +
<em:creator>John Doe</em:creator>
+ +

or

+ +
<em:creator>CoolExtension Team</em:creator>
+ +

developer

+ +

{{ Fx_minversion_inline(2) }} The name(s) of co-developers. You may specify more than one of this value to specify multiple developers.

+ +

Examples

+ +
<em:developer>Jane Doe</em:developer>
+<em:developer>Koos van der Merwe</em:developer>
+
+ +

translator

+ +

{{ Fx_minversion_inline(2) }} The name(s) of translators. You may specify more than one of this value to specify multiple translators.

+ +

Examples

+ +
<em:translator>Janez Novak</em:translator>
+<em:translator>Kari Nordmann</em:translator>
+
+ +

contributor

+ +

The name(s) of additional contributors. You may specify more than one of this value to specify multiple contributors.

+ +

Examples

+ +
<em:contributor>John Doe</em:contributor>
+
+<em:contributor>John Doe</em:contributor>
+<em:contributor>Jane Doe</em:contributor>
+<em:contributor>Elvis Presley</em:contributor>
+
+ +

homepageURL

+ +

A link to the add-on's home page - intended for display in the user interface.

+ +

Examples

+ +
<em:homepageURL>http://www.foo.com/</em:homepageURL>
+
+ +

updateURL

+ +

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.

+ +
Note: It is strongly recommended that the updateURL be an HTTPS (secure) link. Non-secure update URLs can be hijacked by a malicious update.rdf file, enabling malware to infiltrate the user's computer. Alternatively, you could host your extension on AMO and leave out the updateURL completely. This provides secure updates automatically.
+ +

{{ Fx_minversion_inline(3) }} For security reasons, Gecko 1.9 applications require that if you specify an updateURL, it must be an https URL, or you must include an updateKey.

+ +

Your server must send this file as text/rdf, text/xml or application/rdf+xml or the update checker may not work.

+ +

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:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
%REQ_VERSION%The version of the request. Currently 1
%ITEM_ID%The id of the addon being updated
%ITEM_VERSION%The version of the addon being updated
%ITEM_MAXAPPVERSION%The maxVersion of the targetApplication object corresponding to the current application for the addon being updated.
%ITEM_STATUS%{{ Fx_minversion_inline(2) }} Comma separated list of the add-ons operating status in the application. Contains at the least either userEnabled or userDisabled plus any number of incompatible, blockslisted or needsDependencies.
%APP_ID%The id of the current application
%APP_VERSION%The version of the application to check for updates for
%CURRENT_APP_VERSION%{{ Fx_minversion_inline(3.5) }} The version of the current application
%APP_OS%{{ Fx_minversion_inline(1.5) }} The value of OS_TARGET from the Firefox build system, identifying the operating system being used.
%APP_ABI%{{ Fx_minversion_inline(1.5) }} The value of the TARGET_XPCOM_ABI value from the Firefox build system, identifying the compiler/architecture combination used to compile the current application.
%APP_LOCALE%{{ Fx_minversion_inline(3) }} The current application's locale.
%UPDATE_TYPE%{{ Fx_minversion_inline(4) }} UPDATE_TYPE_COMPATIBILITY(32), UPDATE_TYPE_NEWVERSION(64)
%COMPATIBILITY_MODE%{{ Fx_minversion_inline(10) }} related to default to compatible, values could be normal, ignore or strict.
+ +

Examples

+ +
<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>
+
+ +

For add-ons hosted on addons.mozilla.org: You may not specify an updateURL property. By default, Mozilla applications using the Add-on Manager (such as Firefox and Thunderbird) will send update requests to addons.mozilla.org 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.

+ +

Format of the Update Manifest: The Update Manifest is a RDF/XML datasource. For an example of an update manifest, see Extension Versioning, Update and Compatibility.

+ +

updateKey

+ +
{{ Gecko_minversion_header(1.9) }} {{ Fx_minversion_header(3) }}
+ +

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 McCoy tool. Any line breaks and whitespace as part of this entry are ignored.

+ +
<em:updateKey>MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDK426erD/H3XtsjvaB5+PJqbhj
+              Zc9EDI5OCJS8R3FIObJ9ZHJK1TXeaE7JWqt9WUmBWTEFvwS+FI9vWu8058N9CHhD
+              NyeP6i4LuUYjTURnn7Yw/IgzyIJ2oKsYa32RuxAyteqAWqPT/J63wBixIeCxmysf
+              awB/zH4KaPiY3vnrzQIDAQAB</em:updateKey>
+
+ +

optionsURL

+ +

The chrome:// 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.

+ +
<em:optionsURL>chrome://myext/content/options.xul</em:optionsURL>
+ +

{{ gecko_minversion_note("7", "In Firefox 7 you can also simply include your options XUL as a file named options.xul, in the base directory of the add-on.") }}

+ +

{{ h3_gecko_minversion("optionsType", 7) }}

+ +

The type of user-interface used for displaying the options. Accepted values are:

+ + + + + + + + + + + + + + + + +
1Opens optionsURL in a dialog box
2Options are displayed inside the Add-on Manager
3Opens optionsURL in a new tab (if the application supports that), or a dialog box
+ +

optionsType defaults to 1 if there is an optionsURL included in install.rdf or 2 if there is no optionsURL and the file options.xul exists in the root of the add-on.

+ +
<em:optionsType>2</em:optionsType>
+
+ +

Open Options in New Tab {{ Gecko_minversion_header(7) }}

+ +

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.

+ +
<em:optionsType>3</em:optionsType>
+<em:optionsURL>chrome://myaddon/content/options.html</em:optionsURL>
+ +

This section here contains an example of localized HTML page as an option panel in a new tab: Bootstrapped Extensions :: Localization (L10n) (example linked to is: GitHub :: l10n-html-options)

+ +

Make Options Button Execute Arbitrary Javascript

+ +
+

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

+
+ +

If the default methods offered by optionsType 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 install.rdf we would have:

+ +
<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>
+ +

This sends a notification hellothisisyourcaptainspeaking and passes window to the listener. Notice the window.close() 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 Services.jsm. Now in your add-on have a listener that does this:

+ +
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.
+ +

aboutURL

+ +

The chrome:// URL of the extension's about dialog box. This is only useful to extensions. If this property is specified,  in the about:addons extensions list, the About... link in the extension's context menu will show this dialog, rather than the default.

+ +
+

Note: As of {{Gecko("2.0")}}, the dialog receives the Addon object representing your add-on as a parameter.

+
+ +

Examples

+ +
<em:aboutURL>chrome://myext/content/about.xul</em:aboutURL>
+
+ +

iconURL

+ +

A chrome:// 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.

+ +
<em:iconURL>chrome://myext/skin/icon.png</em:iconURL>
+
+ +
Note: For the above example to work you will also have to add a skin package line to your chrome.manifest file. See Chrome Registration#skin. Alternatively you can place your icon in the directory specified in your content package line.
+ +

{{ gecko_minversion_note("1.9.2", "Starting in Gecko 1.9.2 (Firefox 3.6), you can also simply include your icon, named icon.png, 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 iconURL entry.") }}

+ +

{{ h3_gecko_minversion("icon64URL", "2.0") }}

+ +

A chrome:// 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.

+ +
<em:icon64URL>chrome://myext/skin/icon64.png</em:icon64URL>
+
+ +
Note: For the above example to work you will also have to add a skin package line to your chrome.manifest file. See Chrome Registration#skin. Alternatively you can place your icon in the directory specified in your content package line.
+ +

{{ gecko_minversion_note("2.0", "Starting in Gecko 2.0 (Firefox 4.0), you can also simply include your icon, named icon64.png, 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 icon64URL entry.") }}

+ +

{{ h3_gecko_minversion("targetPlatform", "1.8") }}

+ +

A string specifying a platform that the add-on supports. It contains either the value of OS_TARGET alone or combined with TARGET_XPCOM_ABI, separated by an underscore (_).

+ +

You can specify multiple targetPlatform 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.

+ +

Examples

+ +
<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>
+ +

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 ABI (s) that you compiled the components with. If you want to include multiple versions of the components, you should also use Platform-specific Subdirectories.

+ +

Notes

+ + + +

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.

+ +

{{ h3_gecko_minversion("strictCompatibility", "10.0") }}

+ +

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 false meaning that the compatibility checking will not be performed against the max version.

+ +
<em:strictCompatibility>true</em:strictCompatibility>
+ +

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 do not 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).

+ +
Note: 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 extensions.strictCompatibility preference to true.
+ +
+

Note: 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.

+
+ +

{{ h3_gecko_minversion("multiprocessCompatible", "33.0") }}

+ +

A Boolean value declaring whether this add-on is, or is not, compatible with multiprocess Firefox. If present and set to true, this flag instructs Firefox not to load various compatibility shims that enable many add-ons to work even when the add-on is not compatible with multiprocess Firefox:

+ +
<em:multiprocessCompatible>true</em:multiprocessCompatible>
+ +

The setting defaults to false, meaning that if you omit the property, the shims are loaded for your add-on.

+ +

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 true,  and after that point incompatible add-ons will have to explicitly declare that they are not compatible.

+ +

Obsolete Property Reference

+ +

These properties were required in older versions of the Add-on Manager, but have been replaced with newer and better mechanisms.

+ +

file

+ +

Firefox 1.0 This property pointed to a chrome .jar file that contains chrome packages that require registration with the Chrome Registry.

+ +

The <em:file> property has a complex object value. The uri of the value is urn:mozilla:extension:file:jarFile.jar where jarFile.jar 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. urn:mozilla:extension:file:directory). In either case, the referenced chrome package file(s) must be placed in the chrome subdirectory of the XPI's top level.

+ +

This object has a package property (with a path within the jar file or directory that leads to the location where the contents.rdf file responsible for registering that package is located), a locale property (ditto, but to register the locale) and a skin property (ditto, but to register the theme material).

+ +

In extensions for Firefox 1.5, this property is no longer necessary: the chrome.manifest 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.

+ +

Examples

+ +
<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>
+
+ +

An Install Manifest may specify multiple file properties, one for each jar file or subdirectory that contains chrome to register.

+ +

hidden

+ +

Firefox 1.0 - 3.5 A boolean value that when true 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.

+ +
Note: 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.
+ +

Examples

+ +
<em:hidden>true</em:hidden>
+
+ +

requires

+ +

Firefox 2.0 - 3.6.x. Other versions will ignore the restrictions and install the add-on regardless of the requirements.

+ +

See Replacement for install.rdf property "requires" discussion for rationale behind removing this feature and the suggested workaround.

+ +

<em:requires> has a similar syntax to the <em:targetApplication> tag (i.e. you must specify <em:id>, <em:minVersion>, <em:maxVersion> when using it). If the add-on specified by the <em:id> 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 <em:requires> 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 <em:targetApplication>. See Extension Dependencies for more details.

+ +

Glossary

+ +

restricted access area

+ +

A restricted access area 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 ($APPDIR)/extensions folder and the registry install location under HKEY_LOCAL_MACHINE (see Adding Extensions using the Windows Registry for details) are restricted.

+ +

The ($PROFILE)/extensions and HKEY_CURRENT_USER install locations, on the other hand, are not restricted.

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 +--- +

{{AddonSidebar}}

+ +

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.

+ +

Forum des add-ons

+ +

Utilisez le forum Discourse Add-ons pour discuter de tous les aspects du développement d'add-on et demander de l'aide.

+ +

Mailing listes

+ +

Utilisez la liste dev-addons pour discuter du développement de l'écosystème des add-ons, y compris le système WebExtensions et addons.mozilla.org:

+ + + +

Chat

+ +

Matrix 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 Matrix sur MozillaWiki.

+ + + +

Signaler des problèmes

+ +

Vulnérabilités de sécurité

+ +

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 confidentielle dans Bugzilla ou par e-mail à amo-admins@mozilla.com.

+ +

Bugs sur addons.mozilla.org (AMO)

+ +

Si vous rencontrez un problème avec le site, nous serions ravis de le résoudre. Veuillez déposer un rapport de bug et inclure autant de détails que possible.

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 +--- +

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.

+ +

Améliorer les performances du démarrage

+ +

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.

+ +

Chargez seulement ce dont vous avez besoin quand vous en avez besoin

+ +

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é.

+ +

Utilisez les modules de code JavaScript

+ +

Vous pouvez créer vos propres modules de code JavaScript 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.

+ +

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.

+ +

Différez tout ce que vous pouvez

+ +

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.

+ +

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.

+ +

Conseils sur les performances générales

+ +

Évitez de créer des fuites de mémoire

+ +

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.

+ +

Les compartiments zombie sont un type particulier de fuite mémoire que vous pouvez détecter avec un minimum d'effort. Consultez la page Compartiments zombie, particulièrement la section Vérification proactive des extensions.

+ +

Consultez les Causes classiques de fuites de mémoire dans les extensions afin d'éviter les compartiments zombie et d'autres genres de fuites.

+ +

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 bug 719601 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.

+ +

Évitez l'écriture de CSS lent

+ + + +

Évitez les auditeurs d'événements de mutation dans un DOM

+ +

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.

+ +

Les événements de mutation sont officiellement obsolètes, et il existe denombreuses alternatives ; ils devraient donc être évités à tout prix.

+ +

Chargez les services en mode paresseux

+ +

Le module XPCOMUtils JavaScript fournit deux méthodes pour le chargement lent de ressources :

+ + + +

Beaucoup de services communs sont déjà mis en cache pour vous dans Services.jsm.

+ +

Utilisez les entrées-sorties en asynchrone

+ +

Cela ne peut pas être suffisamment souligné : ne jamais faire d'entrées-sorties dans une tâche principale.

+ +

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.

+ + + +

Évitez les événements de mouvement de souris

+ +

É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 .

+ +

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.

+ +

Évitez les images animées

+ +

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") }}.

+ +

Envisagez d'utiliser les exécuteurs du Chrome

+ +

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.

+ +

Consulter aussi

+ + 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 +--- +
+

Important: Since Firefox 52, all plugin support except Flash has been dropped (see Plug-in support has been dropped other than Flash for more details). Flash usage is also set to be phased out in the future.

+
+ +
+

Note: 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.

+
+ +

For more information about plugin roadmap, see non-archived plugin information.

+ +

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.

+ +

Plugins are written using NPAPI, the cross-browser API for plugins. The main source of documentation for NPAPI is the Gecko Plugin API Reference. To make your plugin scriptable from web pages, use npruntime.

+ +

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 Firebreath, JUCE, or QtBrowserPlugin. There are also some code generation tools that may be helpful. More information about these tools can be found on the External Resources page.

+ +

Plugins are different from extensions, which modify or enhance the functionality of the browser itself. Plugins are also different from search plugins, which plug additional search engines in the search bar.

+ +
+
+
+
+
Gecko Plugin API Reference (NPAPI)
+
This reference describes the application programming interfaces for NPAPI plugins and provides information about how to use these interfaces.
+
Site Author Guide For Click-To-Activate Plugins
+
These guidelines will help website authors use plugins when they are blocked by default with the Firefox click-to-activate feature.
+
+ +
+
Scripting plugins (npruntime)
+
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.
+
+ +
+
Shipping a plugin as a Toolkit bundle
+
Plugins can be shipped as a Toolkit bundle, allowing a user to easily install, uninstall and manage their personal plugins.
+
+ +
+
Supporting private browsing in plugins
+
Firefox 3.5 introduced support for private browsing; learn how to make your plugin respect the user's privacy wishes.
+
Multi-Process Plugin Architecture
+
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.
+
Logging and Debugging for Multi-Process Plugins
+
How to create a plugin log to aid in debugging problems with multi-process plugins.
+
+
+ +
+
+
Writing a plugin for Mac OS X
+
Learn how to write a plugin for Mac OS X; a template Xcode project is provided.
+
+ +
+
Monitoring Plugins
+
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.
+
+ +
+
Scripting Plugins: Macromedia Flash
+
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.
+
+ +
+
Plugins: The First Install Problem
+
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.
+
+ +
+
Plugins: Samples and Test Cases
+
NPAPI plugin samples and test cases.
+
External Resources for Plugin Creation
+
External projects, frameworks, and blog posts that may be useful.
+
+ +
+
XEmbed Extension for Mozilla Plugins
+
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.
+
+
+
+ +
+

Categories

+ +

Interwiki Language Links

+ +
+
+

Join the plugin development community

+ +
+
Choose your preferred method for joining the discussion:
+ + +
+ +
+
+
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 +--- +

 Le codage des données et le décodage en utilisant des algorithmes Base64.
+
+ var base64 = require ("sdk / base64");
+  
+ var encodedData = base64.encode ("Bonjour, monde»);
+ var decodedData = base64.decode (encodedData);

+ +
+
Les fonctions
+encode (données, charset)
+
+Crée une chaîne de caractères ASCII de base 64 codé à partir d'une chaîne de données binaires.
+Paramètres
+
+données: string
+Les données pour coder
+
+charset: string
+Le charset de la chaîne à coder (en option). La seule valeur acceptée est "utf-8". Pour coder et décoder les chaînes Unicode, le paramètre charset doit être réglé:
+
+var base64 = require ("sdk / base64");
+
+var encodedData = base64.encode (UnicodeString, "utf-8");
+
+résultats
+
+string: La chaîne codée
+decode (données, charset)
+
+Décode une chaîne de données qui a été codé en utilisant la base 64 codage.
+Paramètres
+
+données: string
+Les données codées
+
+charset: string
+Le charset de la chaîne à coder (en option). La seule valeur acceptée est "utf-8". Pour coder et décoder les chaînes Unicode, le paramètre charset doit être réglé:
+
+var base64 = require ("sdk / base64");
+
+var decodedData = base64.decode (encodedData, "utf-8");
+
+résultats
+
+string: La chaîne décodée (encodedData);
+
+ +
+

{{AddonSidebar}}

+
+ +
+

Unstable

+
+ +

Data encoding and decoding using Base64 algorithms.

+ +
var base64 = require("sdk/base64");
+
+var encodedData = base64.encode("Hello, World");
+var decodedData = base64.decode(encodedData);
+ +

Globals

+ +

Functions

+ +

encode(data, charset)

+ +

Creates a base-64 encoded ASCII string from a string of binary data.

+ +
Parameters
+ +

data : string
+ The data to encode

+ +

charset : string
+ The charset of the string to encode (optional). The only accepted value is "utf-8". In order to encode and decode Unicode strings, the charset parameter needs to be set:

+ +
var base64 = require("sdk/base64");
+
+var encodedData = base64.encode(unicodeString, "utf-8");
+
+ +
Returns
+ +

string : The encoded string

+ +

decode(data, charset)

+ +

Decodes a string of data which has been encoded using base-64 encoding.

+ +
Parameters
+ +

data : string
+ The encoded data

+ +

charset : string
+ The charset of the string to encode (optional). The only accepted value is "utf-8". In order to encode and decode Unicode strings, the charset parameter needs to be set:

+ +
var base64 = require("sdk/base64");
+
+var decodedData = base64.decode(encodedData, "utf-8");
+ +
Returns
+ +

string : The decoded string

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 +--- +

{{AddonSidebar}}

+ +
+

Stable

+
+ +

Ajouez des éléments, sous-menus et des séparateurs au menu contextuel.

+ +

Usage

+ +

Instead of manually adding items when particular contexts occur and then removing them when those contexts go away, you bind 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.

+ +

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.

+ +

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 extensions.addon-sdk.context-menu.overflowThreshold preference) all of the menu items will instead appear in an overflow menu to avoid making the context menu too large.

+ +

Specifying contexts

+ +

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.

+ +

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.

+ +

The page context

+ +

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.

+ +

The page context 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.

+ +

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.

+ +

Declarative contexts

+ +

You can specify some simple, declarative contexts when you create a menu item by setting the context property of the options object passed to its constructor, like this:

+ +
var cm = require("sdk/context-menu");
+cm.Item({
+  label: "My Menu Item",
+  context: cm.URLContext("*.mozilla.org")
+});
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ConstructorDescription
PageContext() The page context.
SelectionContext() This context occurs when the menu is invoked on a page in which the user has made a selection.
SelectorContext(selector) This context occurs when the menu is invoked on a node that either matches selector, a CSS selector, or has an ancestor that matches. selector may include multiple selectors separated by commas, e.g., "a[href], img".
URLContext(matchPattern) This context occurs when the menu is invoked on pages with particular URLs. matchPattern is a match pattern string or an array of match pattern strings. When matchPattern 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 page-mod include property. Read more about patterns.
PredicateContext(predicateFunction)predicateFunction 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.
arrayAn array of any of the other types. This context occurs when all contexts in the array occur.
+ +

Menu items also have a context property that can be used to add and remove declarative contexts after construction. For example:

+ +
var context = require("sdk/context-menu").SelectorContext("img");
+myMenuItem.context.add(context);
+myMenuItem.context.remove(context);
+ +

When a menu item is bound to more than one context, it appears in the menu when all of those contexts occur.

+ +

In content scripts

+ +

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.

+ +

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 context-menu API uses content scripts 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.

+ +

A special event named "context" 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.

+ +

For example, this item appears whenever the context menu is invoked on a page that contains at least one image:

+ +
require("sdk/context-menu").Item({
+  label: "This Page Has Images",
+  contentScript: 'self.on("context", function (node) {' +
+                 '  return !!document.querySelector("img");' +
+                 '});'
+});
+ +

Note that the listener function has a parameter called node. 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.

+ +

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).

+ +

If you combine SelectorContext and the "context" event, be aware that the node argument passed to the "context" event will not always match the type specified in SelectorContext.

+ +

SelectorContext will match if the menu is invoked on the node specified or any descendant of that node, but the "context" event handler is passed the actual node on which the menu was invoked. The example above works because <IMG> elements can't contain other elements, but in the example below, node.nodeName is not guaranteed to be "P" - for example, it won't be "P" if the user context-clicked a link inside a paragraph:

+ +
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;' +
+                 '});'
+});
+ +

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.

+ +

Handling menu item clicks

+ +

In addition to using content scripts to listen for the "context" event as described above, you can use content scripts to handle item clicks. When the user clicks your menu item, an event named "click" is emitted in the item's content script.

+ +

Therefore, to handle an item click, listen for the "click" event in that item's content script like so:

+ +
require("sdk/context-menu").Item({
+  label: "My Item",
+  contentScript: 'self.on("click", function (node, data) {' +
+                 '  console.log("Item clicked!");' +
+                 '});'
+});
+ +

Note that the listener function has parameters called node and data.

+ +

The "node" argument

+ +

node is the node that the user context-clicked to invoke the menu.

+ + + +

For example, suppose your add-on looks like this:

+ +
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
+});
+ +

This add-on creates a context-menu item that uses SelectorContext to display the item whenever the context menu is activated on any descendant of the <BODY> element. When clicked, the item just logs the nodeName property for the node passed to the click handler.

+ +

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:

+ +
info: contextmenu-example: clicked: BODY
+ +

By contrast, this add-on uses the PageContext:

+ +
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
+});
+ +

It will log the name of the actual node clicked:

+ +
info: contextmenu-example: clicked: P
+ +

The "data" Argument

+ +

data is the data 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 data value passed matches the item you expect. You can use this to simplify click handling by providing just a single click listener on a Menu that reacts to clicks for any child items.:

+ +
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" })
+  ]
+});
+
+ +

Communicating With the Add-on

+ +

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 postMessage function attached to the global self object, passing it some JSON-able data. The menu item's "message" event listener will be called with that data.

+ +
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);
+  }
+});
+ +

Updating a menu item's label

+ +

Each menu item must be created with a label, but you can change its label later using a couple of methods.

+ +

The simplest method is to set the menu item's label property. This example updates the item's label based on the number of times it's been clicked:

+ +
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.
+  }
+});
+ +

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 "context" 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 "context" listeners can also return strings. When a "context" listener returns a string, it becomes the item's new label.

+ +

This item implements the aforementioned search example:

+ +
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;' +
+                 '});'
+});
+ +

The "context" 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 text", where text is the truncated selection.

+ +

You can also get the selected text using the High Level selection API.

+ +
var selection = require("sdk/selection");
+ +

and within the contentScript, reference the selected text as selection.text

+ +

Private windows

+ +

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.

+ +

To learn more about private windows, how to opt into private browsing, and how to support private browsing, refer to the documentation for the private-browsing module.

+ +

More examples

+ +

For conciseness, these examples create their content scripts as strings and use the contentScript property. In your own add-on, you will probably want to create your content scripts in separate files and pass their URLs using the contentScriptFile property. See Working with Content Scripts for more information.

+ +
+

Warning: Unless your content script is extremely simple and consists only of a static string, don't use contentScript: if you do, you may have problems getting your add-on approved on AMO.

+ +

Instead, keep the script in a separate file and load it using contentScriptFile. This makes your code easier to maintain, secure, debug and review.

+
+ +

Show an "Edit Page Source" item when the user right-clicks a non-interactive part of the page:

+ +
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);
+  }
+});
+ +

Show an "Edit Image" item when the menu is invoked on an image:

+ +
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);
+  }
+});
+ +

Show an "Edit Mozilla Image" item when the menu is invoked on an image in a mozilla.org or mozilla.com page:

+ +
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);
+  }
+});
+ +

Show an "Edit Page Images" item when the page contains at least one image:

+ +
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);
+  }
+});
+ +

Show a "Search With" menu when the user right-clicks an anchor that searches Google or Wikipedia with the text contained in the anchor:

+ +
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]
+});
+ +

To create sub-menus, one of the items in your main menu must be defined as a menu.

+ +
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]
+});
+ +

If you need a tooltip:

+ +

tooltip

+ +

First you need a dummy menu item that will serve as a trigger and subsequently will add the tooltips to the actual menu items.

+ +

It is easy to find out which menu items are constructed by the addon-sdk module because they have the class addon-context-menu-item. The difficult part it to identify those that belong to your extension.

+ +

One way to achieve this it to utilize the data attribute of Item class constructor, which conveniently maps to the value attribute of the underlying xul element.

+ +

So if data consists of unique prefix and the desired tooltip text, it is just a matter of kicking in the right moment.

+ +
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);
+  }
+});
+ +

 

+ +

Globals

+ +

Constructors

+ +

Item(options)

+ +

Creates a labeled menu item that can perform an action when clicked.

+ +
Parameters
+ +

options : object
+ Required options:

+ + + + + + + + + + + + + + + + +
NameType 
labelstring +

The item's label. It must either be a string or an object that implements toString().

+
+ +

Optional options:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameType 
imagestring +

The item's icon, a string URL. The URL can be remote, a reference to an image in the add-on's data directory, or a data URI.

+
datastring +

An optional arbitrary value to associate with the item. It must be either a string or an object that implements toString(). It will be passed to click listeners.

+
accesskeysingle-character string +
+

New in Firefox 35.

+
+ +

Access key for the item. Pressing this key selects the item when the context menu is open.

+
contextvalue +

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.

+
contentScriptstring,array +

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.

+
contentScriptFilestring,array +

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.

+
onMessagefunction +

If the item is contained in the top-level context menu, this function will be called when the content script calls self.postMessage. It will be passed the data that was passed to postMessage.

+
+ + + +

Creates a labeled menu item that expands into a submenu.

+ +
Parameters
+ +

options : object
+ Required options:

+ + + + + + + + + + + + + + + + + + + + + +
NameType 
labelstring +

The item's label. It must either be a string or an object that implements toString().

+
itemsarray +

An array of menu items that the menu will contain. Each must be an Item, Menu, or Separator.

+
+ +

Optional options:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameType 
imagestring +

The menu's icon, a string URL. The URL can be remote, a reference to an image in the add-on's data directory, or a data URI.

+
contextvalue +

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.

+
contentScriptstring,array +

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.

+
contentScriptFilestring,array +

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.

+
onMessagefunction +

If the menu is contained in the top-level context menu, this function will be called when the content script calls self.postMessage. It will be passed the data that was passed to postMessage.

+
+ +

Separator()

+ +

Creates a menu separator.

+ +

PageContext()

+ +

Creates a page context. See Specifying Contexts above.

+ +

SelectionContext()

+ +

Creates a context that occurs when a page contains a selection. See Specifying Contexts above.

+ +

SelectorContext(selector)

+ +

Creates a context that matches a given CSS selector. See Specifying Contexts above.

+ +
Parameters
+ +

selector : string
+ A CSS selector.

+ +

URLContext(matchPattern)

+ +

Creates a context that matches pages with particular URLs. See Specifying Contexts above.

+ +
Parameters
+ +

matchPattern : string,array
+ A match pattern string, regexp or an array of match pattern strings or regexps.

+ +

PredicateContext(predicateFunction)

+ +
+

New in Firefox 29

+
+ +

Creates a context that occurs when predicateFunction returns a true value. See Specifying Contexts above.

+ +
Parameters
+ +

predicateFunction : function(context)
+ A function which will be called with an object argument that provide information about the invocation context. context object properties:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription
documentTypeThe MIME type of the document the menu was invoked in. E.g. text/html for HTML pages, application/xhtml+xml for XHTML, or image/jpeg if viewing an image directly.
documentURLThe URL of the document the menu was invoked in.
targetNameThe name of the DOM element that the menu was invoked on, in lower-case.
targetIDThe id attribute of the element that the menu was invoked on, or null if not set.
isEditabletrue 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 contenteditable attribute set to true.
selectionTextThe current selection as a text string, or null. 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.
srcURLThe src URL of the element that the menu was invoked on, or null if it doesn't have one.
linkURLThe href URL of the element that the menu was invoked on, or null if it doesn't have one.
valueThe current contents of a input text box or area if the menu was invoked in one, null otherwise.
+ +

Item

+ +

A labeled menu item that can perform an action when clicked.

+ +

Methods

+ +

destroy()

+ +

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 removeItem() on the parent menu instead.

+ +

Properties

+ +

label

+ +

The menu item's label. You can set this after creating the item to update its label later.

+ +

image

+ +

The item's icon, a string URL. The URL can be remote, a reference to an image in the add-on's data 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 null.

+ +

data

+ +

An optional arbitrary value to associate with the item. It must be either a string or an object that implements toString(). It will be passed to click listeners. You can set this after creating the item to update its data later.

+ +

context

+ +

A list of declarative contexts for which the menu item will appear in the context menu. Contexts can be added by calling context.add() and removed by called context.remove().

+ +

parentMenu

+ +

The item's parent Menu, or null 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 addItem() method.

+ +

contentScript

+ +

The content script or the array of content scripts associated with the menu item during creation.

+ +

contentScriptFile

+ +

The URL of a content script or the array of such URLs associated with the menu item during creation.

+ +

Events

+ +

message

+ +

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 self.postMessage(), the message is delivered to the add-on code in the menu item's message event.

+ +
Arguments
+ +

value : Listeners are passed a single argument which is the message posted from the content script. The message can be any JSON-serializable value.

+ + + +

A labeled menu item that expands into a submenu.

+ +

Methods

+ +

addItem(item)

+ +

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.

+ +
Parameters
+ +

item : Item,Menu,Separator
+ The Item, Menu, or Separator to add to the menu.

+ +

removeItem(item)

+ +

Removes the given menu item from the menu. If the menu does not contain the item, this method does nothing.

+ +
Parameters
+ +

item : Item,Menu,Separator
+ The menu item to remove from the menu.

+ +

destroy()

+ +

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 removeItem() on the parent menu instead.

+ +

Properties

+ +

label

+ +

The menu's label. You can set this after creating the menu to update its label later.

+ +

items

+ +

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.

+ +

image

+ +

The menu's icon, a string URL. The URL can be remote, a reference to an image in the add-on's data 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 null.

+ +

context

+ +

A list of declarative contexts for which the menu will appear in the context menu. Contexts can be added by calling context.add() and removed by called context.remove().

+ +

parentMenu

+ +

The menu's parent Menu, or null 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 addItem() method.

+ +

contentScript

+ +

The content script or the array of content scripts associated with the menu during creation.

+ +

contentScriptFile

+ +

The URL of a content script or the array of such URLs associated with the menu during creation.

+ +

Events

+ +

message

+ +

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 self.postMessage(), the message is delivered to the add-on code in the menu item's message event.

+ +
Arguments
+ +

value : Listeners are passed a single argument which is the message posted from the content script. The message can be any JSON-serializable value.

+ +

Separator

+ +

A menu separator. Separators can be contained only in Menus, not in the top-level context menu.

+ +

Methods

+ +

destroy()

+ +

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 removeItem() on the parent menu instead.

+ +

Properties

+ +

parentMenu

+ +

The separator's parent Menu. This property is read-only. To add the separator to a new menu, call that menu's addItem() method.

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 +--- +

{{AddonSidebar}}

+ +

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.

+ +

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) }}

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 +--- +

{{AddonSidebar}}

+ +
+

Expérimental

+
+ +

Expose l'API IndexedDB pour les add-ons.

+ +

Utilisation

+ +

Les scripts en cours d'exécution dans les pages Web peuvent accéder à IndexedDB via window. Par exemple:

+ +
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");
+};
+ +

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 indexed-db pour y accéder:

+ +
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");
+};
+ +

La plupart des objets qui mettent en œuvre l'API IndexedDB, tels que IDBTransaction , IDBOpenDBRequest , et IDBObjectStore , sont accessibles à travers l'objet IndexedDB lui-même. < br>

+ +

L'API exposée par indexed-db est presque identique à l'API DOM IndexedDB, donc on n'a pas répété sa documentation ici, référer vous à la documentation de l'API IndexedDB pour tous les détails.

+ +

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 bug 778197 et bug 786688 .

+ +

Exemple

+ +
+

Cet exemple utilise l'API bouton d'action , qui est uniquement disponible à partir de Firefox 29 partir.

+
+ +

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 .

+ +

L'add-on implémente les fonctions open(), addItem() et getItems() 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.

+ +
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);
+  }
+});
+
+ +

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 .

+ +

Globals

+ +

Propriétés

+ +

indexedDB

+ +

Permet de créer, ouvrir et supprimer des bases de données. Voir la documentation IDBFactory.

+ +

IDBKeyRange

+ +

Définit une plage de clés. Voir la documentation IDBKeyRange.

+ +

DOMException

+ +

Fournit des informations plus détaillées sur une exception. Voir la documentation DOMException.

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 +--- +

{{AddonSidebar}}

+ +
+

Stable

+
+ +

Permet au add-on le stockage des données afin qu'il soit conservé entre les redémarrages de Firefox. Ce module fonctionne de façon similaire au DOM Storage du Web, mais il est uniquement disponible pour des add-ons.

+ +

Utilisation

+ +

Le module de stockage simple exporte un objet appelé storage 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.

+ +

Pour stocker une valeur, il faut juste l'affecter avec la propriété storage:

+ +
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!";
+ +

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.

+ +

Veillez à définir les propriétés avec storage et non avec le module lui-même:

+ +
// This is not good!
+var ss = require("sdk/simple-storage");
+ss.foo = "I will not be saved! :(";
+ +

stockage simple et "jpm run"

+ +

Le module de stockage simple stocke ses données dans votre profil. Parce que jpm run 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 jpm run - les données stockées ne persisteront pas d'une exécution à l'autre.

+ +

La solution la plus simple à ce problème est d'utiliser l'option --profile de jpm avec un chemin d'accès à un profil - pas seulement un nom de profil. Vous pouvez aussi avoir besoin d'inclure l'option --no-copie pour empêcher Firefox de copier le profil dans un répertoire de temporaire chaque fois qu'il démarre.

+ +
jpm run --no-copy --profile path/to/profile/dir
+ +

Si vous spécifiez un profil non-existant, il sera créé.

+ +
+

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.

+
+ +

Accès au stockage à partir de la console

+ +

Dans l' Add-on Debugger , vous pouvez accéder à vos addons simple stockage par programmation à partir de la console en utilisant ce qui suit:

+ +
loader.modules['resource://gre/modules/commonjs/sdk/simple-storage.js'].exports.storage
+ +

Constructeur de tableaux

+ +

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:

+ +
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);
+  }
+});
+ +

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à:

+ +
if (!ss.storage.pages)
+  ss.storage.pages = [];
+ +

Suppression de données

+ +

Vous pouvez supprimer des propriétés en utilisant l'opérateur delete. Voici une add-on qui ajoute trois boutons pour écrire, lire et supprimer une valeur:

+ +
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");
+  }
+});
+ +

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é:

+ +
info: undefined
+
+ +

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".

+ +

Quotas

+ +

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.

+ +

Pour écouter les notifications du quota, utiliser l'evenement "OverQuota". il sera appelée quand votre stockage dépasse le quota.

+ +
function myOnOverQuotaListener() {
+  console.log("Uh oh.");
+}
+ss.on("OverQuota", myOnOverQuotaListener);
+ +

Les auditeurs peuvent également être retirés:

+ +
ss.removeListener("OverQuota", myOnOverQuotaListener);
+ +

Pour connaitre le % de saturation du quota utiliser la proprieté quotaUsage. 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.

+ +

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 quotaUsage soit inférieur ou égal à 1.

+ +
ss.storage.myList = [ /* some long array */ ];
+ss.on("OverQuota", function () {
+  while (ss.quotaUsage > 1)
+    ss.storage.myList.pop();
+});
+ + + +

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 navigation privé .

+ +

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 private-browsing Module .

+ +

Globals

+ +

Propriétés

+ +

storage

+ +

Un objet persistant privé de votre add-on.

+ +

quotaUsage

+ +

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.

+ +

Événements

+ +

OverQuota

+ +

Le module émet cet événement lorsque votre stockage add-ons dépasse son quota.

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 +--- +

{{AddonSidebar}}

+ +
+

Stable

+
+ +

Ouvre, manipule, accède et recevoir les événements des onglets.

+ +

Utilisation

+ +

Ouvrez un onglet

+ +

Vous pouvez ouvrir un nouvel onglet, en spécifiant diverses propriétés, y compris l'emplacement:

+ +
var tabs = require("sdk/tabs");
+tabs.open("http://www.example.com");
+ +

Track tabs

+ +

You can register event listeners to be notified when tabs open, close, finish loading DOM content, or are made active or inactive:

+ +
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);
+});
+ +

Access tabs

+ +

The module itself can be used as a list of all opened tabs across all windows. In particular, you can enumerate it:

+ +
var tabs = require('sdk/tabs');
+for (let tab of tabs)
+  console.log(tab.title);
+ +

You can also access individual tabs by index:

+ +
var tabs = require('sdk/tabs');
+
+tabs.on('ready', function () {
+  console.log('first: ' + tabs[0].title);
+  console.log('last: ' + tabs[tabs.length-1].title);
+});
+ +

You can access the currently active tab:

+ +
var tabs = require('sdk/tabs');
+
+tabs.on('activate', function () {
+  console.log('active: ' + tabs.activeTab.url);
+});
+ +

Track a single tab

+ +

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 "back-forward cache":

+ +
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);
+ +

Manipulate a tab

+ +

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 ready event fires). By setting the url property you can load a new page in the tab:

+ +
var tabs = require("sdk/tabs");
+tabs.on('activate', function(tab) {
+  tab.url = "http://www.example.com";
+});
+ +

Run scripts in a tab

+ +

You can attach a content script to the page hosted in a tab, and use that to access and manipulate the page's content (see the Modifying the Page Hosted by a Tab tutorial):

+ +
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)
+  })
+});
+ +

Note that tab.attach 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.

+ +

Attaching stylesheets

+ +
+

New in Firefox 34.

+
+ +

You can't attach style sheets to a tab using tab.attach(), but from Firefox 34 onwards you can attach and detach them using the low-level stylesheet/style and content/mod 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:

+ +
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);
+    }
+  }
+});
+ +

Private windows

+ +

If your add-on has not opted into private browsing, then you won't see any tabs that are hosted by private browser windows.

+ +

Tabs hosted by private browser windows won't be seen if you enumerate the tabs module itself, and you won't receive any events for them.

+ +

To learn more about private windows, how to opt into private browsing, and how to support private browsing, refer to the documentation for the private-browsing module.

+ +

Converting to XUL tabs

+ +

To convert from the high-level Tab objects used in this API to the low-level XUL tab objects used in the tabs/utils API and by traditional add-ons, use the viewFor() function exported by the viewFor module.

+ +

To convert back the other way, from a XUL tab to a high-level Tab object, use the modelFor() function, exported by the modelFor module.

+ +

Here's an example converting from a high-level Tab to a XUL tab and then back the other way:

+ +
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);
+
+ +

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 multiprocess Firefox.

+ +

Globals

+ +

Functions

+ +

open(options)

+ +

Opens a new tab. The new tab will open in the active window or in a new window, depending on the inNewWindow option.

+ +

Example

+ +
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.
+  }
+});
+ +
Parameters
+ +

options : object
+ Required options:

+ + + + + + + + + + + + + + + + +
NameType 
urlstring +

String URL to be opened in the new tab. This is a required property.

+
+ +

Optional options:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameType 
isPrivateboolean +

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 private-browsing documentation for more information. Defaults to false.

+
inNewWindowboolean +

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.

+
inBackgroundboolean +

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.

+
isPinnedboolean +

If present and true, then the new tab will be pinned as an app tab.

+
onOpenfunction +

A callback function that will be registered for the 'open' event. This is an optional property.

+
onClosefunction +

A callback function that will be registered for the 'close' event. This is an optional property.

+
onReadyfunction +

A callback function that will be registered for the 'ready' event. This is an optional property.

+
onLoadfunction +

A callback function that will be registered for the 'load' event. This is an optional property.

+
onPageShowfunction +

A callback function that will be registered for the 'pageshow' event. This is an optional property.

+
onActivatefunction +

A callback function that will be registered for the 'activate' event. This is an optional property.

+
onDeactivatefunction +

A callback function that will be registered for the 'deactivate' event. This is an optional property.

+
+ +

Properties

+ +

activeTab

+ +

The currently active tab in the active window. This property is read-only. To activate a Tab object, call its activate method.

+ +

Example

+ +
// Get the active tab's title.
+var tabs = require("sdk/tabs");
+console.log("title of active tab is " + tabs.activeTab.title);
+ +

length

+ +

The number of open tabs across all windows.

+ +

Events

+ +

open

+ +

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.

+ +

Properties relating to the tab's content (for example: title, favicon, and url) will not be correct at this point. If you need to access these properties, listen for the ready event:

+ +
var tabs = require("sdk/tabs");
+tabs.on('open', function(tab){
+  tab.on('ready', function(tab){
+    console.log(tab.url);
+  });
+});
+ +
Arguments
+ +

Tab : Listeners are passed the tab object that just opened.

+ +

close

+ +

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.

+ +
Arguments
+ +

Tab : Listeners are passed the tab object that has closed.

+ +

ready

+ +

This event is emitted when the DOM for a tab's content is ready. It is equivalent to the DOMContentLoaded event for the given content page.

+ +

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.

+ +
Arguments
+ +

Tab : Listeners are passed the tab object that has loaded.

+ +

activate

+ +

This event is emitted when an inactive tab is made active.

+ +
Arguments
+ +

Tab : Listeners are passed the tab object that has become active.

+ +

deactivate

+ +

This event is emitted when the active tab is made inactive.

+ +
Arguments
+ +

Tab : Listeners are passed the tab object that has become inactive.

+ +

Tab

+ +

A Tab instance represents a single open tab. It contains various tab properties, several methods for manipulation, as well as per-tab event registration.

+ +

Tabs emit all the events described in the Events section. Listeners are passed the Tab object that triggered the event.

+ +

Methods

+ +

pin()

+ +

Pins this tab as an app tab.

+ +

unpin()

+ +

Unpins this tab.

+ +

close(callback)

+ +

Closes this tab.

+ +
Parameters
+ +

callback : function
+ A function to be called when the tab finishes its closing process. This is an optional argument.

+ +

reload()

+ +

Reloads this tab.

+ +

activate()

+ +

Makes this tab active, which will bring this tab to the foreground.

+ +

getThumbnail()

+ +

Returns thumbnail data URI of the page currently loaded in this tab.

+ +

attach(options)

+ +

Attach one or more scripts to the document loaded in the tab. Note that by attaching inside ready 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.

+ +

Example

+ +
var tabs = require("sdk/tabs");
+
+tabs.on('ready', function(tab) {
+  var worker = tab.attach({
+      contentScript:
+        'document.body.style.border = "5px solid red";'
+  });
+});
+ +
Parameters
+ +

options : object
+ Optional options:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameType 
contentScriptFilestring,array +

The local file URLs of content scripts to load. Content scripts specified by this option are loaded before those specified by the contentScript option. Optional.

+
contentScriptstring,array +

A string or an array of strings of code to be evaluated in the context. Content scripts specified by this option are loaded after those specified by the contentScriptFile option. Optional.

+
contentScriptOptionsobject +

You can use this option to define read-only values for your content scripts.

+ +

The option consists of an object literal listing name:value pairs for the values you want to provide to the content script. For example:

+ +
+// main.js
+
+const tabs = require("sdk/tabs");
+
+tabs.open({
+  url: "./page.html",
+  onReady: function(tab) {
+    tab.attach({
+      contentScriptFile: "./content-script.js",
+      contentScriptOptions: {
+        a: "blah"
+      }
+    });
+  }
+});
+ +

The values are accessible to content scripts via the self.options property:

+ +
+// content-script.js
+
+alert(self.options.a);
+
onMessagefunction +

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.

+
onErrorfunctionA function called when the content worker receives an error from content scripts. Listeners are passed a single argument, error, which is the error posted from the content script and an object of type Error. Optional
+ +
Returns
+ +

Worker : The Worker object can be used to communicate with the content script. See Content Scripts guide to learn the details.

+ +

Properties

+ +

id

+ +

The unique id for the tab. This property is read-only.

+ +

title

+ +

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.

+ +

url

+ +

The URL of the page currently loaded in the tab. This property can be set to load a different URL in the tab.

+ +

favicon

+ +

The URL of the favicon for the page currently loaded in the tab. This property is read-only.

+ +
This property is deprecated. From version 1.15, use the favicon module's getFavicon() function instead.
+ +

contentType

+ +
+

This is currently an experimental API, so we might change it in future releases.

+ +

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.

+
+ +

index

+ +

The index of the tab relative to other tabs in the application window. This property can be set to change its relative position.

+ +

isPinned

+ +

Whether or not this tab is pinned as an app tab. This property is read-only.

+ +

window

+ +

The window object for this tab.

+ +

readyState

+ +
+

New in Firefox 33.

+
+ +

A string telling you the load state of the document hosted by this tab. This corresponds directly to Document.readyState. It has one of four possible values:

+ + + +

Once a tab's readyState has entered "interactive", you can retrieve properties such as the document's URL.

+ +

Events

+ +

close

+ +

This event is emitted when the tab is closed. It's also emitted when the tab's window is closed.

+ +
Arguments
+ +

Tab : Listeners are passed the tab object.

+ +

ready

+ +

This event is emitted when the DOM for the tab's content is ready. It is equivalent to the DOMContentLoaded 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.

+ +

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.

+ +
Arguments
+ +

Tab : Listeners are passed the tab object.

+ +

load

+ +

This event is emitted when the page for the tab's content is loaded. It is equivalent to the load event for the given content page. At this point the document and its resources, such as images and stylesheets, have finished loading.

+ +

This event can be used for pages that do not have a DOMContentLoaded event, like images. For pages that have a DOMContentLoaded event, load is fired after ready.

+ +

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.

+ +
Arguments
+ +

Tab : Listeners are passed the tab object.

+ +

pageshow

+ +

The pageshow event is emitted when the page for a tab's content is loaded. It is equivalent to the pageshow event for the given content page.

+ +

This event is similar to the load and ready events, except unlike load and ready, pageshow is triggered if the page was retrieved from the bfcache. 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 pageshow event is emitted when the user moves back to the previous page, while the load and ready events are not.

+ +

This event is not emitted when the tab is made the active tab: to get notified about that, you need to listen to the activate event.

+ +

After this event has been emitted, all properties relating to the tab's content can be used. It is emitted after load and ready.

+ +
Arguments
+ +

Tab : Listeners are passed the tab object.

+ +

persisted : Listeners are passed a boolean value indicating whether or not the page was loaded from the bfcache.

+ +

activate

+ +

This event is emitted when the tab is made active.

+ +

Note that you cannot guarantee that a tab's content, or even its url, are initialized at the time activate is emitted. This is because when a new tab is opened, its activate event may be emitted before the content is loaded.

+ +

You can use the tab's readyState property to determine whether the tab's content and url will be available: if readyState is uninitialized or loading, then you can't access the tab's properties and must wait for the tab's ready event.

+ +
Arguments
+ +

Tab : Listeners are passed the tab object.

+ +

deactivate

+ +

This event is emitted when the tab is made inactive.

+ +
Arguments
+ +

Tab : Listeners are passed the tab object.

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 +--- +

+ +
+

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.

+ +

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 WebExtensions instead. If you maintain an add-on which uses the techniques described here, consider migrating it to use WebExtensions.

+ +

Starting from Firefox 53, no new legacy add-ons will be accepted on addons.mozilla.org (AMO) for desktop Firefox and Firefox for Android.

+ +

Starting from Firefox 57, only extensions developed using WebExtensions APIs will be supported on Desktop Firefox and Firefox for Android.

+ +

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 "Compatibility Milestones" document for more information.

+ +

A wiki page containing resources, migration paths, office hours, and more, is available to help developers transition to the new technologies.

+
+ + + +

+ +

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.

+ +
+

Tutorials

+ +
+
+
+
Getting started
+
How to install the SDK and use the jpm tool to develop, test, and package add-ons.
+
Interact with the browser
+
Open web pages, listen for pages loading and list open pages.
+
Development techniques
+
Learn about common development techniques, such as unit testing, logging, creating reusable modules, localization, and mobile development.
+
+
+ +
+
+
Create user interface components
+
Create user interface components such as toolbar buttons, context menus, menu items, and dialogs.
+
Modify web pages
+
Modify pages matching a URL pattern or dynamically modify a particular tab.
+
Putting it together
+
Walkthrough of the Annotator example add-on.
+
+
+
+ +
+

Guides

+ +
+
+
+
Contributor's guide
+
Learn how to start contributing to the SDK and about the most important idioms used in the SDK code such as modules, classes and inheritance, private properties, and content processes.
+
SDK infrastructure
+
Aspects of the SDK's underlying technology: modules, the Program ID and the rules defining Firefox compatibility.
+
Content scripts
+
A detailed guide to working with content scripts.
+
+
+ +
+
+
SDK idioms
+
The SDK's event framework and the distinction between add-on scripts and content scripts.
+
XUL migration
+
A guide to porting XUL add-ons to the SDK. This guide includes a comparison of the two toolsets and a working example of porting a XUL add-on.
+
Multiprocess Firefox and the SDK
+
How to check whether your add-on is compatible with multiprocess Firefox or not and fix it accordingly.
+
+
+
+ +
+

Reference

+ +
+
+
+
High-Level APIs
+
Reference documentation for the high-level SDK APIs.
+
Tools reference
+
Reference documentation for the jpm tool used to develop, test and package add-ons, the console global used for logging, and the package.json file.
+
+
+ +
+
+
Low-Level APIs
+
Reference documentation for the low-level SDK APIs.
+
+
+
+ +

+ +
+
+
+
+

Join the Add-on SDK community

+ +
+
Choose your preferred method for joining the discussion:
+ + +
+ +
+ +
+
+
+
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 +--- +

Les modules de cette section implémentent des API de bas niveau. Ces modules se divisent à peu près en trois catégories:

+ + + +

Ces modules sont toujours en développement actif et nous prévoyons d'y apporter des modifications incompatibles dans les prochaines versions.

+ +

{{ LandingPageListSubpages ("/en-US/Add-ons/SDK/Low-Level_APIs", 5) }}

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 +--- +

{{AddonSidebar}}

+ +
+

Expérimental

+
+ +

Fournit des flux d'octets en lecture/écriture.

+ +
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;
+}
+
+ +
function writeBinaryDataToFile(data, filename) {
+  var fileIO = require("sdk/io/file");
+  var ByteWriter = fileIO.open(filename, "wb");
+  if (!ByteWriter.closed) {
+    ByteWriter.write(data);
+    ByteWriter.close();
+  }
+}
+ +

Globals

+ +

Constructeurs

+ +

ByteReader(inputStream)

+ +

Crée un flux d'entrée binaire qui lit les octets d'un flux de support.

+ +

Vous pouvez également créer un objets ByteReader en utilisant la fonction io/file open().

+ +
Paramètres
+ +

inputStream: flux
+ Le flux de support, un nsIInputStream

+ +

ByteWriter(outputStream)

+ +

Crée un flux de sortie binaire qui écrit les octets dans un flux de support.

+ +

Vous pouvez également créer un objets ByteWriter en utilisant la fonction io/file open().

+ +
Parameters
+ +

outputStream : flux
+ Le flux de support, un nsIOutputStream.

+ +

ByteReader

+ +

Méthodes

+ +

close()

+ +

Ferme à la fois le flux et son flux de support. Si le flux est déjà fermé, une exception est levée.

+ +

read(numBytes)

+ +

Lit une chaîne à partir du flux. Si le flux est fermé, une exception est levée.

+ +
Parameters
+ +

numBytes: nombre <être> Le nombre d'octets à lire. Sinon donné, la totalité du flux est lu.

+ +
Retours
+ +

string : Une chaîne contenant les octets lus. Si le flux est finit, retourne une chaîne vide.

+ +

Propriétés

+ +

closed

+ +

Vrai si le flux est fermé.

+ +

ByteWriter

+ +

Méthodes

+ +

close()

+ +

Ferme à la fois le flux et son flux de support. Si le flux est déjà fermé, une exception est levée.

+ +

write(str)

+ +

Ecrit une chaîne dans le flux. Si le flux est fermé, une exception est levée.

+ +
Paramètres
+ +

str: string La chaîne à écrire .

+ +

Propriétés

+ +

closed

+ +

Vrai si le flux est fermé.

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 +--- +

{{AddonSidebar}}

+ +
+

Expérimental

+
+ +

Permet d'accéder au système de fichiers local.

+ +

Utilisation

+ +

Paths

+ +

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 (\), et sur les systèmes de type Unix comme Linux et OS X les slash sont utilisés (/).

+ +

To ensure your add-on works for everyone, generate paths using the join function. Unfortunately this API does not currently provide a way to obtain an absolute base path which you could then use with join. For now, you need to require("chrome") and use the XPCOM directory service as described in this article about File I/O.

+ +

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 C:\Users\Myk, you need to use the string "C:\\Users\\Myk", not "C:\Users\Myk".  Read more about escaping characters in strings.

+ +

Globals

+ +

Functions

+ +

basename(path)

+ +
+

The path parameter must be an absolute path, relative paths will cause an error.

+ +

Use the fs/path module for relative path support.

+
+ +

Returns the last component of the given path. For example, basename("/foo/bar/baz") returns "baz". If the path has no components, the empty string is returned.

+ +
Parameters
+ +

path : string
+ The path of a file.

+ +
Returns
+ +

string : The last component of the given path.

+ +

dirname(path)

+ +

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.

+ +
Parameters
+ +

path : string
+ The path of a file.

+ +
Returns
+ +

string : The path of the directory containing the file.

+ +

exists(path)

+ +

Returns true if a file exists at the given path and false otherwise.

+ +
Parameters
+ +

path : string
+ The path of a file.

+ +
Returns
+ +

boolean : True if the file exists and false otherwise.

+ +

join(...)

+ +

Takes a variable number of strings, joins them on the file system's path separator, and returns the result.

+ +
Parameters
+ +

... : strings
+ A variable number of strings to join. The first string must be an absolute path.

+ +
Returns
+ +

string : A single string formed by joining the strings on the file system's path separator.

+ +

list(path)

+ +

Returns an array of file names in the given directory.

+ +
Parameters
+ +

path : string
+ The path of the directory.

+ +
Returns
+ +

array : An array of file names. Each is a basename, not a full path.

+ +

mkpath(path)

+ +

Makes a new directory named by the given path. Any subdirectories that do not exist are also created. mkpath can be called multiple times on the same path.

+ +
Parameters
+ +

path : string
+ The path to create.

+ +

open(path, mode)

+ +

Returns a stream providing access to the contents of a file.

+ +
Parameters
+ +

path : string
+ The path of the file to open.

+ +

mode : string
+ An optional string, each character of which describes a characteristic of the returned stream.

+ + + +

If mode is not given, "r" is assumed, and the file is opened in read-only text mode.

+ +

Apart from these options, this API always passes the following options:  CREATE_FILE, TRUNCATE (see https://dxr.mozilla.org/mozilla-central/source/nsprpub/pr/include/prio.h#550). This means that:

+ + + +
Returns
+ +

stream : If the file is opened in text read-only mode, a TextReader is returned, and if text write-only mode, a TextWriter is returned. See text-streams for information on these text stream objects. If the file is opened in binary read-only mode, a ByteReader is returned, and if binary write-only mode, a ByteWriter is returned. See byte-streams for more information on these byte stream objects. Opened files should always be closed after use by calling close on the returned stream.

+ +

read(path, mode)

+ +

Opens a file and returns a string containing its entire contents.

+ +
Parameters
+ +

path : string
+ The path of the file to read.

+ +

mode : string
+ An optional string, each character of which describes a characteristic of the returned stream. If the string contains "b", the contents will be returned in binary mode. If "b" is not present or mode is not given, the file contents will be returned in text mode.

+ +
Returns
+ +

string : A string containing the file's entire contents.

+ +

remove(path)

+ +

Removes a file from the file system. To remove directories, use rmdir.

+ +
Parameters
+ +

path : string
+ The path of the file to remove.

+ +

rmdir(path)

+ +

Removes a directory from the file system. If the directory is not empty, an exception is thrown.

+ +
Parameters
+ +

path : string
+ The path of the directory to remove.

+ +

isFile(path)

+ +

Returns true only if this path specifies a file.

+ +
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");
+  }
+}
+ +
Parameters
+ +

path : string
+ The path of the object.

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 +--- +
+

Expérimentale

+
+ +

Une mise en œuvre de l'API node.js child_process.

+ +

Ce module vous permet d'exécuter un programme sous-jacent dans un nouveau processus. Il émule l'API node.js child_process, qui n'est pas documentées séparément. Cependant, il ya quelques différences :

+ + + +

Voici un exemple qui adapte l'exemple de la documentation de node.js pour spawn() :

+ +
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);
+});
+ +

Utilisation child_process dans les extensions non-jpm

+ +

 

+ +
// 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
+ +

 

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 +--- +

{{AddonSidebar}}

+ +
Experimental
+ +

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.

+ +

Usage

+ +


+ Créer des  bouttons

+ +

Pour créer un boutton, vous devez lui donné un identifiant (id), une icône et un libellé:

+ +
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");
+    }
+  });
+ +

By default, the button appears in the Firefox toolbar:

+ +

However, users can move it to the Firefox menu panel using the toolbar customization feature:

+ +

+ +

Badged buttons

+ +
+

New in Firefox 36.

+
+ +

You can add a "badge" to a button using its badge 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 badgeColor property, specified as a CSS <color> value:

+ +
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";
+  }
+}
+ +

+ +

Specifying multiple icons

+ +

You can specify just one icon, or multiple icons in different sizes.

+ +

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 ActionButton constructor.

+ +

Responding to click events

+ +

You can respond to click events by assigning a listener to the button's click event. You can do this in the button's constructor, by assigning the listener to the onClick option. You can also add, or change, the listener afterwards:

+ +
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");
+}
+ +

The listener is passed a state object that contains all the button's properties.

+ +

You can generate click events programmatically with the button's click() method.

+ +

Disabling buttons

+ +

You can disable a button by setting its disabled property to true. A disabled button will not generate click events and its icon will appear disabled:

+ +

+ +

Updating state

+ +

You can update all the button's properties except for its id.

+ +

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.

+ +

You can set state to be specific to a window or tab using the button's state() method. To set state like this, call state() with 2 parameters:

+ + + +

Here's an add-on with a button that disables itself when you click it, but only for the currently active window:

+ +
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
+  });
+}
+ +

To fetch the state for a specific window or tab, call state(), passing in the window or tab you are interested in, and it will return the state:

+ +
var labelForActiveTab = button.state("tab").label;
+ +

To learn more about this, see the API documentation for state().

+ +

Destroying buttons

+ +

When you've finished with a button, destroy it by calling its destroy() method. After that, any attempts to access any of its properties or to call any of its methods will throw exceptions.

+ +

Globals

+ +

Constructors

+ +

ActionButton(options)

+ +

Creates an action button.

+ +
Parameters
+ +

options : object
+ Required options:

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameType 
idstring +

The button's ID. This is used internally to keep track of this button. The ID must be unique within your add-on.

+
labelstring +

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.

+
iconurl, string, object +

One or more icons for the button. You can specify this in one of three ways: 

+ +
    +
  • as a resource:// URL pointing at an icon file in your add-on's "data" directory, typically constructed using self.data.url(iconfile)
  • +
  • as a relative path: a string in the form "./iconfile", where "iconfile" is a relative path to the icon file beginning in your add-on's "data" directory
  • +
  • as an object, or dictionary of key-value pairs. Here you can specify a range of sizes for your button's icon. Each key-value pair specifies an icon: +
      +
    • each value specifies an image file as a resource:// URL or relative path.
    • +
    • each key must be a numeric string such as "16", or "32", which represents the size in pixels of the corresponding image.
    • +
    +
  • +
+ +
+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"
+    }
+  });
+ +

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 HiDPI display), these are doubled to 36 x 36 and 64 x 64 pixels, respectively. So you can supply three icon files:

+ +
+icon: {
+  "16": "./addon16.png",
+  "32": "./addon32.png",
+  "64": "./addon64.png"
+}
+ +

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:

+ +
+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
+}
+
+
+ +

Optional options:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameType 
disabledboolean +

Determines whether the button is disabled. Disabled buttons appear disabled in the UI, and do not respond to clicks. Defaults to false.

+
onClickfunction +

Click handler for the button.

+
badgeNumber or String +
+

New in Firefox 36.

+
+ +

Badge to attach to the button.

+ +

The badge can contain as many characters (or digits) as you like, but only the first four will be displayed.

+
badgeColorCSS <color> value +
+

New in Firefox 36.

+
+ +

Color for the badge. If badgeColor is omitted and badge is specified, then the badge is red.

+
+ +

ActionButton

+ +

Methods

+ +

click()

+ +

Click the button. This will cause the button to generate the click event:

+ +
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();
+
+ +

state()

+ +

Get or set the button's state for a specific window or tab.

+ +

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 state() is for.

+ +

To set a button's properties for a specific window or tab, call state(), passing it the window or tab 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.

+ +

For example, if you have a button like this:

+ +
var { ActionButton } = require('sdk/ui/button/action');
+
+var button = ActionButton({
+  id: "my-button",
+  label: "default",
+  icon: "./firefox-16.png"
+});
+ +

You can change its label for only the currently active window like this:

+ +
button.state("window", {
+  "label" : "window-specific label"
+});
+ +

You can change its label for only the currently active tab like this:

+ +
button.state("tab", {
+  "label" : "tab-specific label"
+});
+
+ +

To fetch the button state for a specific window or tab, call state(), passing it the window or tab you're interested in, and it will return a state object containing all the properties 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:

+ + + +
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);
+}
+ +

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:

+ +
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);
+}
+ +

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 state(), 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 label only for tab A, then tab B will inherit label's value from the window, and changing the value for the window will implicitly change the value for tab B.

+ +

To delete a tab- or window-specific state, assign null to the property. After that, the property will inherit its value from the less-specific state as before:

+ +
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);
+}
+ +

Finally, you can pass the button itself into state(). 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:

+ +
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);
+    }
+  });
+
+ +
Parameters
+ +

target : button, tab, window, string

+ + + +

state : object, null
+ Include this parameter only if you are setting state. It is an object containing all the properties you wish to set. For example:

+ +
button.state("tab", {
+  "label" : "tab-specific label",
+  "icon": "./tab-specific-icon.ico"
+});
+ +

To reset state, pass null:

+ +
button.state("tab", null);
+ +
Returns
+ +

state : if you have passed the second state argument to make this function a setter, it returns undefined. 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:

+ +
console.log(button.state("tab"));
+ +

This object represents a snapshot of the state at the time state() is called. It is not kept up to date with changes made to the button:

+ +
button.label = "foo";
+var state = button.state(button);
+button.label = "bar";
+console.log(state.label) // foo
+ +

on()

+ +

Add a listener to an event emitted by the button. The button only emits one type of event, click:

+ +
button.on("click", handleClick)
+
+function handleClick(state) {
+  console.log("button '" + state.label + "' was clicked");
+}
+ +
Parameters
+ +

event : string
+ The event to listen for. Action buttons only emit one type of event, "click".

+ +

listener : function
+ Function that will be called on click.

+ +

once()

+ +

Assign a listener to the first occurrence only of an event emitted by the button. The button only emits one type of event, click. The listener is automatically removed after the first time the event is emitted.

+ +
Parameters
+ +

event : string
+ The event to listen for. Action buttons only emit one type of event, "click".

+ +

listener : function
+ Function that will be called on click.

+ +

removeListener()

+ +

Removes an event listener. For example, this code is equivalent to once():

+ +
button.on("click", handleClick)
+
+function handleClick(state) {
+  console.log("button '" + state.label + "' was clicked");
+  button.removeListener("click", handleClick);
+} 
+ +
Parameters
+ +

event : string
+ The event to listener is listening for. Action buttons only emit one type of event, "click".

+ +

listener : function
+ The listener to remove.

+ +

destroy()

+ +

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.

+ +

Properties

+ +

id

+ +

The button's unique ID. This is read-only.

+ +

label

+ +

The button's label.

+ +

icon

+ +

The button's icon or icons, as a URL, relative path, or object containing a set of key-value pairs.

+ +

disabled

+ +

Boolean property indicating whether or not the button is disabled.

+ +

badge

+ +
+

New in Firefox 36.

+
+ +

Value to attach to the button as a badge. May be a number or a string.

+ +

The badge can contain as many characters (or digits) as you like, but only the first four will be displayed.

+ +

badgeColor

+ +
+

New in Firefox 36.

+
+ +

Color for the badge, specified as a CSS <color> value.

+ +

Events

+ +

click

+ +

This event is emitted when a user clicks the button or your add-on calls the button's click() method.

+ +
Arguments
+ +

state : The button's state. This contains all the button's properties.

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 +--- +
+

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 Node.js . Il remplace l'outil cfx.

+ +

Vous pouvez utiliser jpm à partir de Firefox 38.

+ +

Cet article met en évidence les principales différences entre cfx et jpm.

+
+ +

Un guide pour travailler avec jpm si vous êtes déjà familier avec cfx.

+ +

Installation

+ +

cfx est basée sur Python et est distribué comme un fichier zip. jpm est baser sur Node.js qui est distribué par npm . Donc, pour jpm vous n'avez pas besoin de Python, mais vous avez besoin npm.

+ +

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 npm update .

+ +

Pour obtenir des instructions d'installation de jmp, consultez la section de l' Installation dans la référentiel de jmp.

+ +

Activation

+ +

Vous devez appeler cfx activate 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 activate de nouveau

+ +

Avec jpm, pas d'activation. Une fois qu'il est installé, vous pouvez simplement l'utiliser.

+ +

Incompatibilités

+ +

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.

+ +

Add-on ID

+ +

L'ID de add-on est l'identifiant unique de votre add-on. Dans un xpi, c'est le champ ID dans le fichier Manifest d'instalation de l'add-on (install.rdf).

+ +

L'identifiant est utilisé à des fins variées. Par exemple: addons.mozilla.org l'utilise pour distinguer entre les nouvelles add-ons et les mises à jour d'add-ons existantes, et le module simple-storage l'utilise pour déterminer lesquelles des données stockées appartiennent à tel add-on.

+ +

Manipulation avec l'ID cfx

+ +

Lorsque vous utilisez cfx, l'ID est tiré du champ id dans le fichier de package.json de l'add-on. 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 "jid1-F3BoogbjQJE67A". L'ID Add-on doit être l'un des deux types suivant : un GUID ou une chaîne qui comprend un symbole "@". Le SDK ne prévoit que le dernier format, et si l'ID dans package.json ne contient pas de "@", cfx xpi ajouter "@jetpack" dans le champ de package.json, ce qui transforme l'ID de l'add-on.

+ +

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 "jid1-F3BoogbjQJE67A", et l'ID correspondant dans la install.rdf sera "jid1-F3BoogbjQJE67A@jetpack".

+ +

Manipulation d'ID avec jpm

+ +

Lorsque vous créez un xpi avec jpm xpi:

+ + + +

Ce que vous devez faire

+ +

Tout cela signifie que: si votre package.json contient un champ id, et sa valeur ne contient pas «@», alors vous devez ajouter "@jetpack» lors du passage à jpm .

+ +

Si vous faites cela, l'ID de l'add-on sera la même que l'id utilisée avec cfx.

+ +

Point d'entrée

+ +

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 main champ dans le package.json .

+ +

Dans jpm, le point d'entrée par défaut est "index.js". Donc, lors de la commutation vers jpm:

+ + + +

Chargement des modules

+ +

L'outil jpm utilise la même logique que Node.js pour déterminer comment résoudre l'argument require(). Dans la plupart des cas, c'est la même logique que cfx. Cependant, il existe quelques différences, parce certaines compatibilités ont été retirées.

+ +

Requérir à des modules locaux

+ +

Supposons que votre add-on est structuré en modules séparés :

+ + + +

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:

+ +
var utils = require("./utils");
+ +

Cependant, avec cfx vous êtes également autorisé à omettre le "./":

+ +
var utils = require("utils"); // this will not work with jpm!
+ +

Cette seconde forme ne fonctionnera pas avec jpm.

+ +

Requérir des modules de code de test

+ +

Similarly, suppose you've written some tests for your add-on:

+ + + +

Avec cfx, le code de "test-my-addon.js" peut importer "my-addon.js" en utilisant une déclaration de ce genre:

+ +
var my_addon = require("my-addon"); // ceci ne fonctionne pas avec jpm!
+ +

Avec jpm, vous devez spécifier le chemin vers «my-addon" explicitement, en utilisant un chemin relatif:

+ +
var my_addon = require("../lib/my-addon");
+
+ +

Modules tiers

+ +

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.

+ +

Dans jpm cette façon d'utiliser des modules tiers 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 utilisant des modules tiers avec jpm.

+ +

Les commandes et les options de commande

+ +

Commandes définitivement retiré

+ +

jpm ne soutient plus les commandes cfx "interne".

+ +

Options définitivement retiré

+ +

jpm ne soutient plus :

+ +
--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
+ +

Au lieu de --profiledir et de --overload-modules, utilisez --profile et --overload

+ +

Champs Package.json

+ +

Beaucoup de champs package.json 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.

+ +

Champs définitivement retiré

+ + + +

Echappement dans Package.json

+ +

Où avec cfx vous auriez dû échapper avec 2 voir 3 barres obliques inverses (\), jpm n'en a besoin que d'une.

+ +

 

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 +--- +

Les articles répertoriés ici fournissent une référence pour les outils du SDK:

+ +

{{ LandingPageListSubpages ("/en-US/Add-ons/SDK/Tools", 7) }}

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 +--- +
+

Vous pouvez utiliser jpm pour Firefox 38 et au-delà.

+ +

Cet article est la référence pour jpm.

+
+ +

The Node-based replacement for cfx. Enables you to test, run, and package add-ons.

+ +

Voir aussi le tutoriel jpm pour débuter.

+ +

jpm usage is:

+ +
jpm [command] [options]
+
+ +

jpm supports the following global options:

+ +
-h, --help        - show a help message and exit
+-V, --version     - print the jpm version number
+
+ +

Installation

+ +

jpm is distributed using the node package manager npm, 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 nodejs.org 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 sudo apt-get install nodejs followed by sudo apt-get install npm in a terminal window.

+ +

After that you can install jpm just as you would any other npm package:

+ +
npm install jpm --global
+ +

Depending on your setup, you might need to run this as an administrator:

+ +
sudo npm install jpm --global
+ +

Or, you can install jpm using git:

+ +
git clone https://github.com/mozilla-jetpack/jpm.git
+cd jpm
+npm install
+npm link
+
+ +

À l'invite de commande, tapez:

+ +
jpm
+ +

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 --global flag.

+ +

If you get an error message saying  /usr/bin/env: node: No such file or directory and you have installed nodejs through a package manager, nodejs may have been installed in the wrong directory. A corresponding topic at stackoverflow.org might help you to solve this problem. Basically, you can solve it by creating a symlink to the node:

+ +
sudo ln -s "$(which nodejs)" /usr/bin/node
+ +

Problems?

+ +

If you don't see this, ask for help. SDK users and project team members discuss problems and proposals on the project mailing list. 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 #jetpack on Mozilla's IRC network.

+ +

Command reference

+ +

There are six jpm commands:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
jpm initCreate a skeleton add-on as a starting point for your own add-on.
jpm runLaunch an instance of Firefox with your add-on installed.
jpm testRuns your add-on's unit tests.
jpm xpiPackage your add-on as an XPI file, which is the install file format for Firefox add-ons.
jpm postPackage your add-on as an XPI file, then post it to some url.
jpm watchpostPackage your add-on as an XPI file whenever there is a file changed, and post that to some url.
jpm signPackage your add-on as an XPI file, then retrieve a new XPI signed by Mozilla.
+ +

jpm init

+ +

This command initializes a new add-on from scratch.

+ +

Create a new directory, change into it, and run jpm init.

+ +
mkdir my-addon
+cd my-addon
+jpm init
+ +

You'll then be asked to supply some information about your add-on: this will be used to create your add-on's package.json file.

+ + + +

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.

+ +

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.

+ +

Then jpm will create an skeleton add-on, as a starting point for your own add-on development, with the following file structure:

+ + + +

jpm run

+ +

This command runs a new instance of Firefox with the add-on installed:

+ +
jpm run
+ +

jpm run accepts the following options:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
-b --binary BINARY +

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.

+ +
+jpm run -b /path/to/Firefox/Nightly
+ See Selecting a browser version.
--binary-args CMDARGS +

Pass extra arguments to Firefox.

+ +

For example, to pass the -jsconsole argument to Firefox, which will launch the Browser Console, try the following:

+ +
+jpm run --binary-args -jsconsole
+ +

To pass multiple arguments, or arguments containing spaces, quote them:

+ +
+jpm run --binary-args '-url mzl.la -jsconsole'
+
--debugRun the add-on debugger attached to the add-on.
-o --overload PATH +

Rather than use the SDK modules built into Firefox, use the modules found at PATH. If -o is specified and PATH is omitted, jpm will look for the JETPACK_ROOT environment variable and use its value as the path.

+ +

See Overloading the built-in modules for more information.

+
-p --profile= PROFILE +

By default, jpm uses a clean temporary Firefox profile each time you call jpm run. Use the --profile option to instruct jpm to launch Firefox with an existing profile.

+ +

The PROFILE value may be a profile name or the path to the profile.

+ +

See Using profiles for more information.

+
-v --verboseVerbose operation.
--no-copy +
Use with caution because jpm run|test changes many preferences, never use with your main profile.
+ +
This only applies when --profile is used.
+ Disables the copying of the profile used, which allows one to reuse a profile.
 
+ +

jpm test

+ +

Use this command to run an add-on's unit tests. It will:

+ + + +
jpm test
+
+ +

See the tutorial on unit testing and the reference documentation for the assert module for more details on this.

+ +

jpm test accepts the following options:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
-b --binary BINARY +

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.

+ +
+jpm test -b /path/to/Firefox/Nightly
+ +

See Selecting a browser version.

+
--binary-args CMDARGS +

Pass extra arguments to Firefox.

+ +

For example, to pass the -jsconsole argument to Firefox, which will launch the Browser Console, try the following:

+ +
+jpm test --binary-args -jsconsole
+ +

To pass multiple arguments, or arguments containing spaces, quote them:

+ +
+jpm test --binary-args '-url mzl.la -jsconsole'
+
--debugRun the add-on debugger attached to the add-on.
-f --filter FILE[:TEST] +

Only run tests whose filenames match FILE and optionally match TEST, both regexps.

+ +
+jpm test --filter base64:btoa
+ +

The above command only runs tests in files whose names contain "base64", and in those files only runs tests whose names contain "btoa".

+
-o --overload PATH +

Rather than use the SDK modules built into Firefox, use the modules found at PATH. If -o is specified and PATH is omitted, jpm will look for the JETPACK_ROOT environment variable and use its value as the path.

+ +

See Overloading the built-in modules for more information.

+
-p --profile PROFILE +

By default, jpm uses a clean temporary Firefox profile each time you call jpm run. Use the --profile option to instruct jpm to launch Firefox with an existing profile.

+ +

The PROFILE value may be a profile name or the path to the profile.

+ +

See Using profiles for more information.

+
--stop-on-error +

By default jpm test keeps running tests even after tests fail. Specify --stop-on-error to stop running tests after the first failure:

+ +
+jpm test --stop-on-error
+
--tbplPrint test output in Treeherder format
--times NUMBER +

Run tests NUMBER of times:

+ +
+jpm test --times 2
+
-v --verboseVerbose operation.
--no-copy +
Use with caution because jpm run|test changes many preferences, never use with your main profile.
+ +
This only applies when --profile is used.
+ Disables the copying of the profile used, which allows one to reuse a profile.
+ +

jpm xpi

+ +

This command packages the add-on as an XPI file, which is the install file format for Mozilla add-ons.

+ +
jpm xpi
+ +

It looks for a file called package.json 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 the .jpmignore file.

+ +

Once you have built an XPI file you can distribute your add-on by submitting it to addons.mozilla.org.

+ +

jpm xpi accepts the following option:

+ + + + + + + + +
-v --verbose +

Verbose operation:

+ +
+jpm xpi -v
+
+ +

jpm post

+ +

This command packages the add-on as an XPI file then posts it to some url.

+ +
jpm post
+ +

It looks for a file called package.json in the current directory and creates a XPI file with which to post to the --post-url.

+ +

jpm post accepts the following options:

+ + + + + + + + + + + + +
--post-url URL +

The url to post the extension to after creating a XPI.

+ +
+jpm post --post-url http://localhost:8888/
+ +

See Using Post and Watchpost for more information.

+
-v --verbose +

Verbose operation:

+ +
+jpm post --post-url http://localhost:8888/ -v
+
+ +

jpm watchpost

+ +

This command packages the add-on as an XPI file then posts it to some url whenever a file in the current working directory changes.

+ +
jpm watchpost
+ +

Creates a XPI whenever a file in the current working directory changes and posts that to the --post-url.

+ +

jpm watchpost accepts the following options:

+ + + + + + + + + + + + +
--post-url URL +

The url to post the extension to after creating a XPI.

+ +
+jpm watchpost --post-url http://localhost:8888/
+ +

See Using Post and Watchpost for more information.

+
-v --verbose +

Verbose operation:

+ +
+jpm watchpost --post-url http://localhost:8888/ -v
+
+ +

jpm sign

+ +
+

This feature is only supported from jpm 1.0.4 onwards.

+
+ +

This command retrieves a new XPI for your add-on signed by Mozilla. This allows you to self-host your add-on so that users can install it without error when signed add-ons are required.

+ +
jpm sign --api-key ${AMO_API_KEY} --api-secret ${AMO_API_SECRET}
+ +

This creates an XPI, submits it to the addons.mozilla.org signing API, then downloads a new signed XPI to the working directory if it passes validation. Here are some possible outcomes of running the sign command:

+ + + +

Under the hood, jpm sign creates an unlisted add-on inside addons.mozilla.org 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 submit it directly to addons.mozilla.org where it will be signed automatically. See the debugging section if you're experiencing difficulty installing a signed add-on.

+ +

jpm sign accepts the following options:

+ + + + + + + + + + + + + + + + +
--api-key API_KEY +

API access key (string) generated on the addons.mozilla.org key management page.

+
--api-secret API_SECRET +

API access secret (string) generated on the addons.mozilla.org key management page. 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.

+
--api-url-prefix http://.../api +

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 addons.mozilla.org :

+ +
+jpm sign ... --api-url-prefix https://addons-dev.allizom.org/api/v3
+
+ +

Techniques

+ +

Selecting a browser version

+ +

By default, jpm run and jpm test will run the release version of Firefox. You can instruct jpm to use a different version in one of two ways:

+ + + +

Using .jpmignore to ignore files

+ +

Using .jpmignore is similar to using .gitignore with git, .hgignore with Mercurial, or .npmignore with npm. By using this file you can let jpm know which files you would like it to ignore when building a .xpi file with jpm xpi.

+ +

Here is an example:

+ +
# Ignore .DS_Store files created by mac
+.DS_Store
+
+# Ignore any zip or xpi files
+*.zip
+*.xpi
+
+ +

A .jpmignore file with the above contents would ignore all zip files and .DS_Store files from the xpi generated by jpm xpi.

+ +

Using profiles

+ +

By default, jpm run uses a new profile each time it is executed. This means that any profile-specific data entered from one run of jpm will not, by default, be available in the next run.

+ +

This includes, for example, any extra add-ons you installed, or your history, or any data stored using the simple-storage API.

+ +

To make jpm use a specific profile, pass the --profile option, specifying the name of the profile you wish to use, or the path to the profile.

+ +
jpm run --profile boogaloo
+
+ +
jpm run --profile path/to/boogaloo
+ +

If you supply --profile but its argument is not the name of or path to an existing profile, jpm will open the profile manager,  enabling you to select and existing profile or create a new one:

+ +
jpm run --profile i-dont-exist
+ +

Developing without browser restarts

+ +

Because jpm run 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 Extension Auto-Installer 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:

+ + + +

You could even automate this workflow with a simple script. For example:

+ +
jpm watchpost --post-url http://localhost:8888/
+
+ +

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 jpm run. This means that if you want to see output from console.log() messages, you'll have to tweak a setting. See the documentation on logging levels for the details on this.

+ +

Overloading the built-in modules

+ +

The SDK modules you use to implement your add-on are built into Firefox. When you run or package an add-on using jpm run or jpm xpi, the add-on will use the versions of the modules in the version of Firefox that hosts it.

+ +

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:

+ + + +
jpm run -o
+
+ +

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 JETPACK_ROOT environment variable, you can pass the location of your copy of the SDK modules along with -o:

+ +
jpm run -o "/path/to/SDK/"
+ +

Supporting updates for self-hosted add-ons

+ +
+

This feature is only supported from jpm 1.0.3 onwards.

+
+ +

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.

+ +

If you list your add-on on addons.mozilla.org, then all you have to do here is submit the new version; add-ons default to checking addons.mozilla.org for new versions of themselves. You can stop reading this section.

+ +

If you do not list your add-on on addons.mozilla.org, 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:

+ + + +

To do this, include two extra keys in package.json:

+ + + +

+ +

If you include updateURL and updateLink (and also updateKey in case updateURL is not HTTPS), then jpm xpi will:

+ + + +

You then host the update manifest at updateURL, and host new versions of the XPI at updateLink.

+ +

For some more details on this, see Automatic Add-on Update Checking.

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 +--- +

{{AddonSidebar}}

+ +
+

Pour suivre ce tuto , vous aurez besoin d'avoir appris des rudiments de jpm.

+
+ +

Pour ajouter des éléments et des sous-menus dans le menu contextuel de Firefox, utilisez le module context-menu.

+ +

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.

+ +
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);
+  }
+});
+ +

Executer l'add-on, charger une page web, séléctioner un texte et faites un clic droit, le nouvel élément doit apparaitre:

+ +

Click it, and the selection is logged to the console (or the shell, if you're running an instance of Firefox from the command line):

+ +
info: elephantine lizard
+
+ +

Details

+ +

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: label, context, contentScript, and onMessage.

+ +

label

+ +

The label is just the string that's displayed.

+ +

context

+ +

The context describes the circumstances in which the item should be shown. The context-menu module provides a number of simple built-in contexts, including this SelectionContext(), which means: display the item when something on the page is selected.

+ +

If these simple contexts aren't enough, you can define more sophisticated contexts using scripts.

+ +

contentScript

+ +

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.

+ +

onMessage

+ +

The onMessage 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.

+ +

So:

+ +
    +
  1. the user clicks the item
  2. +
  3. the content script's click event fires, and the content script retrieves the selected text and sends a message to the add-on
  4. +
  5. the add-on's message event fires, and the add-on code's handler function is passed the selected text, which it logs
  6. +
+ +

More options

+ +

Adding an image

+ +

You can add an image to a context menu item with the image 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 self.data.url():

+ +
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);
+  }
+});
+ +

Adding an access key

+ +
+

New in Firefox 35.

+
+ +

From Firefox 35 you can specify an access key using the accessKey option. This must be a single-character string. Pressing the key selects the option when the context menu is open:

+ +
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);
+  }
+});
+
+ +

 

+ +

Learning More

+ +

To learn more about the context-menu module, see the context-menu API reference.

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) +--- +
+

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 Node.js. It replaces the old cfx tool.

+ +

You can use jpm from Firefox 38 onwards.

+ +

This article describes how to develop using jpm.

+
+ +

Ce tutoriel est un exemple de création d'une add-on en utilisant le SDK.

+ +

Prérequis

+ +

Pour créer des add-ons pour Firefox en utilisant le SDK, vous aurez besoin:

+ + + +

Initialisation d'un add-on vide

+ +

Dans l'invite de commande, créez un nouveau répertoire. Accédez à, tapez jpm init, et appuyez sur Entrée:

+ +
mkdir my-addon
+cd my-addon
+jpm init
+
+ +

Vous serez alors invité à fournir quelques informations sur votre add-on: elles seront utilisées pour créer votre fichier package.json. Pour l'instant, appuyez sur Entrée pour accepter la valeur par défaut pour chaque propriété. Pour plus d'informations sur jpm init, voir le commande de référence jpm .

+ +

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.

+ +

Mise en œuvre de l'add-on

+ +

Maintenant, vous pouvez écrire le code de l'add-on. Sauf si vous avez changé la valeur du "point d'entrée"("main"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:

+ +
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/");
+}
+
+ +
+

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.

+ +

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.

+
+ +

Enregistrez le fichier.

+ +

Ensuite, créez un répertoire appelé "data" à la racine de votre add-on, et enregistrer ces trois fichiers d'icônes dans "data" :

+ + + + + + + + + + + + + + + + +
icon-16.png
icon-32.png
icon-64.png
+ +

Retour à l'invite de commande, tapez:

+ +
jpm run
+ +

Ceci est la commande de jpm pour lancer une nouvelle instance de Firefox avec votre add-on installée.

+ +

Si Firefox ne peut pas être localisé, vous devrez peut-être fournir le chemin d'accès (par exemple dans Ubuntu):

+ + +
jpm run -b /usr/bin/firefox
+ +
+

Vous pouvez egalement modifier le chemin dans le fichier \npm\node_modules\jpm\node_modules\fx-runner\lib\utils.js.

+ +

Par exemple sous windos : var rootKey = '\\Programe Files\\Mozilla Firefox\\';

+
+ +

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 https://www.mozilla.org/ chargé.

+ +

Voilà ce que fait cette add-on. Elle utilise deux modules: le module SDK button_action, qui vous permet d'ajouter des boutons dans le navigateur, et le module tabs, 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.

+ +

Essayez d'éditer ce fichier. Par exemple, nous pourrions changer la page qui est chargé:

+ +
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://developer.mozilla.org/");
+}
+ +

À l'invite de commande, exécutez à nouveau jpm run. Vous ouvrirez cette fois en cliquant https://developer.mozilla.org/.

+ +

Empaquetté l'add-on

+ +

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 https://addons.mozilla.org afin que les autres utilisateurs puissent la télécharger et l'installer.

+ +

Pour construire un xpi, exécutez simplement la commande jpm xpi dans le répertoire de l'add-on:

+ +
jpm xpi
+
+ +

Vous devriez voir un message du type:

+ +
JPM info Successfully created xpi at /path/to/getting-started/@getting-started.xpi
+
+ +

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.

+ +

Pour distribuer votre add-on, soumettre le fichier xpi à addons.mozilla.org ou exécuter jpm sign si vous souhaitez distribuer l'add-on sur votre propre serveur.

+ +

Résumé

+ +

Dans ce tutoriel, nous avons construit et emballé une add-on en utilisant trois commandes:

+ + + +

Ce sont les trois principales commandes que vous utiliserez lors de l'élaboration d'add-ons SDK. Il y a une documentation de référence complète couvrant toutes les commandes que vous pouvez utiliser et toutes les options qu'elles prennent.

+ +

Le code de add-on lui-même utilise deux modules de SDK, action bouton et tabs. Il ya une documentation de référence pour toute les APIs high-level et low-level dans le SDK.

+ +

Et en suite?

+ +

Pour avoir une idée de certaines des choses que vous pouvez faire avec les API du SDK, essayer de travailler avec certains tutoriels.

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 +--- +

Cette page répertorie les articles sur la façon d'accomplir des tâches spécifiques en utilisant le SDK.

+ +
+

Commencer

+ +
+
+
+
Installation
+
Comment faire pour installer l'outil de jpm, que vous allez utiliser pour développer des add-ons.
+
+ +
+
Dépannage
+
Quelques conseils pour résoudre les problèmes courants et obtenir de l'aide.
+
+
+ +
+
+
Commencer
+
Démonstration de la création d'une add-on avec le SDK, en utilisant jpm.
+
+
+
+ +
+

Créer des interfaces utilisateur

+ +
+
+
+
Ajouter un bouton de barre d'outils
+
Attachez un bouton à la barre d'outils du module complémentaire Firefox.
+
Ajouter un élément de menu à Firefox
+
Ajoutez des éléments aux menus principaux de Firefox.
+
+
+ +
+
+
Afficher une popup
+
Afficher une boîte de dialogue contextuelle (popup) implémentée avec HTML et JavaScript.
+
Ajouter un élément de menu contextuel
+
Ajoutez des éléments au menu contextuel de Firefox.
+
+
+
+ +
+

Interagir avec le navigateur

+ +
+
+
+
Ouvrir une page Web
+
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.
+
Écouter le chargement de la page
+
Utilisez le module onglets pour être averti lorsque de nouvelles pages Web sont chargées et accéder à leur contenu.
+
+
+ +
+
+
Obtenir la liste des onglets ouverts
+
Utilisez le module onglets pour parcourir les onglets actuellement ouverts et accéder à leur contenu.
+
+
+
+ +
+

Modifier les pages Web

+ +
+
+
+
Modifier les pages Web en fonction de l'URL
+
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é.
+
+
+ +
+
+
Modifier la page Web active
+
Chargez dynamiquement un script dans la page Web actuellement active.
+
+
+
+ +
+

Techniques de développement

+ +
+
+
+
Enregistrement
+
Enregistrez les messages sur la console à des fins de diagnostic.
+
Création de modules réutilisables
+
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.
+
Tests unitaires
+
Ecrire et exécuter des tests unitaires à l'aide du framework de test du SDK.
+
Autorité Chrome
+
Accédez à l'objet Components, permettant à votre module complémentaire de charger et d'utiliser n'importe quel objet XPCOM.
+
Création de cibles d'événements
+
Permettez aux objets que vous définissez d'émettre leurs propres événements.
+
+
+ +
+
+
Écouter pour charger et décharger
+
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.
+
Utilisation de modules tiers (jpm)
+
Installez et utilisez des modules supplémentaires qui ne sont pas fournis avec le SDK lui-même.
+
Localisation
+
Écriture de code localisable.
+
Développement mobile
+
Développez des modules complémentaires pour Firefox Mobile sur Android.
+
Débogueur de module complémentaire (Add-on)
+
Déboguez le JavaScript de votre module complémentaire.
+
+
+
+ +
+

Mettre ensemble

+ +
+
+
+
Module complémentaire Annotator
+
Présentation d'un module complémentaire relativement complexe.
+
+
+
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 +--- +

Le SDK supporte la localisation des chaînes figurant dans:

+ + + +

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 Limitations ci-dessous.

+ +

Chaînes localisées

+ +

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:

+ + + +

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.

+ +

Vous souhaitez ajouter deux fichiers au répertoire "locale" :

+ +
my-addon/
+         data
+         lib
+         locale/
+                en-US.properties
+                fr.properties
+
+ +

"en-US.properties" contient ceci:

+ +
hello_id= Hello!
+
+ +

"fr.properties" contient ceci:

+ +
hello_id= Bonjour!
+
+ +

Maintenant, chaque fois que votre JavaScript ou HTML demande au système de localisation la traduction de l'identifiant hello_id, il obtiendra la traduction correcte pour la localisation en cours.

+ +

Utilisation de chaînes localisées en HTML

+ +
+

Cet exemple utilise l'API button_action, qui est uniquement disponible à partir de Firefox 29.

+
+ +

Pour référencer des chaînes localisées du HTML, ajouter un attribut data-l10n-id à la balise HTML où vous voulez que la chaîne localisée apparaisse, et assignez y l'identifiant :

+ +
<html>
+  <body>
+    <h1 data-l10n-id="hello_id"></h1>
+  </body>
+</html>
+
+ +

Ensuite, vous pouvez utiliser ce fichier HTML pour construire votre interface, par exemple à l'intérieur d'un panel :

+ +
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")
+});
+ +

Compte tenu de fichiers locaux pour "en-US" et "fr" qui fournissent les traductions de hello_id, le panneau affichera désormais "Bonjour!" ou "Hello!", selon la localisation en cours:

+ +

+ +

La traduction est inséré dans le nœud qui a l'attribut data-l10n-id défini. Tout contenu existant précédemment est simplement remplacé.

+ +

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:

+ +
# Ne fonctionne pas. Les balises HTML sont insérés sous forme de texte.
+hello_id= <blink>Hello!</blink>
+
+ +

Attributs d'Elément Localisation

+ +
Cette fonction est nouvelle dans Firefox 39
+ +

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:

+ +
hello_id.accesskey= H
+ +

Les attributs suivants sont supportés:

+ + + +

En outre, la localisation avec les attributs ARIA aria-label , aria-valuetex et aria-moz-hint sont pris en charge avec les mêmes alias que sur Firefox OS :

+ + + +

Utilisation de chaînes localisées en JavaScript

+ +

Pour référencer les chaînes localisées à partir de votre code d'add-on principale, faites ceci:

+ +
var _ = require("sdk/l10n").get;
+console.log(_("hello_id!"));
+ +

L'affectation de "_" n'est pas nécessaire, mais pour travailler avec les outils gettext qui attendent "_" pour indiquer les chaînes localisables, cela est préférable.

+ +
    +
  1. Importez le module l10n, et assigner sa fonction get à "_"(underscore).
  2. +
  3. Enveloppez toutes les références aux chaînes localisables avec la fonction _().
  4. +
+ +

Si vous l'exécutez, vous verrez le résultat attendu pour la localisation en cours:

+ +
info: Hello!
+
+ +
info: Bonjour!
+
+ +

Notez que parce que vous ne pouvez pas appeler des modules avec require() dans les content_scripts, vous ne pouvez pas encore référencer les chaînes localisées à partir des content_scripts.

+ +

Pluriels

+ +

Le module l10n 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":

+ +
one tomato
+no tomatoes
+two tomatoes
+
+ +

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:

+ +
один помидор     // one tomato
+два помидора     // two tomatoes
+пять помидоров   // five tomatoes
+
+ +

Le SDK utilise les données de Unicode CLDR pour décrire les différentes formes plurielles utilisés dans les différentes langues.

+ +

Formes plurielles de Unicode CLDR

+ +

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 : zero, one, two, few, many et other.

+ +

L'englais a deux formes, qui peuvent être décrits par les categories "1" à "one" et "everything else" à "other":

+ +
one   → n is 1;
+other → everything else
+
+ +

Le russe utilise quatre formes, qui peuvent être décrits comme suit:

+ +
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
+
+ +

Les règles de pluriel pour toutes les langues peuvent être trouvés dans le CLDR Langue règles pluriel (ce tableau est mis à jour par rapport à la source XML CLDR).

+ +

Formes plurielles dans le SDK

+ +

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 :

+ +
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));
+ +

Dans le fichier .properties 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 «other» ne prendre pas le mot-clé CLDR):

+ +
# en-US translations
+tomato_id[one]= %d tomato
+tomato_id= %d tomatoes
+
+ +

En Russe, nous pourrions avoir quatre localisations pluriel:

+ +
# ru-RU translations
+tomato_id[one]= %d помидор
+tomato_id[few]= %d помидора
+tomato_id[many]= %d помидоров
+tomato_id= %d помидоры
+
+ +

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 ru-RU.properties. Ensuite, il récupère et renvoie la localisation pour le compte que vous avez fourni.

+ +

Espaces réservés

+ +

Le module l10n 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 :

+ +
# en-US translations
+hello_id= Hello %s!
+
+ +
# fr translations
+hello_id= Bonjour %s !
+
+ +

Pour utiliser les espaces réservés, fournir la chaîne de réservation après l'identifiant:

+ +
var _ = require("sdk/l10n").get;
+console.log(_("hello_id", "Bob"));
+console.log(_("hello_id", "Alice"));
+ +

Dans la localisation "en-US", cela nous donne:

+ +
info: Hello Bob!
+info: Hello Alice!
+
+ +

Dans "fr" nous obtenons:

+ +
info: Bonjour Bob !
+info: Bonjour Alice !
+
+ +

Commande espaces réservés

+ +

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.

+ +

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.

+ +

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 :

+ +
var _ = require("sdk/l10n").get;
+console.log(_("home_town_id", "Bob", "London"));
+ +

Un traducteur anglais pourrait vouloir choisir entre les ordres suivantes:

+ +
"<town_name> is <person_name>'s home town."
+
+ +
"<person_name>'s home town is <town_name>"
+
+ +

Pour choisir la première option, le fichier .properties peut commander les espaces réservés comme suit:

+ +
home_town_id= %2s is %1s's home town.
+
+ +

Cela nous donne le résultat suivant:

+ +
info: London is Bob's home town.
+
+ +

Utilisation de chaînes localisées dans les Préférences

+ +

En incluant une structure "preferences" dans votre fichier "package.json", vous pouvez définir des préférences pour votre add-on que l'utilisateur peut voir et modifier à l'aide de Firefox Add-ons Manager.

+ +

Les préférences ont obligatoirement des champs title et description. 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.

+ + + +

Par exemple, supposons que votre "package.json" définit une seule préférence:

+ +
{
+    "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"
+}
+
+ +

Dans votre fichier "en-US.properties", inclure ces deux éléments :

+ +
monster_name_title= Name
+monster_name_description= What is the monster's name?
+
+ +

Dans votre fichier "fr.properties", inclure la traduction française:

+ +
monster_name_title= Nom
+monster_name_description= Quel est le nom du monstre ?
+
+ +

Quand la configuration locale du navigateur est "en-US", les utilisateurs voient dans le gestionnaire de modules complémentaires:

+ +

+ +

Lorsque la configuration locale du navigateur est "fr", ils voient ceci:

+ +

+ +

Les types menulist et radio de préférences ont des options. L'attribut label 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 label 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.

+ +

Utilisation de l'identificateurs

+ +

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.

+ +

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 .properties pour toutes les langues supplémentaires que vous souhaitez soutenir.

+ +

Par exemple, dans le cas ci-dessus, vous pouvez utiliser "Bonjour!" comme identificateur, et juste avoir un .properties pour la locale "fr":

+ +
Hello!= Bonjour!
+
+ +

Puis, quand la locale "en-US", le système ne parviennent pas à trouver un .properties, et revoit "Bonjour!".

+ +
+

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.

+
+ +

Locale Updater

+ +

L'add-on locale updater (paramètres régionaux de mise à jour) 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é :

+ +

+ +

Cliquez sur le bouton et vous serez invité à entrer un nouveau fichier .properties 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.

+ +

Limites

+ +

Le support de la localisation actuelle est un premier pas vers la prise en charge complète, et contient un certain nombre de limitations.

+ + + +

Voir aussi - pour les développeurs qui cherchent à localiser les add-ons non-SDK

+ + 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 +--- +
Building a Thunderbird extension
+Step-by-step explanation on how to build an extension for Thunderbird.
+ +
+

{{AddonSidebar}}

+The following documentation provides help for creating extensions for Mozilla's Thunderbird email client. Although there are many similarities with Firefox extensions there are also some differences that may confound the starting developer.
+ +

+Please help! You can add a how-to (a question or an answer or a code snippet), summarize and link to a relevant newsgroup discussion, or create a tutorial. Need help? Contact jenzed.
+ + + + + + + + +
+

Documentation

+ +

Getting started with Thunderbird

+ +

A brave, young developer wants to develop an add-on for Thunderbird. Here's a few links to help them through this journey.

+ +
    +
  • Start by reading the tutorial and learn how to build a Thunderbird extension (Outdated, still talks about overlays and the add-on builder is no longer available but the tutorial has not been updated.)
  • +
  • Read about the main windows so that you know what one means when they say « thread pane », « preview pane », and « folder pane ».
  • + +
  • Want to do some real stuff? See how to inspect a message (demo add-on included!)
  • +
  • Play with our other demo add-on that exercises some more advanced Thunderbird-specific features
  • +
  • Want to do even more stuff? Don't reinvent the wheel: steal functions from the thunderbird-stdlib project (doc here). Functions for dealing with messages (delete them, archive them, change their tags, etc.) are included.
  • +
  • Haven't found what you're looking for? Read the Thunderbird how-tos; they contain a lot of recipes for things extensions want to do.
  • +
  • Still haven't managed to do what you wanted? See the list of all Thunderbird communication channels so that you know where to ask when you get stuck :-).
  • +
  • Feeling really brave? Read the source using a fancy interface; you can often find tests that demonstrate how to do what you're trying to achieve.
  • +
+ +

The Gloda database

+ +

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 (from field, to field) which are themselves part of a Contact: indeed, a contact has multiple identities.

+ +

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.

+ +

Gloda is extremely powerful and is used heavily by add-ons such as Thunderbird Conversations. Learn more about Gloda:

+ + + + + +

Some of these links may be wildly out of date, but they still provide valuable information on the codebase.

+ + + + + + +
+

Community

+ + + +

{{ DiscussionList("dev-extensions", "mozilla.dev.extensions") }}

+ + + +

Tools

+ + + +

... more tools ...

+ +

View All...

+ + + +
+
XUL, JavaScript, XPCOM, Themes, Developing Mozilla
+
+
+ +

Categories

+ +

{{ languages( { "ja": "ja/Extensions/Thunderbird" } ) }}

diff --git "a/files/fr/mozilla/add-ons/th\303\250mes/fond/index.html" "b/files/fr/mozilla/add-ons/th\303\250mes/fond/index.html" new file mode 100644 index 0000000000..2af0b0031c --- /dev/null +++ "b/files/fr/mozilla/add-ons/th\303\250mes/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 +--- +

{{AddonSidebar}}

+ +

Comment créer votre propre thème

+ +
+

Les thèmes sont fait d'une image "header" qui va remplacer le fond de base de Firefox.

+ +

Vous avez fini votre thème ? Mettez-le en ligne maintenant !

+ +

Création de l'image "header" du thème

+ +

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 ancrée au coin supérieur-droit de la fenêtre.

+ +

+ + + +

Image Requise

+ + + +

Petites aides

+ + + +

Ressources : édition d'images en ligne

+ + + +

Envoyer votre thème personnalisé

+ +

Pour commencer à envoyer vos images, allez sur la page Soumettre un thème.

+ +
    +
  1. Nommez votre thème — 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.
  2. +
  3. Choisissez une catégorie et des tags — 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.
  4. +
  5. Décrivez votre thème — é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.
  6. +
  7. Sélectionnez une license pour votre thème — décidez une license de droits d'auteurs pour votre travail. Lire plus à propos des types de licences Creative Common. +
      +
    • Important: Soyez sur d'avoir les droits d'utiliser cette image dans votre thème !
    • +
    +
  8. +
  9. Envoyez votre image — soyez sur qu'elle fait moins de 300 KB et qu'elle soit au formant JPG ou PNG !
  10. +
  11. Sélectionnez la couleur des textes et des onglets — vous pouvez choisir la couleur de "fond" des onglets et celle des textes qui colle le mieux avec votre image header.
  12. +
  13. Prévisualisez votre thème — 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.
  14. +
  15. Soumettre votre thème — 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. +
      +
    • Info: 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 !
    • +
    +
  16. +
+ +

soumettre votre thème ici

+ +

Plus de tutoriels

+ +

Mozilla Themes Focal Point on Sizing - A tutorial on theming with a focus on sizing, by VanillaOrchids.
+
+
+ Traduit par Tocram2 ;)

+
diff --git "a/files/fr/mozilla/add-ons/th\303\250mes/index.html" "b/files/fr/mozilla/add-ons/th\303\250mes/index.html" new file mode 100644 index 0000000000..b0b2cd163a --- /dev/null +++ "b/files/fr/mozilla/add-ons/th\303\250mes/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 +--- +

{{AddonSidebar}}

+ +

Les thèmes vous permettent de modifier l'apparence de l'interface utilisateur et de la personnaliser selon vos goûts. Apprenez comment créer et partager des thèmes !

+ +
+
+

Documentation

+ +
+
Créer un thème de navigateur
+
Introduction pour la création de thèmes pour les dernières versions de Firefox.
+
+

Thèmes légers

+
+
Thèmes légers
+
La création de thèmes utilisant peu d'espaces pour Firefox.
+
FAQ des thèmes légers
+
Donne les réponses aux questions les plus courantes.
+
+
+ + +
+ +

 

diff --git "a/files/fr/mozilla/add-ons/th\303\250mes/theme_concepts/index.html" "b/files/fr/mozilla/add-ons/th\303\250mes/theme_concepts/index.html" new file mode 100644 index 0000000000..8856f4e38f --- /dev/null +++ "b/files/fr/mozilla/add-ons/th\303\250mes/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 +--- +
{{AddonSidebar()}}
+ +

Dans Firefox, les thèmes développés par la bibliothèque WebExtensions API 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.

+ +

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.

+ +
+

If you have a lightweight theme 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.

+
+ +

Static themes

+ +
+

Note that you can't yet submit static WebExtension-based themes to addons.mozilla.org. The work to support this is tracked in https://github.com/mozilla/addons/issues/501. If you want to share a theme with other users, you'll need to make it either a lightweight theme or a dynamic theme.

+
+ +

Static themes are specified using the same resources as a browser extension: a manifest.json 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 addons.mozilla.org (AMO).

+ +
+

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 Dynamic themes.

+
+ +

Defining a theme

+ +

To create a theme (in this example a simple, single image theme):

+ + + +

Static theme approaches

+ +

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.

+ +

Single image themes

+ +

This is the basic or minimal theming option, where you define:

+ + + +

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
+ 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.
+ combined with a complementary background color, to create this effect in the header
+ A single image theme using the weta.png image

+ +

See details about this theme in the themes example weta_fade.

+ +

Obviously, you can still provide a single wide image if you prefer.

+ +

Multiple image themes

+ +

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.

+ +

Depending on the effect you want to create you may need to suppress the mandatory "headerURL": 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
+ 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.
+ to create this effect
+ A single image theme using the additional images option to align an image to the center of the heading and tile it.
+ Here you specify the weta image like this:

+ +
"images": {
+  "headerURL": "empty.png",
+  "additional_backgrounds": [ "weta_for_tiling.png"]
+},
+ +

and the images tiling with:

+ +
"properties": {
+  "additional_backgrounds_alignment": [ "top" ],
+  "additional_backgrounds_tiling": [ "repeat"  ]
+},
+ +

Full details of how to setup this theme can be found in the themes example weta_tiled. Full detais of the alignment and tiling options can be found in the "theme" key description.

+ +

Alternatively, you can use multiple images, say combining the original weta image with this one anchored to the left of the header
+ 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.
+ to create this effect
+ A theme using the additional images option to place two mirrored image to the left and right of the browser header.

+ +

Where the images are specified with:

+ +
"images": {
+  "headerURL": "empty.png",
+  "additional_backgrounds": [ "weta.png", "weta-left.png"]
+},
+ +

and their alignment by:

+ +
"properties": {
+  "additional_backgrounds_alignment": [ "right top" , "left top" ]
+},
+ +

Full details of how to setup this theme can be found in the themes example weta_mirror. Full detais of the alignment options can be found in the "theme" key description.

+ +

Static animated themes

+ +

It is possible to create an animated theme using an APNG format image, as in the themes example animated. However, remember that rapid animations, such as the one in the example might be too distracting for a practical theme.

+ +

You can also animate themes programmatically, which we discuss in Dynamic themes.

+ +

Dynamic themes

+ +

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:

+ + + +

And, obviously, you can combine the two and bundle a programmatically controlled theme with your extension.

+ +

Using the {{WebExtAPIRef("theme")}} API is straightforward. First, request "theme" permission in the extension's manifest.json 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.

+ +

For example, the following code, from the dynamic theme example defines the content for the day and night elements of the dynamic theme:

+ +
const themes = {
+  'day': {
+    images: {
+     headerURL: 'sun.jpg',
+    },
+    colors: {
+     accentcolor: '#CF723F',
+     textcolor: '#111',
+    }
+  },
+  'night': {
+    images: {
+     headerURL: 'moon.jpg',
+    },
+    colors: {
+     accentcolor: '#000',
+     textcolor: '#fff',
+    }
+  }
+};
+ +

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:

+ +
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]);
+}
+ +

Learn more about dynamic themes and see an additional example in the following video:

+ +

{{EmbedYouTube("ycckyrUN0AY")}}

+ +

 

+ +

If you have not built a browser extension before, check out Your first extension for a step-by-step guide.

+ +

Cross browser compatibility

+ +

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.

+ +

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:

+ + + +

Noting that "frame": and "tab_text": support RGB color definition only.

+ +

So, in the single image theme example (weta_fade) could be supported in Chrome using the following manifest.json file:

+ +
{
+  "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 ]
+    }
+  }
+}
+ +

However, there will be a couple of differences:

+ + + +

The basic theme example using the Chrome compatible manifest.json keys, showing the differences in how those keys are implemented.

+ +

For more information, see the notes on Chrome compatibility.

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 +--- +
{{AddonSidebar}}
+ +

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 :

+ + + +

Dans WebExtensions, ces types de boutons s’appellent « actions du navigateur » et sont configurés de la manière suivante :

+ + + +

Un bouton simple

+ +

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 https ://developer.mozilla.org dans un nouveau onglet.

+ +

Tout d’abord, créez un nouveau dossier, « bouton », et créez un fichier appelé « manifest.json » à l’intérieur avec le contenu suivant :

+ +
{
+
+  "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"
+    }
+  }
+
+}
+ +

Cela spécifie que nous aurons un script en arrière‐plan 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 ».

+ +
+
Ces icônes proviennent des bits ! icônes créées parRecep Kütük.
+
+ +

Ensuite, créez un dossier « icons » dans le dossier « buttons » et enregistrez les deux icônes ci‐dessous :

+ + + +
+ +

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.

+ +

Ensuite, créez « background.js » dans le répertoire racine de l’add‐on, et donnez‐lui le contenu suivant :

+ +
function openPage() {
+  browser.tabs.create({
+    url: "https://developer.mozilla.org"
+  });
+}
+
+browser.browserAction.onClicked.addListener(openPage);
+ +

Cela écoute l’événement de clic de l’action du navigateur ; Lorsque l’événement se déclenche, la fonction openPage() est exécuté, ce qui ouvre la page spécifiée à l’aide de l’API des onglets.

+ +

A ce point, l’extension complète devrait ressembler à ceci :

+ +
button/
+    icons/
+        page-16.png
+        page-32.png
+    background.js
+    manifest.json
+ +

Maintenant installer la WebExtension et cliquez sur le bouton :

+ +

{{EmbedYouTube("kwwTowgT‐Ys")}}

+ +

Ajout d’une fenêtre contextuelle

+ +

Essayons d’ajouter une fenêtre contextuelle au bouton. Remplacez manifest.json par ceci :

+ +
{
+
+  "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"
+    }
+  }
+
+}
+ +

Nous avons fait trois changements par rapport à l’original :

+ + + +

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 :

+ +
<!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>
+ +

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.

+ +

Créez un fichier appelé « choose_page.css » dans le répertoire « popup » et donnez‐lui ce contenu :

+ +
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;
+}
+ +

C'est juste un peu d’habillage pour notre popup.

+ +

Ensuite, créez un fichier « choose_page.js » dans le répertoire « popup » et donnez‐le à ces contenus :

+ +
document.addEventListener("click", function(e) {
+  if (!e.target.classList.contains("page-choice")) {
+    return;
+  }
+
+  var chosenPage = "https://" + e.target.textContent;
+  browser.tabs.create({
+    url: chosenPage
+  });
+
+});
+ +

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.

+ +

La structure finale de l’add‐on devrait ressembler à ceci :

+ +
button/
+    icons/
+        page-16.png
+        page-32.png
+    popup/
+        choose_page.css
+        choose_page.html
+        choose_page.js
+    manifest.json
+ +

Maintenant, rechargez l’extension, cliquez de nouveau sur le bouton et essayez de cliquer sur les choix dans la fenêtre contextuelle :

+ +

{{EmbedYouTube("QPEh1L1xq0Y")}}

+ +

Actions de page

+ +

Les actions de page 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.

+ +

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.

+ +

Pour en savoir plus

+ + diff --git "a/files/fr/mozilla/add-ons/webextensions/ajouter_une_page_de_param\303\250tres/index.html" "b/files/fr/mozilla/add-ons/webextensions/ajouter_une_page_de_param\303\250tres/index.html" new file mode 100644 index 0000000000..9635785e5d --- /dev/null +++ "b/files/fr/mozilla/add-ons/webextensions/ajouter_une_page_de_param\303\250tres/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 +--- +
{{AddonSidebar}}
+ +

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.

+ +

Avec les WebExtensions, les paramètres sont généralement stockés en utilisant l'API storage. L'ajout d'une page de paramètres se fait en trois étapes :

+ + + +
+

Vous pouvez aussi ouvrir cette page automatiquement en utilisant la fonction runtime.openOptionsPage().

+
+ +

Une WebExtension simple

+ +

Tout d'abord, nous allons écrire une extension qui ajoute une bordure bleue à chaque page visitée par l'utilisateur.

+ +

Créez un nouveau dossier nommé "settings", dans lequel vous créez un fichier appelé "manifest.json" ayant pour contenu :

+ +
{
+
+  "manifest_version": 2,
+  "name": "Settings example",
+  "version": "1.0",
+
+  "content_scripts": [
+    {
+      "matches": ["<all_urls>"],
+      "js": ["borderify.js"]
+    }
+  ]
+
+}
+ +

Les instructions de l'extension charge au navigateur un script de contenu nommé "borderify.js" dans chaque page que l'utilisateur visite.

+ +

Ensuite, créez un fichier nomé "borderify.js" dans le dossier "paramètres", et remplissez le comme suit :

+ +
document.body.style.border = "10px solid blue";
+ +

Ça ajoute une bordure bleue à la page.

+ +

Maintenant, installez la WebExtension et testez la — ouvrez la page que vous voulez :

+ +

{{EmbedYouTube("E-WUhihF8fw")}}

+ +

Ajouter des paramètres

+ +

Maintenant, créez une page de paramètres pour autoriser l'utilisateur à définire la couleur de la bordure.

+ +

D'abord, mettez à jour le contenu de "manifest.json" avec ceci :

+ +
{
+
+  "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",
+    }
+  }
+
+}
+
+ +

Vous avez ajoutez trois nouvelles clés :

+ + + +

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 :

+ +
<!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>
+
+ +

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".

+ +

Créez "options.js", lui-aussi dans le dossier "settings", et remplissez le comme ceci :

+ +
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);
+
+ +

Cela fait deux choses :

+ + + +

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.

+ +
+

Notez que l'implémentation de storage.sync dans Firefox repose sur l'ID du module complémentaire. Si vous utilisez storage.sync,  vous devez définir un ID pour votre extension à l'aide de la clé manifest.json des applications  comme indiqué dans l'exemple de manifeste ci-dessus.

+
+ +

Finalement, mettez à jour "borderify.js" pour lire la couleur de la bordure depuis le stockage :

+ +
+

A cause d'un bug dans browser.storage.local.get() 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'item.color dans onGot() doivent être changer pour item[0].color.

+
+ +
 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);
+
+ +

A ce moment, l'extension complète devrait ressembler à ceci :

+ +
settings/
+    borderify.js
+    manifest.json
+    options.html
+    options.js
+ +

Maintenant :

+ + + +

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.

+ +

{{EmbedYouTube("ECt9cbWh1qs")}}

+ +

Pour aller plus loin

+ + 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 +--- +
{{AddonSidebar()}}
+ +

Si vous avez développé un module complémentaire à une application de bureau, vous pouvez installer le module complémentaire de plusieurs façons :

+ + + +

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 :

+ + + +

En revanche, le chargement de fichiers à l'aide des dossiers d'extension standard ou du registre Windows 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 désactiver l'installation automatique. Vous pouvez mettre à jour la configuration de Firefox pour éviter ces problèmes, mais ce n'est pas recommandé.

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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Extensions signées et non signées

+ +

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 Developer Edition, Nightly, et ESR de firefox, après avoir basculé la préférence xpinstall.signatures.required dans about:config.

+ +

Si vous souhaitez installer des modules complémentaires non signés, le déploiement d'une version ESR 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.

+ +

L'approche alternative et recommandée, est d'utiliser l'option pour les add-ons non listés sur addons.mozilla.org (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.

+ +

Chargement latéral

+ +

Vous pouvez charger un module complémentaire à l'aide de l'un des dossiers d'extension standard, comme décrit dans Installation à l'aide de dossiers d'extension standard.

+ +

Installation à l'aide du registre Windows

+ +

Cette section explique comment installer des modules complémentaires dans Firefox en utilisant le registre Windows.

+ +
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. +

À 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.

+
+ +
+

Il est prudent de modifier les clés de registre pendant que Firefox est en cours d'exécution.

+
+ +
    +
  1. 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 your-add-on-name@your-domain.com with par un ID approprié pour votre module complémentaire : + +
    "applications": {
    +   "gecko": {
    +     "id": "your-add-on-name@your-domain.com"
    +   }
    +  }
    + Un identifiant de style d'adresse e-mail est recommandé.
  2. +
  3. Signez votre module dans AMO en utilisant l'option non listée. Pour plus de détails, voir Signature et distribution de votre module complémentaire.
  4. +
  5. Téléchargez le fichier XPI signé et assurez-vous que le nom de fichier est l'ID du module plus l'extension .xpi.  Par exemple, c:/webext/borderify@example.com.xpi
  6. +
  7. Ouvrez Regedit et ajoutez les clés comme suit : +
      +
    • Ajoutez à tous les utilisateurs de l'ordinateur les clés de registre suivantes : +
      HKEY_LOCAL_MACHINE\Software\Mozilla\Firefox\Extensions
      + +

      ou

      + +
      HKEY_LOCAL_MACHINE\Software\Wow6432Node\Mozilla\Firefox\Extensions
      + +
      +

      HKEY_LOCAL_MACHINE\Software\Mozilla\Firefox\Extensions 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é  Wow6432Node.

      +
      +
    • +
    • Pour l'utilisateur actuel, ajoutez à la clé de registre suivante : +
      HKEY_CURRENT_USER\Software\Mozilla\Firefox\Extensions
      +
    • +
    +
  8. +
  9. 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, c:/webext/borderify@example.com.xpi.
  10. +
  11. 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 les paramètres de Firefox.)
  12. +
+ +

Si le même add-on apparaît sous HKEY_CURRENT_USER et HKEY_LOCAL_MACHINE, l'instance sous HKEY_CURRENT_USER 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.

+ +

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.

+ +

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.

+ +

Les paramètres de Firefox

+ +

Deux paramètres affectent l'utilisation d'options d'installation alternatives. La préférence extensions.autoDisableScopes détermine si les modules complémentaires sont installés automatiquement ou après confirmation de l'utilisateur. La préférence extensions.enabledScopes 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.

+ +

Contrôler l'installation automatique

+ +

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 :

+ + + +

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..

+ +

La disponibilité de l'installation automatique est contrôlée par la préférence et le comportement extensions.autoDisableScopes définis par les valeurs suivantes :

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ValeurInstallation du champ
1 (or '0b0001')Le profil de l'utilisateur actuel.
2 (or '0b0010')Tous les profils de l'utilisateur connecté
4 (or '0b0100')Installé et détenu par Firefox.
8 (or '0b1000')Installé pour tous les utilisateurs de l'ordinateur.
15 (or '0b1111')La combinaison de tous les champs d'application.
+
+ +

Par défaut, extensions.autoDisableScopes 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.

+ +

Désactivation des emplacements d'installation

+ +

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 extensions.enabledScopes. 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 préférence manuellement ou la faire par programmation en suivant les instructions de la section suivante.

+ +
+

Il est impossible de désactiver le chargement de modules complémentaires à partir du répertoire de profil.

+
+ +

Définir les préférences d'étendue par programme

+ +

Utilisez la logique suivante pour définir les valeurs de extensions.autoDisableScopes et extensions.enabledScopes par programme pour vous assurer que les modules complémentaires sont installés automatiquement :

+ +
    +
  1. Editez le fichier de configuration administratif.
  2. +
  3. Vérifiez la présence de lignes définissant les préférences  extensions.autoDisableScopes et/ou extensions.enabledScopes et remplacez-les / ajoutez-les si nécessaire.
  4. +
  5. 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 : +
    defaultPref("extensions.autoDisableScopes", 0);
    +defaultPref("extensions.enabledScopes", 15);
    +// Or use binary value like this
    +defaultPref("extensions.enabledScopes", 0b1111);
    +
  6. +
+ +
+

Selon cette page : (en date du 28 septembre 2012)
+ “Vous ne pouvez pas définir cette préférence à distance en utilisant les fichiers autoconfig.”
+ Ce qui vous recommande de définir uniquement ces préférences dans un fichier autoconfig local.
+ Si cette information est erronée, ajustez ou supprimez cette note.

+
+ +

Regroupement de modules complémentaires avec un Firefox personnalisé

+ +

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 Personnalisation de Firefox pour plus de détails.

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 +--- +
{{AddonSidebar()}}
+ +

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 addons.mozilla.org (AMO) (pour les add-ons listés) ou un téléchargement configuré par un développeur (pour les add-ons non listés).

+ +

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.

+ +

Signature de votre extension

+ +

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.

+ +

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.

+ +

Les extensions non signées peuvent être installées dans les versions Developer Edition, Nightly, et ESR de Firefox, après avoir activé la préférence xpinstall.signatures.required dans  about:config.

+ +

Mozilla signe les extensions de navigateur via le site Web de AMO. Il y a trois façons de soumettre votre extension pour signature :

+ +
    +
  1. téléchargez votre add-on via le Developer Hub sur AMO.
  2. +
  3. utilisez l' API de signature addons.mozilla.org.
  4. +
  5. utilisez le signé web-ext.
  6. +
+ +

Toutes les options de signature sont soumises à l'accord de distribution du module complémentaire Firefox.

+ +

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.

+ +

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.

+ +

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 polique complémentaire.

+ +

Distribuer votre extension

+ +

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 :

+ + + +

Pour plus d'informations sur la façon de soumettre un add-on pour distribution sur AMO ou auto-distribution, voir Soumettre une extension.

+ +

Autres options de distribution

+ +

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.

+ + 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 +--- +
{{AddonSidebar()}}
+ +

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 :

+ + + +
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.
+ +

Preparation de votre extension

+ +

Indépendamment de la méthode de chargement latéral utilisée, vous devez préparer l'extension comme suit :

+ +
    +
  1. Assurez-vous que le module complémentaire inclut un ID, en ajoutant ce qui suit à son fichier manifest.json, en remplaçant votre your-add-on-name@your-domain.com par un ID  approprié dans vote mode complémentaire : + +
    "applications": {
    +  "gecko": {
    +    "id": "your-add-on-name@your-domain.com"
    +  }
    +}
    +
    + Un identifiant de style d'adresse e-mail est recommandé.
  2. +
  3. Signez le module complémentaire dans addons.mozilla.org (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 Signature et distribution de votre module complémentaire.
  4. +
+ +

Utilisation de l'option Installer le module à partir d'un fichier

+ +

Pour utiliser Installer le module complémentaire à partir d'un fichier dans le gestionnaire de modules complémentaire, send the user the signed add-on with the following instructions:

+ +
    +
  1. Enregistrez le fichier complémentaire à un emplacement approprié sur votre ordinateur.
  2. +
  3. Dans Firefox, ouvrir le menu Firefox Firefox browser menu button et cliquez sur Add-ons.
  4. +
  5. Dans les paramètres de cog, ouvrez Installer le module complémentaire à partir du fichier :
    + Add-on Manager utilities cog
  6. +
  7. Recherchez et ouvrez le fichier à partir de l'emplacement où il a été enregistré.
  8. +
  9. Lorsque vous y êtes invité, cliquez sur Ajouter :
    + Message asking user to confirm the installation of the add-on
  10. +
  11. 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é :
    + After installation the add-on is listed in the add-on manager
  12. +
+ +

Installation à l'aide des dossiers d'extension standard

+ +

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  Contrôle de l'installation automatique.

+ +

Renommez votre fichier XPI

+ +

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 Préparation de votre module complémentaire. 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 Signature et distribution de votre module complémetaire pour plus de détails), modifiez-le par exemple borderify@example.com.xpi.

+ +
+

Si vous développez un module complémentaire pour Firefox vous pouvez utiliser un fichier proxy d'extensions pour installer un module complémentaire sans copier les fichiers dans les dossiers d'extension standard.

+
+ +

Ajoutez le fichier d'extension XPI dans un dossier d'extensions commun.

+ +

Dans ce qui suit {ec8030f7-c20a-464f-9b0e-13a3a9e97384} est l'identifiant de l'application de Firefox.  

+ +

L'installation standard de Firefox désactive l'installation automatique de modules complémentaires à partir de ces emplacements (voir Contrôle de l'installation automatique). Par conséquent, le processus pour chacune des méthodes décrites ci-dessous est le suivant :

+ + + +

Pour plus de détails sur les installations interstitielles et silencieuses, voir Contrôle de l'installation automatique.

+ +
+

Pour désinstaller le module complémentaire, fermez Firefox et supprimez le module complémentaire de l'emplacement où il a été ajouté.

+
+ +

Windows

+ +

Pour installer le module complémentaire pour un utilisateur de l'ordinateur, copiez le fichier XPI dans :

+ +
C:\Users\<user name>\AppData\Roaming\mozilla\Extensions\\{ec8030f7-c20a-464f-9b0e-13a3a9e97384}\
+ +

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.

+ +
+

Remarque : Pour installer un module complémentaire pour tous les utilisateurs d'un ordinateur Windows, voir Installation à l'aide du registre Windows.

+
+ +

OSX

+ +

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.

+ +
/Library/Application Support/mozilla/Extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/
+ +

Pour installer un module complémentaire pour un utilisateur spécifique, copiez le fichier XPI dans la bibliothèque locale de l'utilisateur :

+ +
~/Library/Application Support/mozilla/Extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/
+ +

Linux

+ +

Pour installer un module complémentaire utilisé par tous les utilisateurs, copiez le fichier XPI dans :

+ +
/usr/lib/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/
+ +

Ou...

+ +
/usr/lib64/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/
+ +

Ou...

+ +
/usr/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/
+ +

Pour installer un module complémentaire pour un utilisateur spécifique, copiez le fichier XPI dans :

+ +
~/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/
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 +--- +
{{AddonSidebar}}
+ +

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.

+ +

manifest.json

+ +

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.

+ +

Ce manifeste peut également contenir des pointeurs vers plusieurs autres types de fichiers :

+ + + +

+ +

Voir la page référence manifest.json pour tous les détails.

+ +

En plus de celles déjà listées dans le manifeste, une extension peut également inclure des pages d'extensions supplémentaires et des fichiers de support.

+ +

Scripts d'arrière-plan

+ +

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.

+ +

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 WebExtension APIs dans le script, tant que vous avez demandé les permissions nécessaires.

+ +

Spécifier les scripts d'arrière-plan

+ +

Vous pouvez inclure un script d'arrière-plan à l'aide de la clé background dans "manifest.json" :

+ +
// manifest.json
+
+"background": {
+  "scripts": ["background-script.js"]
+}
+ +

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.

+ +

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 :

+ +

manifest.json

+ +
// manifest.json
+
+"background": {
+  "page": "background-page.html"
+}
+ +

background-page.html

+ +
<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <script type="module" src="background-script.js"></script>
+  </head>
+</html>
+ +

Environnement des scripts d'arrière-plan

+ +

APIs DOM

+ +

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 fenêtre globale, ainsi que toutes les API DOM standard fournies par cet objet.

+ +
+

 Dans Firefox, les pages d'arrière-plan ne supportent pas l'utilisation de alert(), confirm(), ou prompt().

+
+ +

APIs des WebExtensions

+ +

Les scripts d'arrière-plan peuvent utiliser l'une des APIs des WebExtensions dans le script, à condition que leur extension dispose des permissions nécessaires.

+ +

Cross-origin access

+ +

Les scripts d'arrière-plan peuvent faire des requêtes XHR à tous les hôtes pour lesquels ils ont des permissions d'hôte.

+ +

Contenu Web

+ +

Les scripts d'arrière-plan n'obtiennent pas un accès direct aux pages Web. Toutefois,  ils peuvent charger des scripts de contenu dans les pages Web et peuvent communiquer avec ces scripts de contenu à l'aide d'une API de communication.

+ +

Politique de sécurité du contenu

+ +

Les scripts d'arrière-plan sont restreints à certaines opérations pour lutter contre d'autres potentiellement dangereuses, comme l'utilisation de la fonction eval(), par le biais d'une politique de sécurité du contenu. Pour plus de détails, consultez la politique de sécurité du contenu.

+ + + +

Votre extension peut inclure divers composants d'interface utilisateur dont le contenu est défini à l'aide d'un document HTML :

+ + + +

Pour chacun de ces composants, vous créez un fichier HTML et pointez vers lui en utilisant une propriété spécifique dans manifest.json. Le fichier HTML peut inclure des fichiers CSS et JavaScript, tout comme une page Web normale.

+ +

Toutes ces pages sont un type de pages d'extension,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()")}}.

+ +

Page d'extension

+ +

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.

+ +

Vous chargerez typiquement une page comme celle-ci en utilisant  {{WebExtAPIRef("windows.create()")}} ou {{WebExtAPIRef("tabs.create()")}}.

+ +

Voir les pages d'extension pour en savoir plus.

+ +

Scripts de contenu

+ +

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.

+ +

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.

+ +

Les scripts de contenu peuvent voir et manipuler le DOM de la page, tout comme les scripts normaux chargés par la page.

+ +

Contrairement aux scripts de pages normales, ils peuvent :

+ + + +

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 window.postMessage().

+ +

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.

+ +

Voir l'article de scripts de contenu pour en savoir plus.

+ +

Rendre accessible des ressources web

+ +

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.

+ +

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 src ciblant le fichier via le schéma spécifique.

+ +

Pour en savoir plus, se référer à la documentation de la clé web_accessible_resources du fichier manifest.json.

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 +--- +
{{AddonSidebar}}
+ +

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')}}.

+ +

Type

+ +

Les valeurs de ce type sont des objets contenant les propriétés suivantes :

+ +
+
name
+
string 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.
+
scheduledTime
+
double Un nombre qui représente l'heure à laquelle l'alarme doit être déclenchée, exprimée en nombre de millisecondes depuis epoch.
+
periodInMinutes{{optional_inline}}
+
double Un nombre qui, s'il n'est pas null, indique que l'alarme est périodique et fournit la période.
+
+ +

Compatibilité des navigateur

+ + + +

{{Compat("webextensions.api.alarms.Alarm")}}

+ +

{{WebExtExamples}}

+ +
<Remerciements : + +

Cette API est basée sur l'API Chromium chrome.alarms.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar}}
+ +

Cette méthode supprime une alarme à partir du nom passé en argument. Il s'agit d'une fonction asynchrone qui renvoie une {{jsxref("Promise")}}.

+ +

Syntaxe

+ +
var clearAlarm = browser.alarms.clear(
+  name // string
+);
+
+ +

Paramètres

+ +
+
name{{optional_inline}}
+
string. Le nom de l'alarme à supprimer. Si le paramètre n'est pas fourni, c'est la chaîne vide "" qui sera utilisée.
+
+ +

Valeur de retour

+ +

Une promesse ({{jsxref("Promise")}}) qui sera tenue avec un booléen. Ce booléen vaudra true si l'alarme a bien été effacée et false sinon.

+ +

Exemples

+ +
function onCleared(wasCleared) {
+  console.log(wasCleared);  // true/false
+}
+
+var clearAlarm = browser.alarms.clear("my-periodic-alarm");
+clearAlarm.then(onCleared);
+ +

{{WebExtExamples}}

+ +

 

+ +

Compatibilité des navigateurs

+ + + +

{{Compat("webextensions.api.alarms.clear")}}

+ +

 

+ +
<Remerciements : + +

Cette API est basée sur l'API Chromium chrome.alarms.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar}}
+ +

Cette méthode supprime toutes les alarmes actives. C'est une fonction asynchrone qui renvoie une promesse {{jsxref("Promise")}}.

+ +

Syntaxe

+ +
var clearAlarms = browser.alarms.clearAll()
+
+ +

Paramètres

+ +

Aucun.

+ +

Valeur de retour

+ +

Une promesse ({{jsxref("Promise")}}) qui sera tenue avec une valeur booléenne. Ce dernier vaudra true si certaines alarmes ont bien été effacées et false sinon. On notera que Chrome renvoie toujours true.

+ +

Exemples

+ +
function onClearedAll(wasCleared) {
+  console.log(wasCleared);  // true/false
+}
+
+var clearAlarms = browser.alarms.clearAll();
+clearAlarms.then(onClearedAll);
+ +

{{WebExtExamples}}

+ +

 

+ +

Compatibilité des navigateurs

+ + + +

{{Compat("webextensions.api.alarms.clearAll")}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.alarms.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Syntaxe

+ +
browser.alarms.create(
+  name,        // une valeur string optionnelle
+  alarmInfo    // une valeur object optionnelle
+)
+
+ +

Paramètres

+ +
+
name{{optional_inline}}
+
string. Le nom utilisé pour l'alarme. Par défaut, la chaîne utilisée sera la chaîne vide.
+
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é name de l'objet {{WebExtAPIRef('alarms.Alarm')}} passé au gestionnaire d'évènement.
+
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.
+
alarmInfo{{optional_inline}}
+
+

object. Un objet de configuration qui indique le moment du premier déclenchement comme valeur absolue (when) ou relative (delayInMinutes). Pour que l'alarme se repète, on utilisera le champ periodInMinutes.

+ +

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 delayInMinutes 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 periodInMinutes avec une valeur strictement inférieure à 1, l'alarme se déclenchera alors chaque minute.

+ +

L'objet alarmInfo peut contenir les propriétés suivantes :

+
+
+
+
when{{optional_inline}}
+
double. Le moment où l'alarme se déclenchera en premier. L'instant est indiquée comme une valeur absolue, exprimée en millisecondes depuis epoch. 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 delayInMinutes.
+
delayInMinutes{{optional_inline}}
+
double. 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 when.
+
periodInMinutes{{optional_inline}}
+
double. Si cette valeur est indiquée, l'alarme sera répétée périodiquement (toutes les periodInMinutes minutes) après le premier déclenchement. Si cette valeur est indiquée, il n'est pas obligatoire de fournir when ou delayInMinutes : l'alarme se déclenchera au bout de periodInMinutes. Si periodInMinutes n'est pas indiquée, l'alarme ne se déclenchera qu'une seule fois.
+
+
+
+ +

Exemples

+ +

Alarme vide

+ +
const delayInMinutes = 5;
+
+browser.alarms.create({
+  delayInMinutes
+});
+ +

Alarme relative périodique

+ +
const delayInMinutes = 5;
+const periodInMinutes = 2;
+
+browser.alarms.create("my-periodic-alarm", {
+  delayInMinutes,
+  periodInMinutes
+});
+ +

Alarme périodique absolue

+ +
const when = 1545696000;
+const periodInMinutes = 2;
+
+browser.alarms.create("my-periodic-alarm", {
+  when,
+  periodInMinutes
+});
+ +
+
+
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.alarms.create")}}

+ + + +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.alarms.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar}}
+ +

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")}}).

+ +

Syntaxe

+ +
var getAlarm = browser.alarms.get(
+  name  // optional string
+)
+
+ +

Paramètres

+ +
+
name{{optional_inline}}
+
string. 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 ("").
+
+ +

Valeur de retour

+ +

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 name. Si aucune alarme ne correspond, la valeur renvoyée sera undefined.

+ +

Exemples

+ +
function gotAlarm(alarm) {
+  if (alarm) {
+    console.log(alarm.name);
+  }
+}
+
+var getAlarm = browser.alarms.get("my-periodic-alarm");
+getAlarm.then(gotAlarm);
+ +

{{WebExtExamples}}

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.alarms.get")}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.alarms.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar}}
+ +

Obtient toutes les alarmes actives pour le poste.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var getAlarms = browser.alarms.getAll()
+
+ +

Paramètres

+ +

Aucun

+ +

Valeur de retour

+ +

Une Promise dont la valeur de résolution sera un tableau d'objets Alarm. Chaque élément de ce tableau représente une alarme active de l'extension. Si aucune alarme n'est active, le tableau sera vide.

+ +

Exemples

+ +
function gotAll(alarms) {
+  for (var alarm of alarms) {
+    console.log(alarm.name);
+  }
+}
+
+var getAlarms = browser.alarms.getAll();
+getAlarms.then(gotAll);
+ +

{{WebExtExamples}}

+ +

 

+ +

Compatibilité des navigateurs

+ + + +

{{Compat("webextensions.api.alarms.getAll")}}

+ +

 

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.alarms.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar}}
+ +

Programmer le code pour qu'il soit exécuté à un moment précis dans le futur. C'est comme setTimeout() and setInterval() 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

+ +

Pour pouvoir utiliser cette API, vous devez disposer de la permission "alarms".

+ +

Types

+ +
+
{{WebExtAPIRef("alarms.Alarm")}}
+
Ce type permet d'obtenir des informations à propos d'une alarme donnée.
+
+ +

Méthodes

+ +
+
{{WebExtAPIRef("alarms.create()")}}
+
Cette fonction permet de créer une nouvelle alarme.
+
{{WebExtAPIRef("alarms.get()")}}
+
Cette fonction permet de récupérer une alarme donnée en fonction de son nom.
+
{{WebExtAPIRef("alarms.getAll()")}}
+
Cette fonction permet de récupérer l'ensemble des alarmes qui sont planifiées.
+
{{WebExtAPIRef("alarms.clear()")}}
+
Cette fonction permet de supprimer une alarme donnée en fonction de son nom.
+
{{WebExtAPIRef("alarms.clearAll()")}}
+
Cette fonction permet de supprimer l'ensemble des alarmes qui sont planifiées.
+
+ +

Évènements

+ +
+
{{WebExtAPIRef("alarms.onAlarm")}}
+
Cet évènement est déclenché lorsque l'alarme s'éteint.
+
+ +

{{WebExtExamples("h2")}}

+ +

Compatibilité des navigateurs

+ +

{{Compat("webextensions.api.alarms")}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.alarms.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar}}
+ +

Cet évènement est déclenché lorsque l'alarme se déclenche.

+ +

Syntaxe

+ +
browser.alarms.onAlarm.addListener(listener)
+browser.alarms.onAlarm.removeListener(listener)
+browser.alarms.onAlarm.hasListener(listener)
+
+ +

Cet évènement possède trois méthodes :

+ +
+
addListener(listener)
+
Cette méthode ajoute un gestionnaire à l'évènement.
+
removeListener(listener)
+
Cette méthode retire le gestionnaire d'évènement passé en argument.
+
hasListener(listener)
+
Cette méthode permet de vérifier si le gestionnaire d'évènement passé en argument est enregistré : elle renvoie true s'il est déjà présent et false sinon.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
listener
+
+

La fonction qui sera appelée lorsque l'événement se produira. La fonction recevra les arguments suivants :

+ +
+
alarm
+
{{WebExtAPIRef('alarms.Alarm')}}. L'alarme qui s'est déclenchée. La propriété Alarm.name pourra être utilisée afin de déterminer l'alarme qui s'est déclenchée.
+
+
+
+ +

Exemples

+ +

Voici un exemple illustrant ce qui se produit quand l'alarme se déclenche

+ +
function handleAlarm(alarmInfo) {
+  console.log("L'alarme " + alarmInfo.name + " s'est déclenchée");
+}
+
+browser.alarms.onAlarm.addListener(handleAlarm);
+ +

{{WebExtExamples}}

+ +

 

+ +
+
+
+
+
+
+ +

Compatibilité des navigateurs

+ + + +

{{Compat("webextensions.api.alarms.onAlarm")}}

+ +

 

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.alarms.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar()}}
+ +

Un objet de type bookmarks.BookmarkTreeNode 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 index dans leurs dossiers parents respectifs.

+ +

Type

+ +

Un {{jsxref("object")}} avec les propriétés suivantes :

+ +
+
children {{optional_inline}}
+
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.
+
dateAdded {{optional_inline}}
+
Un nombre représentant la date de création du noeud en millisecondes depuis l'époque.
+
dateGroupModified {{optional_inline}}
+
Un nombre représentant la date et l'heure de la dernière modification du contenu de ce dossier, en millisecondes depuis l'époque.
+
id
+
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.
+
index {{optional_inline}}
+
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.
+
parentId {{optional_inline}}
+
Un {{jsxref("string")}} qui spécifie l'ID du dossier parent. Cette propriété n'est pas présente dans le noeud racine.
+
title
+
Un {{jsxref("string")}} qui contient le texte affiché pour le nœud dans les menus et les listes de signets.
+
type{{optional_inline}}
+
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 "bookmark" sauf si l'url est omise, auquel cas elle est par défaut "folder".
+
unmodifiable {{optional_inline}}
+
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.
+
url {{optional_inline}}
+
Un {{jsxref("string")}} qui représente l'URL du signet. Si le nœud représente un dossier, cette propriété est omise.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.bookmarks.BookmarkTreeNode", 10)}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.bookmarks. Cette documentation provient de  bookmarks.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Le type bookmarks.BookmarkTreeNodeType est utilisé pour décrire si un nœud de l'arborescence de signets est un signet, un dossier ou un séparateur.

+ +

Type

+ +

bookmarks.BookmarkTreeNodeType est un {{jsxref("string")}}qui peut avoir l'une des trois valeurs suivantes :

+ + + +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.bookmarks.BookmarkTreeNodeType", 10)}}

+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Un type bookmarks.BookmarkTreeNodeUnmodifiable 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.

+ +

Type

+ +

bookmarks.BookmarkTreeNodeUnmodifiable est un {{jsxref("string")}} qui ne peut actuellement avoir qu'une seule valeur : "managed". 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).

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.bookmarks.BookmarkTreeNodeUnmodifiable")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.bookmarks. Cette documentation provient de  bookmarks.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Crée un signet ou un dossier en tant qu'enfant de {{WebExtAPIRef("bookmarks.BookmarkTreeNode", "BookmarkTreeNode")}} avec  parentId spécifié. Pour créer un dossier, omettez ou laissez vide le paramètre  {{WebExtAPIRef("bookmarks.CreateDetails", "CreateDetails", "url")}}.

+ +
+

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: "La racine du signet ne peut pas être modifiée" et le signet ne sera pas créé.

+
+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var createBookmark = browser.bookmarks.create(
+  bookmark                  // CreateDetails object
+)
+
+ +

Paramètres

+ +
+
bookmark
+
Un objet {{WebExtAPIRef("bookmarks.CreateDetails")}}.
+
+ +

Valeur retournée

+ +

Une Promise qui sera remplie avec un {{WebExtAPIRef('bookmarks.BookmarkTreeNode', 'BookmarkTreeNode')}} qui décrit le nouveau noeud de marque pages.

+ +

Exemples

+ +

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).

+ +
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);
+ +

{{WebExtExamples}}

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.bookmarks.create")}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.bookmarks. Cette documentation provient de  bookmarks.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Le type CreateDetails 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()")}}.

+ +

Type

+ +

Un {{jsxref("object")}} contenant une combinaison des champs suivants :

+ +
+
index {{optional_inline}}
+
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.
+
parentId {{optional_inline}}
+
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.
+
title {{optional_inline}}
+
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 "".
+
type{{optional_inline}}
+
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 "bookmark" sauf si l'url est omise, auquel cas elle est par défaut "folder".
+
url {{optional_inline}}
+
string. Un {{jsxref("string")}} qui spécifie l'URL de la page à mettre en signet. Si ceci est omis ou est null, un dossier est créé à la place d'un signet.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.bookmarks.CreateDetails", 10)}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.bookmarks. Cette documentation provient de  bookmarks.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Étant donné l'ID d'un {{WebExtAPIRef("bookmarks.BookmarkTreeNode")}} ou d'un tableau de ces ID, la méthode bookmarks.get() récupère les nœuds correspondants.

+ +

C'est une fonction asynchrone qui renvoie une {{jsxref("promise")}}.

+ +

Syntaxe

+ +
var getBookmarks = browser.bookmarks.get(
+  idOrIdList                // string or string array
+)
+
+ +

Paramètres

+ +
+
idOrIdList
+
string 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.
+
+ +

Valeur retournée

+ +

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.

+ +

Exemples

+ +

Cet exemple essaie d'obtenir le signet dont l'ID est bookmarkAAAA. Si aucun signet avec cet ID n'existe, onRejected est appelé :

+ +
function onFulfilled(bookmarks) {
+  console.log(bookmarks);
+}
+
+function onRejected(error) {
+  console.log(`An error: ${error}`);
+}
+
+var gettingBookmarks = browser.bookmarks.get("bookmarkAAAA");
+gettingBookmarks.then(onFulfilled, onRejected);
+ +

{{WebExtExamples}}

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.bookmarks.get")}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.bookmarks. Cette documentation provient de  bookmarks.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

bookmarks.getChildren() récupère tous les enfants immédiats d'un dossier de signets donné, identifié comme {{WebExtAPIRef("bookmarks.BookmarkTreeNode", "BookmarkTreeNode")}} ID.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var gettingChildren = browser.bookmarks.getChildren(
+  id                     // string
+)
+
+ +

Paramètres

+ +
+
id
+
Un {{jsxref("string")}} qui spécifie l'ID du dossier dont les enfants doivent être récupérés.
+
+ +

Valeur retournée

+ +

Une Promise qui sera remplie avec un tableau d'objets BookmarkTreeNode. 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.

+ +

Si le noeud spécifié n'a pas d'enfants, le tableau est vide.Si le noeud identifié par id n'est pas trouvé, la promise est rejetée avec un message d'erreur.

+ +

Exemples

+ +
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);
+ +

{{WebExtExamples}}

+ +

 

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.bookmarks.getChildren")}}

+ +

 

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.bookmarks. Cette documentation provient de  bookmarks.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

La méthode bookmarks.getRecent() 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')}}.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var gettingRecent = browser.bookmarks.getRecent(
+  numberOfItems          // integer
+)
+
+ +

Paramètres

+ +
+
numberOfItems
+
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.
+
+ +

Valeur retournée

+ +

Une Promise qui sera remplie avec un tableau d'objets BookmarkTreeNode.

+ +

Exemples

+ +

Cet exemple enregistre l'URL du dernier signet ajouté :

+ +
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);
+ +

{{WebExtExamples}}

+ +

 

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.bookmarks.getRecent")}}

+ +

 

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.bookmarks. Cette documentation provient de  bookmarks.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

La méthode bookmarks.getSubTree() récupère de façon asynchrone un {{WebExtAPIRef("bookmarks.BookmarkTreeNode")}}, étant donné son ID.

+ +

Si l'élément est un dossier, vous pouvez accéder à tous ses descendants de manière récursive en utilisant sa propriété children et la propriété children de ses descendants, s'ils sont eux-mêmes des dossiers.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var gettingSubTree = browser.bookmarks.getSubTree(
+  id                     // string
+)
+
+ +

Paramètres

+ +
+
id
+
Un {{jsxref("string")}} spécifiant l'ID de la racine du sous-arbre à récupérer.
+
+ +

Valeur retournée

+ +

Une Promise 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 à id n'a pas pu être trouvé, la promesse sera rejetée avec un message d'erreur.

+ +

Exemples

+ +

Cet exemple imprime récursivement le sous-arbre sous un noeud donné :

+ +
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);
+ +

{{WebExtExamples}}

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.bookmarks.getSubTree")}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.bookmarks. Cette documentation provient de  bookmarks.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

bookmarks.getTree() renvoie un tableau contenant la racine de l'arborescence des signets en tant qu'objet {{WebExtAPIRef("bookmarks.BookmarkTreeNode")}}.

+ +

Vous pouvez accéder à l'intégralité de l'arborescence de manière récursive en utilisant sa propriété children et la propriété children de ses descendants, s'ils sont eux-mêmes des dossiers.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var gettingTree = browser.bookmarks.getTree()
+
+ +

Paramètres

+ +

None.

+ +

Valeur retournée

+ +

Une Promise qui sera remplie avec un tableau contenant un objet, un objet  bookmarks.BookmarkTreeNode le noeud racine.

+ +

Exemples

+ +

Cet exemple imprime l'intégralité de l'arborescence des signets :

+ +
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);
+
+ +

{{WebExtExamples}}

+ +

 

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.bookmarks.getTree")}}

+ +

 

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.bookmarks. Cette documentation provient de  bookmarks.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar}}
+ +

L’API de la WebExtensions {{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.

+ +

Pour utiliser cette API, une extension doit demander la permission « bookmarks » dans son fichier manifest.json.

+ +

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: "La racine du signet ne peut pas être modifiée"

+ +

Les Types

+ +
+
{{WebExtAPIRef("bookmarks.BookmarkTreeNode")}}
+
Représente un marque-page ou un dossier dans l'arborescence des marque-pages.
+
{{WebExtAPIRef("bookmarks.BookmarkTreeNodeType")}}
+
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.
+
{{WebExtAPIRef("bookmarks.BookmarkTreeNodeUnmodifiable")}}
+
Un {{jsxref("String")}} énumère ce qui spécifie pourquoi un marque-page ou un dossier n’est pas possible.
+
{{WebExtAPIRef("bookmarks.CreateDetails")}}
+
Contient des informations passées à la fonction {{WebExtAPIRef("bookmarks.create()")}} lors de la création d’un nouveau marque-page.
+
+ +

Les fonctions

+ +
+
{{WebExtAPIRef("bookmarks.create()")}}
+
Créer un marque-page ou un dossier.
+
{{WebExtAPIRef("bookmarks.get()")}}
+
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.
+
{{WebExtAPIRef("bookmarks.getChildren()")}}
+
Récupère les enfants spécifiés {{WebExtAPIRef("bookmarks.BookmarkTreeNode", "BookmarkTreeNode")}}.
+
{{WebExtAPIRef("bookmarks.getRecent()")}}
+
Récupère un nombre demandé de marque-page récemment ajoutés.
+
{{WebExtAPIRef("bookmarks.getSubTree()")}}
+
Récupère un nombre demandé de favoris récemment ajoutés.
+
{{WebExtAPIRef("bookmarks.getTree()")}}
+
Récupère l’intégralité de l’arborescence des marques pages dans un tableau d’objets  {{WebExtAPIRef("bookmarks.BookmarkTreeNode", "BookmarkTreeNode")}}.
+
{{WebExtAPIRef("bookmarks.move()")}}
+
Déplace le {{WebExtAPIRef("bookmarks.BookmarkTreeNode", "BookmarkTreeNode")}} vers un nouvel emplacement dans l’arborescence de marque-pages.
+
{{WebExtAPIRef("bookmarks.remove()")}}
+
Supprime un marque page ou un dossier de marque-pages vide, en fonction de l’ID du noeud.
+
{{WebExtAPIRef("bookmarks.removeTree()")}}
+
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.
+
{{WebExtAPIRef("bookmarks.search()")}}
+
Recherche {{WebExtAPIRef("bookmarks.BookmarkTreeNode", "BookmarkTreeNode")}} une correspondant à un ensemble de critères spécifié.
+
{{WebExtAPIRef("bookmarks.update()")}}
+
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.
+
+ +

Events

+ +
+
{{WebExtAPIRef("bookmarks.onCreated")}}
+
Déclenché lorsqu’un marque-page ou un dossier est créé.
+
{{WebExtAPIRef("bookmarks.onRemoved")}}
+
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.
+
{{WebExtAPIRef("bookmarks.onChanged")}}
+
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.
+
{{WebExtAPIRef("bookmarks.onMoved")}}
+
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.
+
{{WebExtAPIRef("bookmarks.onChildrenReordered")}}
+
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()")}}.
+
{{WebExtAPIRef("bookmarks.onImportBegan")}}
+
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.
+
{{WebExtAPIRef("bookmarks.onImportEnded")}}
+
Déclenché lorsqu’une session d’importation de marque-pages est terminée.
+
+ +

Compatibilité des navigateurs

+ +

{{Compat("webextensions.api.bookmarks")}}

+ + + +

{{WebExtExamples("h2")}}

+ +
Remerciements : + +

Cette API est basée sur l’API Chromium chrome.bookmarks. Cette documentation provient de bookmarks.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

La méthode bookmarks.move() 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.

+ +
+

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: "La racine du signet ne peut pas être modifiée" et le déplacement ne sera pas terminé.

+
+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var movingBookmark = browser.bookmarks.move(
+  id,                    // string
+  destination           // object
+)
+
+ +

Paramètres :

+ +
+
id
+
Un {{jsxref("string")}} contenant l'ID du signet ou du dossier à déplacer.
+
destination
+
Un {{jsxref("object")}} qui spécifie la destination du signet. Cet objet doit contenir un ou les deux champs suivants :
+
+
+
parentId {{optional_inline}}
+
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.
+
index {{optional_inline}}
+
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..
+
+
+
+ +

Valeur retournée

+ +

Une Promise qui sera remplie avec un seul objet bookmarks.BookmarkTreeNode  décrivant le noeud déplacé.Si le noeud correspondant au paramètre id ne peut pas être trouvé, la promesse est rejetée avec un message d'erreur.

+ +

Exemples

+ +

Cet exemple déplace un signet afin qu'il soit le premier signet dans son dossier actuel.

+ +
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);
+ +

{{WebExtExamples}}

+ + + +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.bookmarks.move")}}

+ + + +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.bookmarks. Cette documentation provient de  bookmarks.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar}}
+ +

Mise en place quand il y a un changement à :

+ + + +

Syntaxe

+ +
browser.bookmarks.onChanged.addListener(listener)
+browser.bookmarks.onChanged.removeListener(listener)
+browser.bookmarks.onChanged.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
id
+
string. ID de l'article qui a changé.
+
+ +
+
changeInfo
+
object. Objet contenant deux propriétés : title, une chaîne contenant le titre de l'élément et url, une chaîne contenant l'URL de l'élément. Si l'élément est un dossier, l'url est omise.
+
+
+
+ +
+

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'url d'un signet change, le changeInfo ne peut contenir que les nouvelles informations de l'url.

+
+ +

Exemples

+ +
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);
+
+ +

{{WebExtExamples}}

+ + + +
+
+
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.bookmarks.onChanged")}}

+ + + +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.bookmarks. Cette documentation provient de  bookmarks.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Syntaxe

+ +
browser.bookmarks.onChildrenReordered.addListener(listener)
+browser.bookmarks.onChildrenReordered.removeListener(listener)
+browser.bookmarks.onChildrenReordered.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Synatxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera très semblable à cet événement. La fonction suivante les arguments suivants :

+ +
+
id
+
string. ID du dossier dont les enfants ont été réorganisés.
+
+ +
+
reorderInfo
+
object. Objet contenant des objets supplémentaires.
+
+
+
+ +

Objets supplémentaires

+ +

reorderInfo

+ +
+
childIds
+
array de string. 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.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.bookmarks.onChildrenReordered")}}

+ +

Exemples

+ +
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);
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.bookmarks. Cette documentation provient de  bookmarks.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Lancé lorsqu'un élément de signet (un signet ou un dossier) est créé.

+ +

Syntaxe

+ +
browser.bookmarks.onCreated.addListener()
+browser.bookmarks.onCreated.removeListener(listener)
+browser.bookmarks.onCreated.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
id
+
string. L'ID du nouvel élément de favori.
+
+ +
+
bookmark
+
{{WebExtAPIRef('bookmarks.BookmarkTreeNode')}}. Informations sur le nouvel élément de favori.
+
+
+
+ +

Exemples

+ +
function handleCreated(id, bookmarkInfo) {
+  console.log(`New bookmark ID: ${id}`);
+  console.log(`New bookmark URL: ${bookmarkInfo.url}`);
+}
+
+browser.bookmarks.onCreated.addListener(handleCreated);
+ +

{{WebExtExamples}}

+ +

 

+ +
+
+
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.bookmarks.onCreated")}}

+ +

 

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.bookmarks. Cette documentation provient de  bookmarks.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Lancé lorsque le navigateur a commencé à importer un ensemble de signet.

+ +

Pendant l'importation d'un ensemble de signets, {{WebExtAPIRef("bookmarks.onCreated", "onCreated")}} peut déclencher plusieurs fois. Si votre extension écoute onCreated, et que l'écouteur est cher, vous devez également écouter onImportBegan et {{WebExtAPIRef("bookmarks.onImportEnded", "onImportEnded")}}. Lorsque vous recevez onImportBegan, ignorez onCreated jusqu'à ce que vous receviez onImportEnded. Vous pouvez gérer toutes les autres notifications comme d'habitude.

+ +

Syntaxe

+ +
browser.bookmarks.onImportBegan.addListener(listener)
+browser.bookmarks.onImportBegan.removeListener(listener)
+browser.bookmarks.onImportBegan.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Parameters

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. Il n'y a pas de paramètres.

+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.bookmarks.onImportBegan")}}

+ +

Exemples

+ +
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);
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.bookmarks. Cette documentation provient de  bookmarks.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Lancé lorsque le navigateur a fini d'importer un ensemble de signets.

+ +

Voir {{WebExtAPIRef("bookmarks.onImportBegan")}}.

+ +

Syntaxe

+ +
browser.bookmarks.onImportEnded.addListener(listener)
+browser.bookmarks.onImportEnded.removeListener(listener)
+browser.bookmarks.onImportEnded.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. Il n'a pas passé de paramètres.

+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.bookmarks.onImportEnded")}}

+ +

Exemples

+ +
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);
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.bookmarks. Cette documentation provient de  bookmarks.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Lancé lorsqu'un signet ou un dossier est déplacé vers un autre dossier parent et / ou position dans un dossier.

+ +

Syntaxe

+ +
browser.bookmarks.onMoved.addListener(listener)
+browser.bookmarks.onMoved.removeListener(listener)
+browser.bookmarks.onMoved.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Parameters

+ +
+
callback
+
+

Function that will be called when this event occurs. The function will be passed the following arguments:

+ +
+
id
+
string. ID of the item that was moved.
+
+ +
+
moveInfo
+
object. Object containing more details about the move.
+
+
+
+ +

Objets supplémentaires

+ +

moveInfo

+ +
+
parentId
+
string. Le nouveau dossier parent.
+
index
+
integer. Le nouvel index de cet élément dans son parent.
+
oldParentId
+
string. L'ancien dossier parent.
+
oldIndex
+
integer. L'ancien index de l'élément dans son parent.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.bookmarks.onMoved")}}

+ +

Exemples

+ +
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);
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.bookmarks. Cette documentation provient de  bookmarks.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Syntaxe

+ +
browser.bookmarks.onRemoved.addListener(listener)
+browser.bookmarks.onRemoved.removeListener(listener)
+browser.bookmarks.onRemoved.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
id
+
string. ID de l'article qui a été supprimé.
+
+ +
+
removeInfo
+
object. Plus de détails sur l'élément supprimé.
+
+
+
+ +

Objets supplémentaires

+ +

removeInfo

+ +
+
parentId
+
string. ID du parent de l'élément dans l'arborescence.
+
index
+
integer. Position d'index basée sur zéro de cet élément dans son parent.
+
node
+
{{WebExtAPIRef('bookmarks.BookmarkTreeNode')}}. Informations détaillées sur l'élément qui a été supprimé.
+
+ +

Exemples

+ +
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);
+ +

{{WebExtExamples}}

+ +

 

+ +
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.bookmarks.onRemoved")}}

+ +

 

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.bookmarks. Cette documentation provient de  bookmarks.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

La méthode bookmarks.remove() supprime un seul signet ou un dossier de signets vide.

+ +
+

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: "La racine du signet ne peut pas être modifiée" et le signet ne sera pas supprimé.

+
+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var removingBookmark = browser.bookmarks.remove(
+  id                 // string
+)
+
+ +

Paramètres

+ +
+
id
+
Un {{jsxref("string")}} spécifiant l'ID du signet ou du dossier vide à supprimer.
+
+ +

Valeur retournée

+ +

Une Promise qui sera accomplie sans arguments..Si le nœud correspondant au paramètre id ne peut être trouvé ou s'il s'agit d'un dossier non vide, la promesse est rejetée avec un message d'erreur.

+ +

Exemples

+ +
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);
+ +

{{WebExtExamples}}

+ + + +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.bookmarks.remove")}}

+ + + +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.bookmarks. Cette documentation provient de  bookmarks.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

La méthode bookmarks.removeTree() supprime récursivement un dossier de signets et tout son contenu.

+ +
+

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é.

+
+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var removingTree = browser.bookmarks.removeTree(
+  id                // string
+)
+
+ +

Paramètres

+ +
+
id
+
Un {{jsxref("string")}} spécifiant l'ID du noeud de dossier à supprimer avec ses descendants.
+
+ +

Valeur retournée

+ +

Une Promise qui sera remplie sans arguments lorsque l'arbre a été retiré.Si le noeud correspondant au paramètre id ne peut pas être trouvé, la promesse est rejetée avec un message d'erreur.

+ +

Exemples

+ +

Cet exemple localise un dossier de signets nommé "MDN" et le supprime avec tout son contenu.

+ +
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);
+ +

{{WebExtExamples}}

+ + + +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.bookmarks.removeTree")}}

+ + + +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.bookmarks. Cette documentation provient de  bookmarks.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

La fonction bookmarks.search() recherche les nœuds d'arborescence de signets correspondant à la requête donnée.

+ +

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 console 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.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var searching = browser.bookmarks.search(
+  query                  // string or object
+)
+
+ +

Paramètres

+ +
+
query
+
Un {{jsxref("string")}} ou {{jsxref("object")}} décrivant la requête à effectuer.
+
+

Si la query 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.

+ +

Si la query un objet, elle possède zéro ou plus des trois propriétés suivantes : query, title, et url, 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.

+
+
+
+
query {{optional_inline}}
+
Un {{jsxref("string")}} spécifiant un ou plusieurs termes à comparer; le format est identique à la forme de chaîne du paramètre du query. Si ce n'est pas une chaîne, une exception est levée.
+
url {{optional_inline}}
+
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.
+
+

Si vous passez une URL invalide ici, la fonction lèvera une exception.

+
+
+ +
+
title {{optional_inline}}
+
Un {{jsxref("string")}} Ceci doit correspondre exactement au titre du noeud de l'arbre du signet. La correspondance est sensible à la casse.
+
+
+
+ +

Valeur retournée

+ +

Une Promise 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 BookmarkTreeNodes—même du type "folder" — renvoyé par  bookmarks.search() ne contiennent pas la propriété children. Pour obtenir un  BookmarkTreeNode utilisez bookmarks.getSubTree().

+ +

Exemple

+ +

Cet exemple enregistre les ID de tous les signets :

+ +
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);
+ +

Cet exemple cherche à voir si l'onglet actuellement actif est marqué d'un signet :

+ +
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);
+
+ +

{{WebExtExamples}}

+ +

 

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.bookmarks.search")}}

+ +

 

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.bookmarks. Cette documentation provient de  bookmarks.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

bookmarks.update() met à jour le titre et / ou l'URL d'un signet ou le nom d'un dossier de signets.

+ +
+

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.

+
+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var updating = browser.bookmarks.update(
+  id,                    // string
+  changes                // object
+)
+
+ +

Paramètres

+ +
+
id
+
Un {{jsxref("string")}} spécifiant l'ID du dossier de signet ou de dossier de signets à mettre à jour.
+
changes
+
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é :
+
+
+
title {{optional_inline}}
+
Un {{jsxref("string")}} contenant le nouveau titre du signet, ou le nouveau nom du dossier si l'id fait référence à un dossier.
+
url {{optional_inline}}
+
Un {{jsxref("string")}} fournissant une nouvelle URL pour le signet.
+
+
+
+ +

Valeur retournée

+ +

Une Promise qui sera satisfaite avec un seul objet bookmarks.BookmarkTreeNode représentant le signet mis à jour. Si l'élément de signet correspondant au paramètre id ne peut pas être trouvé, la promesse est rejetée.

+ +

Exemples

+ +

Cet exemple renomme tous les dossiers nommés "MDN" en "Mozilla Developer Network (MDN)".

+ +
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);
+ +

{{WebExtExamples}}

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.bookmarks.update")}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.bookmarks. Cette documentation provient de  bookmarks.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Type

+ +

Un tableau de quatre nombres entiers entre 0-255 définie une couleur RGBA. Les quatres couleurs spécifient les canaux suivants :

+ +
    +
  1. Rouge
  2. +
  3. Vert
  4. +
  5. Bleu
  6. +
  7. Alpha (opacité).
  8. +
+ +

Par exemple , le rouge opaque est  [255, 0, 0, 255].

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browserAction.ColorArray")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.browserAction. Cette documentation est dérivée de browser_action.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Désactive l'action du navigateur pour un onglet, ce qui signifie qu'il ne peut pas être cliqué lorsque cet onglet est actif.

+ +

Syntaxe

+ +
browser.browserAction.disable(
+  tabId // optional integer
+)
+
+ +

Paramètres

+ +
+
tabId{{optional_inline}}
+
integer. L'identifiant (ID) de l'onglet pour lequel vous souhaitez désactiver l'action du navigateur.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browserAction.disable")}}

+ +

Exemples

+ +

Désactive l'action du navigateur lorsque vous cliquez et réactivez-le chaque fois qu'un nouveau onglet est ouvert :

+ +
browser.tabs.onCreated.addListener(() => {
+  browser.browserAction.enable();
+});
+
+browser.browserAction.onClicked.addListener(() => {
+  browser.browserAction.disable();
+});
+
+ +

Désactivez l'action du navigateur uniquement pour l'onglet actif :

+ +
browser.browserAction.onClicked.addListener((tab) => {
+  browser.browserAction.disable(tab.id);
+});
+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.browserAction. Cette documentation est dérivée de browser_action.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Active l'action du navigateur pour un onglet. Par défaut, les actions du navigateur sont activées pour tous les onglets.

+ +

Syntaxe

+ +
browser.browserAction.enable(
+  tabId // optional integer
+)
+
+ +

Paramètres

+ +
+
tabId{{optional_inline}}
+
integer. L'identifiant (ID) de l'onglet pour lequel vous souhaitez activer l'action du navigateur.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browserAction.enable")}}

+ +

Exemples

+ +

 Désactivez l'option du navigateur lorsque vous cliquez et réactivez-le chaque fois qu'un nouveau onglet est ouvert :

+ +
browser.tabs.onCreated.addListener(() => {
+  browser.browserAction.enable();
+});
+
+browser.browserAction.onClicked.addListener(() => {
+  browser.browserAction.disable();
+});
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.browserAction. Cette documentation est dérivée de browser_action.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Obtient la couleur d'arrière plan du badge de l'action du navigateur.

+ +

Il s'agit d'une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
browser.browserAction.getBadgeBackgroundColor (
+  details // object
+)
+
+ +

Paramètres

+ +

details

+ +
+
object. + +
+
tabId{{optional_inline}}
+
integer. Specifie l'onglet pour obtenir la couleur d'arrière-plan du badge.
+
windowId{{optional_inline}}
+
integer. Spécifie la fenêtre à partir de laquelle obtenir la couleur de fond du badge.
+
+
+
+ + + +

Valeur retournée

+ +

Une Promise qui sera remplie avec la couleur récupérée en tant que  {{WebExtAPIRef('browserAction.ColorArray')}}.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browserAction.getBadgeBackgroundColor",2)}}

+ +

Exemples

+ +

Enregistrez la couleur de fond du badge :

+ +
function onGot(color) {
+  console.log(color);
+}
+
+function onFailure(error) {
+  console.log(error);
+}
+
+browser.browserAction.getBadgeBackgroundColor({}).then(onGot, onFailure);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.browserAction. Cette documentation est dérivée de browser_action.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Obtient le texte du badge de l'action du navigateur.

+ +

Il s'agit d'une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var gettingText = browser.browserAction.getBadgeText (
+  details               // object
+)
+
+ +

Paramètres

+ +
+
details
+
object.
+
+
+
tabId{{optional_inline}}
+
integer. Spécifie l'onglet pour obtenir le texte du badge.
+
windowId{{optional_inline}}
+
integer. Spécifie la fenêtre à partir de laquelle obtenir le texte du badge.
+
+
+
+ + + +

Valeur de retour

+ +

Une Promise qui sera remplie avec une chaîne contenant le texte du badge.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browserAction.getBadgeText",2)}}

+ +

Exemples

+ +

Enregistrez le texte du badge : 

+ +
function gotBadgeText(text) {
+  console.log(text);
+}
+
+var gettingBadgeText = browser.browserAction.getBadgeText({});
+gettingBadgeText.then(gotBadgeText);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.browserAction. Cette documentation est dérivée de browser_action.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Obtient la couleur du texte du badge de l'action du navigateur.

+ +

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.

+ +

Les autres navigateurs utilisent toujours une couleur de texte blanche.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
browser.browserAction.getBadgeTextColor(
+  details // object
+)
+
+ +

Paramètres

+ +
+
details
+
object. +
+
tabId{{optional_inline}}
+
integer. Spécifie l'onglet pour obtenir la couleur du texte du badge.
+
windowId{{optional_inline}}
+
integer. Spécifie la fenêtre à partir de laquelle obtenir la couleur du texte du badge.
+
+
+
+ + + +

Valeur retournée

+ +

Une Promise qui sera remplie avec la couleur récupérée comme un {{WebExtAPIRef('browserAction.ColorArray')}}.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browserAction.getBadgeTextColor",2)}}

+ +

Exemples

+ +

Enregistrer la couleur du texte du badge :

+ +
function onGot(color) {
+  console.log(color);
+}
+
+function onFailure(error) {
+  console.log(error);
+}
+
+browser.browserAction.getBadgeTextColor({}).then(onGot, onFailure);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.browserAction. Cette documentation est dérivée de browser_action.json dans le code de Chromium code.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Obtient le document HTML défini comme la popup pour cette action du navigateur.

+ +

Il s'agit d'une fonction asynchrone  qui renvoie une Promise.

+ +

Syntaxe

+ +
var gettingPopup = browser.browserAction.getPopup(
+  details               // object
+)
+
+ +

Paramètres

+ +
+
details
+
object.
+
+
+
tabId{{optional_inline}}
+
integer. L'onglet dont le menu déroulant reçoit un entier.
+
windowId{{optional_inline}}
+
integer. Les fenêtres dont le popup à obtenir.
+
+
+
+ + + +

Valeur retournée

+ +

Une Promise qui sera remplie avec une chaine cntenant l'URL du document contextuel. Ce sera une URL entièrement qualifiée, telle que moz-extension://d1d8a2eb-fe60-f646-af30-a866c5b39942/popups/popup2.html.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browserAction.getPopup",2)}}

+ +

Exemples

+ +

Obtenez l'URL du Popup:

+ +
function gotPopup(popupURL) {
+  console.log(popupURL)
+}
+
+var gettingPopup = browser.browserAction.getPopup({});
+gettingPopup.then(gotPopup); 
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.browserAction. Cette documentation est dérivée de browser_action.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Obtient le titre de l'action du navigateur.

+ +

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.

+ +

Il s'agit d'une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var gettingTitle = browser.browserAction.getTitle(
+  details               // object
+)
+
+ +

Paramètres

+ +
+
details
+
object.
+
+
+
tabId{{optional_inline}}
+
integer. Spécifiez l'onglet pour obtenir le titre.
+
windowId{{optional_inline}}
+
integer. Spécifiez la fenêtre à partir de laquelle vous souhaitez obtenir le titre.
+
+
+
+ + + +

Return value

+ +

Une Promise qui sera remplie avec une chaîne contenant le titre de l'action du navigateur.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browserAction.getTitle",2)}}

+ +

Exemples

+ +

Ce code change le titre entre "ceci" et "cela" chaque fois que l'utilisateur clique sur l'action du navigateur :

+ +
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);
+});
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.browserAction. Cette documentation est dérivée de browser_action.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Données en pixels pour une image. Doit être un objet ImageData  (par exemple, un élément  {{htmlelement("canvas")}}).

+ +

Type

+ +

Un objet ImageData.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browserAction.ImageDataType")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.browserAction. Cette documentation est dérivée de browser_action.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar}}
+ +

Ajoute un bouton à la barre d'outils du navigateur.

+ +

Une action du navigateur est un bouton dans la barre d'outils du navigateur.

+ +

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 messages.

+ +

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.

+ +

Vous pouvez définir la plupart des propriétés d'une action de navigateur en utilisant la clé browser_action dans le manifest.json.

+ +

Quand l'API browserAction, vous pouvez :

+ + + +

Types

+ +
+
{{WebExtAPIRef("browserAction.ColorArray")}}
+
Un tableau de quatre nombres entiers entre 0-255 définie une couleur RGBA.
+
{{WebExtAPIRef("browserAction.ImageDataType")}}
+
Données en pixels pour une image. Doit être un objet ImageData (par exemple, un élément {{htmlelement("canvas")}} ).
+
+ +

Fonctions

+ +
+
{{WebExtAPIRef("browserAction.setTitle()")}}
+
Définit le titre de l'action du navigateur. Cela sera affiché dans une info-bulle.
+
{{WebExtAPIRef("browserAction.getTitle()")}}
+
Obtient le titre de l'action du navigateur.
+
{{WebExtAPIRef("browserAction.setIcon()")}}
+
Définit l'icône de l'action du navigateur.
+
{{WebExtAPIRef("browserAction.setPopup()")}}
+
Définit le document HTML à ouvrir en popup lorsque l'utilisateur clique  sur l'icône de l'action du navigateur.
+
{{WebExtAPIRef("browserAction.getPopup()")}}
+
Permet de définir le document HTML en tant que popup de l'action du navigateur.
+
{{WebExtAPIRef("browserAction.openPopup()")}}
+
Ouvrez le popup de l'action du navigateur.
+
{{WebExtAPIRef("browserAction.setBadgeText()")}}
+
Définit le texte du badge de l'action du navigateur. Le badge est affiché en haut de l'icône.
+
{{WebExtAPIRef("browserAction.getBadgeText()")}}
+
Obtient le texte du badge de l'action du navigateur.
+
{{WebExtAPIRef("browserAction.setBadgeBackgroundColor()")}}
+
Définit la couleur de fond du badge.
+
{{WebExtAPIRef("browserAction.getBadgeBackgroundColor()")}}
+
Obtient la couleur de fond du badge.
+
{{WebExtAPIRef("browserAction.setBadgeTextColor()")}}
+
Définit la couleur du texte du badge.
+
{{WebExtAPIRef("browserAction.getBadgeTextColor()")}}
+
Obtient la couleur du texte du badge.
+
{{WebExtAPIRef("browserAction.enable()")}}
+
Active l'action du navigateur pour un onglet. Par défaut, les actions du navigateur sont activées pour tous les onglets.
+
{{WebExtAPIRef("browserAction.disable()")}}
+
Désactive l'action du navigateur pour un onglet, ce qui signifie  qu'il ne peut pas être cliqué lorsque cet onglet est actif.
+
{{WebExtAPIRef("browserAction.isEnabled()")}}
+
Vérifie si l'action du navigateur est activée ou non.
+
+ +

Evénements

+ +
+
{{WebExtAPIRef("browserAction.onClicked")}}
+
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.
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.browserAction")}}

+ + + +

{{WebExtExamples("h2")}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.browserAction. Cette documentation est dérivée de browser_action.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Renvoie true si l'action du navigateur est activée.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
let gettingIsEnabled = browser.browserAction.isEnabled(
+  details // object
+)
+
+ +

Paramètres

+ +
+
details
+
object. Un objet contenant éventuellement le tabId ou windowId à vérifier.
+
+
+
tabId {{optional_inline}}
+
integer. ID d'un onglet à vérifier
+
windowId {{optional_inline}}
+
integer. ID d'une fenêtre à vérifier.
+
+
+
+ +
+
+
+
+
+
+ + + +

Valeur retournée

+ +

Une Promise qui sera remplie avec true si l'action du navigateur de l'extension est activée, et false dans le cas contraire.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browserAction.isEnabled",2)}}

+ +

Exemples

+ +

Vérifiez l'état global :

+ +
browser.browserAction.isEnabled({}).then(result => {
+  console.log(result);
+});
+ +

Vérifiez l'état de l'onglet actuellement actif :

+ +
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);
+}
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Pour définir une action de clic droit, utilisez l'API contextMenus  avec le type de contexte "browser_action".

+ +

Syntaxe

+ +
browser.browserAction.onClicked.addListener(listener)
+browser.browserAction.onClicked.removeListener(listener)
+browser.browserAction.onClicked.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(listener)
+
Ajoutez un auditeur à cet événement.
+
removeListener(listener)
+
Arretez d'écouter cet événement. L'argument de l'auditeur est l'auditeur à supprimer.
+
hasListener(listener)
+
Vérifier si l'autditeur est enregistré pour cet événement. Renvoie true si elle est écouté, sinon  false.
+
+ +

addListener syntaxe

+ +

Paramètre

+ +
+
callback
+
+

Fonction de rappel qui sera appelée lorsque cet événement se produira. La fonction passera par l'argument suivant :

+ +
+
tab
+
{{WebExtAPIRef('tabs.Tab')}}. L'onglet qui était actif lorsque l'icône a été cliquée .
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browserAction.onClicked")}}

+ +

Exemples

+ +

Lorsque l'utilisateur clique sur l'icône, désactivez-la pour l'onglet actif et enregistrez l'URL de l'onglet

+ +
browser.browserAction.onClicked.addListener((tab) => {
+  // disable the active tab
+  browser.browserAction.disable(tab.id);
+  // requires the "tabs" or "activeTab" permission
+  console.log(tab.url);
+});
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.browserAction. Cette documentation est dérivée de browser_action.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +
Ouvrez le popup de l'action du navigateur.
+ +
+ +
+

Vous pouvez uniquement appeler cette fonction à partir du gestionnaire pour une action utilisateur.

+
+ +

Syntaxe

+ +
browser.browserAction.openPopup()
+
+ +

Paramètres

+ +

None.

+ +

Valeur retournée

+ +

Une Promise cela est résolu sans arguments.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browserAction.openPopup", 10)}}

+ +

Exemples

+ +

Ouvrez la fenêtre contextuelle lorsque l'utilisateur sélectionne un élément de menu contextuel :

+ +
browser.menus.create({
+  id: "open-popup",
+  title: "open popup",
+  contexts: ["all"]
+});
+
+browser.menus.onClicked.addListener(() => {
+  browser.browserAction.openPopup();
+});
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

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 [217, 0, 0, 255] dans Firefox.

+ +

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.

+ +

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

+ +

Syntaxe

+ +
browser.browserAction.setBadgeBackgroundColor(
+  details // object
+)
+
+ +

Paramètres

+ +
+
details
+
object. +
+
color
+
La couleur, spécifiée comme l'un des suivants :
+
+
    +
  • une chaîne : toute valeur CSS <color> , par exemple "red", "#FF0000", ou "rgb(255,0,0)". 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.
  • +
  • Un objet {{WebExtAPIRef('browserAction.ColorArray')}}.
  • +
  • null. Si un tabId 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.
  • +
+
+
tabId{{optional_inline}}
+
integer. 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.
+
windowId{{optional_inline}}
+
integer. Définit la couleur d'arrière-plan du badge uniquement pour l'onglet donné.
+
+
+
+ + + +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browserAction.setBadgeBackgroundColor",2)}}

+ +

La couleur par défaut dans Firefox est : [217, 0, 0, 255].

+ +

Exemples

+ +

Une couleur d'arrière plan qui commence en rouge et devient  verte lorsque l'action du navigateur est cliquée :

+ +
browser.browserAction.setBadgeText({text: "1234"});
+browser.browserAction.setBadgeBackgroundColor({color: "red"});
+
+browser.browserAction.onClicked.addListener(()=> {
+  browser.browserAction.setBadgeBackgroundColor({color: "green"});
+});
+ +

Réglez la couleur d'arrière-plan du badge uniquement pour l'onget actif :

+ +
browser.browserAction.setBadgeText({text: "1234"});
+browser.browserAction.setBadgeBackgroundColor({color: "red"});
+
+browser.browserAction.onClicked.addListener((tab)=> {
+  browser.browserAction.setBadgeBackgroundColor({
+    color: "green",
+    tabId: tab.id
+  });
+});
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.browserAction. Cette documentation est dérivée de browser_action.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+ + +
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 +--- +
{{AddonSidebar()}}
+ +

Définit le texte du badge pour l'action du navigateur. Le badge est affiché en haut de l'icône.

+ +

Les onglets sans texte de badge spécifique hériteront du texte global du badge, qui est "" par défaut.

+ +

Syntaxe

+ +
browser.browserAction.setBadgeText(
+  details // object
+)
+
+ +

Cette API est également disponible sous chrome.browserAction.setBadgeText().

+ +

Paramètres

+ +
+
details
+
object. +
+
text
+
+

string or null. N'importe quel nombre de caractères peut être passé, mais seulement quatre environ peuvent tenir dans l'espace.

+ +

Utilisez une chaîne vide - "" - si vous ne voulez pas de badge.

+ +

Si un tabId est spécifié, null 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 "".

+ +

Si un windowId est spécifié, null 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 "".

+
+
tabId{{optional_inline}}
+
integer. 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.
+
windowId{{optional_inline}}
+
integer. Définir le texte du badge pour la fenêtre donnée.
+
+
+
+ + + +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browserAction.setBadgeText",2)}}

+ +

Exemples

+ +

Ajouter un badge indiquant combien de fois l'utilisateur a cliqué sur le bouton : 

+ +
var clicks = 0;
+
+function increment() {
+  browser.browserAction.setBadgeText({text: (++clicks).toString()});
+}
+
+browser.browserAction.onClicked.addListener(increment);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.browserAction. Cette documentation est dérivée de browser_action.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Syntaxe

+ +
browser.browserAction.setBadgeTextColor(
+  details // object
+)
+
+ +

Paramètres

+ +
+
details
+
object. +
+
color
+
La couleur, spécifiée comme l'une des couleurs :
+
+
    +
  •  une chaîne : toute valeur CSS <color>, par exemple "red", "#FF0000", ou "rgb(255,0,0)". 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.
  • +
  • Un objet {{WebExtAPIRef('browserAction.ColorArray')}}.
  • +
  • null. Si un tabId 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.
  • +
+
+
tabId{{optional_inline}}
+
integer. 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.
+
windowId{{optional_inline}}
+
integer. Définit la couleur du texte du badge uniquement pour l'onglet donné.
+
+
+
+ + + +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browserAction.setBadgeTextColor",2)}}

+ +

Exemples

+ +

Une couleur de texte de badge qui commence par le rouge et passe au vert lorsque l'on clique sur l'action du navigateur :

+ +
browser.browserAction.setBadgeText({text: "1234"});
+browser.browserAction.setBadgeTextColor({color: "red"});
+
+browser.browserAction.onClicked.addListener(()=> {
+  browser.browserAction.setBadgeTextColor({color: "green"});
+});
+ +

Définissez la couleur du texte du badge uniquement pour l'onglet actif :

+ +
browser.browserAction.setBadgeText({text: "1234"});
+browser.browserAction.setBadgeTextColor({color: "red"});
+
+browser.browserAction.onClicked.addListener((tab)=> {
+  browser.browserAction.setBadgeTextColor({
+    color: "green",
+    tabId: tab.id
+  });
+});
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.browserAction. Cette documentation est dérivée de browser_action.json dans le code de Chromium code.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Définit l'icône pour l'action du navigateur.

+ +

Vous pouvez spécifier une seule icône comme chemin d'accès à un fichier ou un objet {{WebExtAPIRef('browserAction.ImageDataType')}} .

+ +

Vous pouvez spécifier plusieurs icônes dans différentes tailles en fournissant un dictionnaire contenant plusieurs chemins ou des objets  ImageData. 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.

+ +

Les onglets sans icône spécifique hériteront de l'icône globale, qui par défaut est  default_icon specifié dans le manifest.

+ +

Il s'agit d'une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var settingIcon = browser.browserAction.setIcon(
+  details         // object
+)
+
+ +

Paramètres

+ +
+
details
+
object. Un objet contenant des propriétés imageData ou path, et éventuellement une propriété tabId .
+
+
+
imageData{{optional_inline}}
+
+

{{WebExtAPIRef('browserAction.ImageDataType')}} ou object. Il s'agit soit d'un seul objet ImageData ou un dictionnaire d'objet.

+ +

Utilisez un dictionnaire d'objet pour spécifier plusieurs objets ImageData 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 imageData est un dictionnaire, la valeur de chaque propriété  est un objetImageData, et son nom est sa taille, comme ceci :

+ +
{
+  16: image16,
+  32: image32
+}
+ +

Le navigateur choisira l'image à utiliser en fonction de la densité de pixels de l'écran. Voir Choix de la tailles d'icônes pour plus d'informations à ce sujet.

+
+
path{{optional_inline}}
+
+

string or object. Il s'agit du chemin relatif d'un fichier d'icône ou d'un objet de dictionnaire. 

+ +

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 path est un dictionnaire, la valeur de chaque propriété est un chemin relatif , et son nom est sa taille, comme ceci :

+ +
{
+  16: "path/to/image16.jpg",
+  32: "path/to/image32.jpg"
+}
+ +

Le navigateur choisira l'image à utiliser en fonction de la densité de pixels de l'écran. Voir Choix de la tailles d'icônes pour plus d'informations à ce sujet.

+
+
tabId{{optional_inline}}
+
integer. 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.
+
windowId{{optional_inline}}
+
integer. Définit l'icône de la fenêtre donnée.
+
+
+
+ + + +

Si chaque imageData et path est un objet undefined, null ou vide :

+ + + +

Valeur retournée

+ +

Une Promise qui sera remplie sans arguments une fois que l'icône a été définie.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browserAction.setIcon",2)}}

+ +

Exemples

+ +

Le code ci-dessous utilise une action du navigateur pour basculer un auditeur pour {{WebExtAPIRef("webRequest.onHeadersReceived")}}, et utilise setIcon() pour indiquer si l'écoute est activée ou désactivée :

+ +
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);
+ +

Le code ci-dessous définit l'icône à l'aide d'un objetImageData :

+ +
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()});
+});
+
+ +

L'extrait suivant met à jour l'icône lorsque l'utilisateur clique, mais uniquement pour l'onglet actif :

+ +
browser.browserAction.onClicked.addListener((tab) => {
+  browser.browserAction.setIcon({
+    tabId: tab.id, path: "icons/updated-48.png"
+  });
+});
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.browserAction. Cette documentation est dérivée de browser_action.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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 default_popup spécifiée dans le manifest.

+ +

Syntaxe

+ +
browser.browserAction.setPopup(
+  details // object
+)
+
+ +

Paramètres

+ +
+
details
+
object.
+
+
+
tabId{{optional_inline}}
+
integer. 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.
+
windowId{{optional_inline}}
+
integer. Définit le popup uniquement pour la fenêtre spécifiée.
+
+ +
+
popup
+
+

string ou null. Le fichier HTML à afficher dans un popup, spécifié comme URL.

+ +

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 https://example.org/).

+ +

Si une chaîne vide ("") est passée ici, le popup est désactivé, et l'extension recevra les événements {{WebExtAPIRef("browserAction.onClicked")}}.

+ +

Si le popup est null:

+ +

Si tabId est spécifié, supprime la fenêtre popup spécifique à l'onglet afin que l'onglet hérite de la fenêtre popup globale..

+ +

Si windowId est spécifié, supprime le popup spécifique à la fenêtre afin que la fenêtre hérite du popup global.

+ +

Sinon, la fenêtre contextuelle globale revient à la valeur par défaut.

+
+
+
+
+ + + +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browserAction.setPopup",2)}}

+ +

Exemples

+ +

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 permission "contextMenus" définie dans le manifest de l'extension pour créer des éléments du menu contextuel.

+ +
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"})
+  }
+});
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.browserAction. Cette documentation est dérivée de browser_action.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar}}
+ +

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 tabId dans ou une windowId 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 default_title ou name specifié dans le manifest.

+ +

Syntaxe

+ +
browser.browserAction.setTitle(
+  details // object
+)
+
+ +

Paramètres

+ +
+
details
+
object. Le nouveau titre et éventuellement l'ID de l'onglet ou de la fenêtre à cibler. +
+
title
+
+

string ou null. La chaîne de caractères que l'action du navigateur doit afficher lorsqu'il y a une souris.

+ +

Si title est une chaîne vide, le titre utilisé sera le nom de l'extension, mais {{WebExtAPIRef("browserAction.getTitle")}} fournira toujours la chaîne vide.

+ +

Si title est null:

+ +
    +
  • Si tabId 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.
  • +
  • Si windowId 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.
  • +
  • Sinon, le titre global sera réinitialisé au titre du manifest.
  • +
+
+
tabId{{Optional_Inline}}
+
+

integer. Définit le titre uniquement pour l'onglet donné.

+
+
windowId{{Optional_Inline}}
+
+

integer. Définit le titre de la fenêtre donnée.

+
+
+
+
+ + + +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browserAction.setTitle",10)}}

+ +

Exemples

+ +

Ce code change le titre entre "ceci" et "ça" chaque fois  que l'utilisateur clique sur l'action du navigateur :

+ +
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);
+});
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.browserAction. Cette documentation est dérivée de browser_action.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

La valeur sous-jacente  est un booléen.

+ +

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 click, mouseup, submit. Si allowPopupsForUserEvents est défini sur false, aucun événement utilisateur ne pourra ouvrir des fenêtres contextuelles. Si elle est définie sur true, l'ensemble d'événements par défaut sera autorisé à ouvrir des fenêtres contextuelles.

+ +

Par exemple, supposons qu'une page web comporte un code comme celui-ci :

+ +
window.addEventListener("click", (e) => {
+  window.open("https://example.com","myPopup",'height=400,width=400');
+});
+
+ +

Par défaut, cela ouvrira une fenêtre contextuelle. Si vos extensions définient allowPopupsForUserEvents à false, cela n'ouvrira pas la fenêtre contextuelle, et l'utilisateur sera informé que le popup était bloqué.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browserSettings.allowPopupsForUserEvents")}}

+ +

Exemples

+ +

Basculer le réglage :

+ +
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();
+});
+
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Un objet {{WebExtAPIRef("types.BrowserSetting", "BrowserSetting")}} qui peut être utilisé pour activer ou désactiver globalement le cache du navigateur.

+ +

La valeur sous-jacente est un booléen.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browserSettings.cacheEnabled")}}

+ +

Exemples

+ +

Obtenir une valeur actuelle de ce paramètre :

+ +
function logResult(result) {
+  console.log(`Current value: ${result.value}`);
+  console.log(`Current level of control: ${result.levelOfControl}`);
+}
+
+browser.browserSettings.cacheEnabled.get({}).
+  then(logResult);
+ +

Désactivation du cache du navigateur :

+ +
function logResult(result) {
+  console.log(`Setting was modified: ${result}`);
+}
+
+browser.browserSettings.cacheEnabled.set({value: false}).
+  then(logResult);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

La valeur sous-jacente est un booléen.

+ +

Par défaut, closeTabsByDoubleClick est faux. Le réglage peut être modifié par l'utilisateur dans about:config.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browserSettings.closeTabsByDoubleClick")}}

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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Sa valeur sous-jacente est une chaîne qui peut être "mouseup" ou "mousedown".

+ +

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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browserSettings.contextMenuShowEvent")}}

+ +

Exemples

+ +

Réglez le paramètre sur "mouseup":

+ +
function logResult(result) {
+  console.log(`Setting was modified: ${result}`);
+}
+
+browser.browserSettings.contextMenuShowEvent.set({value: "mouseup"}).
+  then(logResult);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Un objet {{WebExtAPIRef("types.BrowserSetting", "BrowserSetting")}} qui détermine si le protocole FTP est activé dans le navigateur.

+ +

La valeur sous-jaccente est un booléen.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browserSettings.ftpProtocolEnabled")}}

+ +

Exemples

+ +

Changer le réglage:

+ +
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();
+});
+
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Notez qu'il s'agit d'un paramètre en lecture seule. Pour changer la page d'accueil, voir chrome_settings_overrides.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browserSettings.homepageOverride", 10)}}

+ +

Exemples

+ +

Obtenez la valeur actuelle de l'URL de la page d'accueil :

+ +
browser.browserSettings.homepageOverride.get({}).then(result => {
+  console.log(result.value);
+});
+
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

La valeur sous-jacente est une chaîne qui peut prendre l'une des trois valeurs suivantes:

+ + + +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browserSettings.imageAnimationBehavior", 10)}}

+ +

Exemples

+ +

Désactiver les images animées :

+ +
  browser.browserSettings.imageAnimationBehavior.set({value: "none"});
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar}}
+ +
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.
+ +
+ +
Parce que ce sont les paramètres globaux, il est possible d'étendre les conflits des extensions. voir la documentation de BrowserSetting.set() pour plus détails sur la façon dont les conflits sont traités.
+ +
+ +
+

Pour utiliser cette API, vous devez avoir la permission "browserSettings".

+
+ +

Propriétés

+ +
+
{{WebExtAPIRef("browserSettings.allowPopupsForUserEvents")}}
+
Déterminer si le code exécuté dans les pages Web peut afficher les fenêtres contextuelles en réponse aux événements utilisateur.
+
{{WebExtAPIRef("browserSettings.cacheEnabled")}}
+
Déterminer si le cache du navigateur est activé ou pas.
+
{{WebExtAPIRef("browserSettings.closeTabsByDoubleClick")}}
+
Détermine si l'onglet sélectionné peut être fermé en double-cliquant
+
{{WebExtAPIRef("browserSettings.contextMenuShowEvent")}}
+
Détermine l'événement de souris qui déclenche un menu contextuel.
+
{{WebExtAPIRef("browserSettings.ftpProtocolEnabled")}}
+
Détermine si le protocole FTP est activé.
+
{{WebExtAPIRef("browserSettings.homepageOverride")}}
+
Lire la valeur de la page d'accueil du navigateur.
+
{{WebExtAPIRef("browserSettings.imageAnimationBehavior")}}
+
Détermine comment le navigateur traite les images animées.
+
{{WebExtAPIRef("browserSettings.newTabPageOverride")}}
+
Lire la valeur de la nouvelle page de l'onglet du navigateur.
+
{{WebExtAPIRef("browserSettings.newTabPosition")}}
+
Contrôle la position des onglets nouvellement ouverts par rapport aux onglets déjà ouverts.
+
{{WebExtAPIRef("browserSettings.openBookmarksInNewTabs")}}
+
Détermine si les signets sont ouverts dans l'onglet actuel ou dans un nouvel onglet.
+
{{WebExtAPIRef("browserSettings.openSearchResultsInNewTabs")}}
+
Détermine si les résultats de recherche sont ouverts dans l'onglet actuel ou dans un nouvel onglet.
+
{{WebExtAPIRef("browserSettings.openUrlbarResultsInNewTabs")}}
+
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.
+
{{WebExtAPIRef("browserSettings.overrideDocumentColors")}}
+
Contrôle si les couleurs choisies par l'utilisateur remplacent les couleurs de la page.
+
{{WebExtAPIRef("browserSettings.useDocumentFonts")}}
+
Contrôle si le navigateur utilisera les polices spécifiées par une page Web ou n'utilisera que des polices intégrées.
+
{{WebExtAPIRef("browserSettings.webNotificationsDisabled")}}
+
Empêche les sites Web d'afficher des notifications à l'aide de la web API  Notification.
+
{{WebExtAPIRef("browserSettings.zoomFullPage")}}
+
Contrôle si le zoom est appliqué à la page entière ou seulement au texte.
+
{{WebExtAPIRef("browserSettings.zoomSiteSpecific")}}
+
Contrôle si le zoom est appliqué sur un modèle par-site ou par-onglet. Si {{WebExtAPIRef("privacy.websites")}}.resistFingerprinting est à vrai, ce réglage n'a aucun effet et le modèle de zoom appliqué reste par-onglet.
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.browserSettings")}}

+ +

{{WebExtExamples("h2")}}

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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Notez qu'il s'agit d'un paramètre en lecture seule.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browserSettings.newTabPageOverride", 10)}}

+ +

Exemples

+ +

Obtenir la valeur actuelle de la nouvelle URL de l'onglet :

+ +
browser.browserSettings.newTabPageOverride.get({}).then(result => {
+  console.log(result.value);
+});
+
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

La valeur sous-jacente est une chaîne qui peut prendre l'une des trois valeurs suivantes :

+ + + +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browserSettings.newTabPosition", 10)}}

+ +

Exemples

+ +

Ce code définit la valeur à "afterCurrent" puis enregistre la nouvelle valeur :

+ +
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}`);
+}
+
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Un objet {{WebExtAPIRef("types.BrowserSetting", "BrowserSetting")}} dont la valeur sous-jacente est un booléen.

+ +

Si la valeur est true, alors lorsque l'utilisateur sélectionne un signet, il sera ouvert dans un nouvel onglet. Si la valeur estfalse (valeur par défaut), les marque-pages sont ouverts dans l'onglet en cours.

+ +

Compatibilité de navigateur

+ + + +

{{Compat("webextensions.api.browserSettings.openBookmarksInNewTabs")}}

+ +

Exemples

+ +

Définissez le paramètre sur true:

+ +
function logResult(result) {
+  console.log(`Setting was modified: ${result}`);
+}
+
+browser.browserSettings.openBookmarksInNewTabs.set({value: true}).
+  then(logResult);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Un objet {{WebExtAPIRef("types.BrowserSetting", "BrowserSetting")}} dont la valeur sous-jacente est un booléen.

+ +

Si la valeur est définie à true, 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 false (valeur par défaut), les résultats de la recherche apparaissent dans l'onglet en cours.

+ +

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..

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browserSettings.openSearchResultsInNewTabs")}}

+ +

Exemples

+ +

Définissez le paramètre sur true:

+ +
function logResult(result) {
+  console.log(`Setting was modified: ${result}`);
+}
+
+browser.browserSettings.openSearchResultsInNewTabs.set({value: true}).
+  then(logResult);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Un objet {{WebExtAPIRef("types.BrowserSetting", "BrowserSetting")}} dont la valeur sous-jacente est un booléen.

+ +

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.

+ +

Si la valeur est true, alors lorsque l'utiliseur sélectionne l'un des éléments, l'élément est ouvert dans un nouvel onglet. Si la valeur est false (valeur par défaut) l'élément est ouvert dans l'onglet en cours.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browserSettings.openUrlbarResultsInNewTabs")}}

+ +

Exemples

+ +

Définit le paramètre à true:

+ +
function logResult(result) {
+  console.log(`Setting was modified: ${result}`);
+}
+
+browser.browserSettings.openUrlbarResultsInNewTabs.set({value: true}).
+  then(logResult);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Un objet {{WebExtAPIRef("types.BrowserSetting", "BrowserSetting")}} dont la valeur sous-jacente est une chaîne.

+ +

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.

+ +

Sa valeur sous-jacente est une chaîne qui peut prendre l'une des valeurs suivantes:

+ + + +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browserSettings.openUrlbarResultsInNewTabs")}}

+ +

Exemples

+ +

Définissez le paramètre sur "always":

+ +
function logResult(result) {
+  console.log(`Setting was modified: ${result}`);
+}
+
+browser.browserSettings.overrideDocumentColors.set({value: "always"}).
+  then(logResult);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Un objet {{WebExtAPIRef("types.BrowserSetting", "BrowserSetting")}} qui peut être utilisé pour modifier les paramètres de proxy du navigateur.

+ +
+

Note: 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 à  proxy.settings.set() lanceront une exception.

+
+ +

La valeur sous-jacente est un objet avec les propriétés énumérées ci-dessous.

+ +

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.

+ +
+
autoConfigUrl{{optional_inline}}
+
string. Une URL à utiliser pour configurer le proxy.
+
autoLogin{{optional_inline}}
+
boolean. Ne pas demander l'authentification si le mot de passe est enregistré. Par défaut à false.
+
ftp{{optional_inline}}
+
string. L'adresse du proxy FTP. Peut inclure un port.
+
http{{optional_inline}}
+
string. L'adresse du proxy HTTP. Peut inclure un port.
+
httpProxyAll{{optional_inline}}
+
boolean. Utilisez le serveur proxy HTTP pour tous les protocoles. Par défaut à false.
+
passthrough{{optional_inline}}
+
string. 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".
+
proxyDNS{{optional_inline}}
+
boolean. DNS proxy lors de l'utilisation de SOCKS5. Par défaut à false.
+
proxyType{{optional_inline}}
+
string. Le type de proxy à utiliser. Cela peut prendre l'une des valeurs suivantes : "none", "autoDetect", "system", "manual", "autoConfig". Par défaut à "system".
+
socks{{optional_inline}}
+
string. L'adresse du proxy SOCKS. Peut inclure un port.
+
socksVersion{{optional_inline}}
+
integer. La version du proxy SOCKS. Peut être 4 ou 5. Par défaut à 5.
+
ssl{{optional_inline}}
+
string. L'adresse du proxy SSL. Peut inclure un port.
+
+ +

 

+ +

Exemples

+ +
let proxySettings = {
+  proxyType: "manual",
+  http: "http://proxy.org:8080",
+  socksVersion: 4,
+  passthrough: ".example.org"
+};
+
+browser.proxy.settings.set({value: proxySettings});
+ +

{{WebExtExamples}}

+ +

 

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.proxy.settings", 10)}}

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 +--- +
{{AddonSidebar()}}
+ +

Un objet {{WebExtAPIRef("types.BrowserSetting", "BrowserSetting")}} dont la valeur sous-jacente est un booléen.

+ +

Par défaut, bien sûr, les pages Web peuvent spécifier les polices qu'ils veulent utiliser les propriétés CSS comme font-family. 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.

+ +

Sa valeur sous-jacente est un booléen :

+ + + +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browserSettings.useDocumentFonts")}}

+ +

Exemples

+ +

Définissez le paramètre sur false:

+ +
function logResult(result) {
+  console.log(`Setting was modified: ${result}`);
+}
+
+browser.browserSettings.useDocumentFonts.set({value: false}).
+  then(logResult);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Un objet {{WebExtAPIRef("types.BrowserSetting", "BrowserSetting")}} qui peut être utilisé pour empêcher les sites Web d'afficher des Notifications à l'aide de l'API Web de notifications.

+ +

L'API Notifications est utilisée pour afficher les notifications de bureau à l'utilisateur. Il existe trois niveaux d'autorisation pour les notifications : allow, deny, et prompt. 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 invitée.

+ +

Définir browserSettings.webNotificationsDisabled à true change l'autorisation globale à refuser.

+ +

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 https://example.org pour autoriser, et une extension place ensuite browserSettings.webNotificationsDisabled à true, alors les pages sous https://example.org seront toujours autorisées à afficher des notifications..

+ +

Si vous définissez browserSettings.webNotificationsDisabled à false la valeur par défaut globale est rétablie.

+ +

Notez que ce paramètre n'a aucun effet sur les notifications créées par des extensions à l'aide de l'API de notifications.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browserSettings.webNotificationsDisabled")}}

+ +

Exemples

+ +

Basculer le paramètre :

+ +
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();
+});
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Un objet {{WebExtAPIRef("types.BrowserSetting", "BrowserSetting")}} dont la valeur sous-jaccente est un booléen.

+ +

Par défaut, le zoom s'applique à la page web entière. En utilisant le Zoom Text Only setting les utilisateurs/utilisatrices peuvent choisir de zoomer uniquement le texte de la page. 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.

+ +

Valeurs du paramètre:

+ + + +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browserSettings.zoomFullPage")}}

+ +

Exemples

+ +

Mettre le réglage à false:

+ +
function afficherResultat(resultat) {
+  console.log(`Le paramètre a été modifié: ${resultat}`);
+}
+
+browser.browserSettings.zoomFullPage.set({value: false}).
+  then(afficherResultat);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Un objet {{WebExtAPIRef("types.BrowserSetting", "BrowserSetting")}} dont la valeur sous-jaccente est un booléen.

+ +

Cette propriété contrôle le réglage de configuration browser.zoom.siteSpecific, qui règle comment le zoom est appliqué aux sites et onglets.

+ +

Si browser.zoom.siteSpecific est à vrai, les opérations de zoom s'appliquent à toutes les pages du même site selon les règles :

+ + + +

Si la préférence browser.zoom.siteSpecific est à faux, les opérations de zoom s'appliquent uniquement à l'onglet actif selon les règles :

+ + + +

Lors de l'installation de Firefox, browser.zoom.siteSpecific est à vrai.

+ +

Si privacy.websites.resistFingerprinting est à vrai, ce réglage ne peut pas être changé et le niveau de zoom est appliqué sur le schéma par-onglet.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browserSettings.zoomSiteSpecific")}}

+ +

Exemples

+ +

Mettre le réglage à false:

+ +
function logResult(result) {
+  console.log(`Setting was modified: ${result}`);
+}
+
+browser.browserSettings.zoomSiteSpecific.set({value: false}).
+  then(logResult);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Le type browsingData.DataTypeSet  décrit un ensemble de types de données.

+ +

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.

+ +

Ce type est utilisé :

+ + + +

Type

+ +

Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :

+ +
+
cache {{optional_inline}}
+
boolean. Le cache du navigateur
+
cookies {{optional_inline}}
+
boolean. Cookies acquis en cours de la navigation.
+
downloads {{optional_inline}}
+
boolean. L'historique de téléchargement de l'utilisateur.
+
fileSystems {{optional_inline}}
+
boolean. Les systèmes de fichiers du site Web.
+
formData {{optional_inline}}
+
boolean. Données de formulaire enregistrées, pour la saisie semi-automatique.
+
history {{optional_inline}}
+
boolean. L'histoire de navigation de l'utilisateur.
+
indexedDB {{optional_inline}}
+
boolean. Données IndexedDB.
+
localStorage {{optional_inline}}
+
boolean. Données de stockage local.
+
passwords {{optional_inline}}
+
boolean. Mots de pass enregistrés, pour la saisie semi-automatique.
+
pluginData {{optional_inline}}
+
boolean. Données stockées associées aux plugins.
+
serverBoundCertificates {{optional_inline}}
+
boolean. Certificats liés au serveur stockés.
+
serviceWorkers {{optional_inline}}
+
boolean. Données mises en cache par les travailleurs du service.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browsingData.DataTypeSet")}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.browsingData.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar}}
+ +

Permet aux extensions d'effacer les données accumulées pendant la navigation de l'utilisateur.

+ +

Dans l'API browsingData, les données de navigations sont divisées en types :

+ + + +

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.

+ +

Toutes les fonctions browsingData.remove[X]() prennent un objet  {{WebExtAPIRef("browsingData.RemovalOptions")}} que vous pouvez utiliser pour contrôler deux autres aspects de la suppression des données :

+ + + +

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.

+ +

Pour utiliser cette API, vous devez disposer de l'API permission "browseData".

+ +

Types

+ +
+
{{WebExtAPIRef("browsingData.DataTypeSet")}}
+
Objet utilisé pour spécifier le type de données à supprimer: par exemple, l'historique, les téléchargements, les mots de passe, etc.
+
{{WebExtAPIRef("browsingData.RemovalOptions")}}
+
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.
+
+ +

Méthodes

+ +
+
{{WebExtAPIRef("browsingData.remove()")}}
+
Supprime les données de navigation pour les types de données spécifiés.
+
{{WebExtAPIRef("browsingData.removeCache()")}}
+
Efface le cache du navigateur.
+
{{WebExtAPIRef("browsingData.removeCookies()")}}
+
Supprime les cookies
+
{{WebExtAPIRef("browsingData.removeDownloads()")}}
+
Supprime la liste des fichiers téléchargés.
+
{{WebExtAPIRef("browsingData.removeFormData()")}}
+
Efface les données de formulaire enregistrées.
+
{{WebExtAPIRef("browsingData.removeHistory()")}}
+
Efface l'historique du navigateur.
+
{{WebExtAPIRef("browsingData.removeLocalStorage()")}}
+
Efface tout stockage local créé par des sites web.
+
{{WebExtAPIRef("browsingData.removePasswords()")}}
+
Efface les mots de passe enregistrés.
+
{{WebExtAPIRef("browsingData.removePluginData()")}}
+
Efface les données associées aux plugins.
+
{{WebExtAPIRef("browsingData.settings()")}}
+
Obtient la valeur actuelle des paramètres dans la fonction "Effacer l'historique" du navigateur
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browsingData", 2)}}

+ + + +

{{WebExtExamples("h2")}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.browsingData.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Le type browsingData.RemovalOptions contient des options permettant de contrôler certains aspects de la suppression des données de navigation.

+ +

Type

+ +

Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes:

+ +
+
hostnames {{optional_inline}}
+
+

Array of string. 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.

+ +

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  URL 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.

+
+
originTypes {{optional_inline}}
+
+

object. 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 ("unprotectedWeb") 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.

+ +

Cet objet peut contenir l'une des propriétés suivantes :

+ +
+
unprotectedWeb {{optional_inline}}
+
boolean. Si présent et true, supprime les données de la pages Web normales.
+
protectedWeb {{optional_inline}}
+
boolean. Si présent et true, supprime les données de site Web qui ont été installés en tant qu'applications hébergées.
+
extension {{optional_inline}}
+
boolean. Si présent et true, supprime les données d'extensions.
+
+
+
since {{optional_inline}}
+
number. Jusqu'à quand remontent les données, données en millisecondes depuis l'époque UNIX. 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é since est omise, la valeur par défaut est 0, ce qui signifie "pour toujours".
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browsingData.RemovalOptions", 2)}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.browsingData.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Supprime les données de navigation spécifiées.

+ +

Les données de navigation à supprimer sont spécifiées dans l'option  dataTypes, qui est un objet  {{WebExtAPIRef("browsingData.DataTypeSet")}}.

+ +

Vous pouvez utiliser l'option removalOptions, 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.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var removing = browser.browsingData.remove(
+  removalOptions,            // RemovalOptions object
+  dataTypes                  // DataTypeSet object
+)
+
+ +

Paramètres

+ +
+
removalOptions
+
object. 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.
+
dataTypes
+
object. Un objet {{WebExtAPIRef("browsingData.DataTypeSet")}}, décrit les types de données à supprimer (par exemple, historique, les téléchargements,...).
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browsingData.remove")}}

+ +

Exemples

+ +

Supprimer l'historique des téléchargements et de l'histoire de navigation de la semaine dernière :

+ +
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);
+
+ +

Supprimer tout l'historique de téléchargement et de navigation :

+ +
function onRemoved() {
+  console.log("removed");
+}
+
+function onError(error) {
+  console.error(error);
+}
+
+browser.browsingData.remove({},
+  {downloads: true, history: true}).
+then(onRemoved, onError);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.browsingData.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Effacer le cache du navigateur.

+ +

Notez que cette fonction puisse prendre un objet  {{WebExtAPIRef("browsingData.RemovalOptions")}}, elle sera ignorée. Le cache entier est toujours effacé lors de l'utilisation de cette fonction.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var removing = browser.browsingData.removeCache(
+  removalOptions            // RemovalOptions object
+)
+
+ +

Paramètres

+ +
+
removalOptions {{optional_inline}}
+
object. Un objet {{WebExtAPIRef("browsingData.RemovalOptions")}}. Ce paramètre n'a aucun effet
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browsingData.removeCache")}}

+ +

Exemples

+ +

Effacer le cache du navigateur :

+ +
function onRemoved() {
+  console.log("removed");
+}
+
+function onError(error) {
+  console.error(error);
+}
+
+browser.browsingData.removeCache({}).
+then(onRemoved, onError);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.browsingData.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Efface les cookies du navigateur

+ +

Vous pouvez utiliser le paramètre removalOptions, qui est un objet  {{WebExtAPIRef("browsingData.RemovalOptions")}} pour :

+ + + +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var removing = browser.browsingData.removeCookies(
+  removalOptions            // RemovalOptions object
+)
+
+ +

Paramètres

+ +
+
removalOptions
+
object. 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.
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browsingData.removeCookies")}}

+ +

Exemples

+ +

Supprime les cookies créés la semaine dernière :

+ +
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);
+ +

Supprime tous les cookies :

+ +
+

Avertissement
+ 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).
+
+ Si vous souhaitez simplement effacer tous les cookies sans perturber les installations de stockage locales, utilisez browser.cookies pour faire une boucle et supprimer le contenu de tous les magasins de cookies.

+
+ +
function onRemoved() {
+  console.log("removed");
+}
+
+function onError(error) {
+  console.error(error);
+}
+
+browser.browsingData.removeCookies({}).
+then(onRemoved, onError);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.browsingData.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Vous pouvez utiliser le paramètre removalOptions, qui est un objet {{WebExtAPIRef("browsingData.RemovalOptions")}} pour :

+ + + +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var removing = browser.browsingData.removeDownloads(
+  removalOptions            // RemovalOptions object
+)
+
+ +

Paramètres

+ +
+
removalOptions
+
object. 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.
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browsingData.removeDownloads")}}

+ +

Exemples

+ +

Supprime les enregistrements d'objets téléchargés la semaine dernière :

+ +
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.removeDownloads(
+  {since: oneWeekAgo}).
+then(onRemoved, onError);
+ +

Supprime tous les enregistrements d'objets téléchargés :

+ +
function onRemoved() {
+  console.log("removed");
+}
+
+function onError(error) {
+  console.error(error);
+}
+
+browser.browsingData.removeDownloads({}).
+then(onRemoved, onError);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.browsingData.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Efface les données que le navigateur a enregistré pour les formulaires de remplissage automatique.

+ +

Vous pouvez utiliser le paramètre removalOptions, qui est un objet {{WebExtAPIRef("browsingData.RemovalOptions")}}, pour :

+ + + +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var removing = browser.browsingData.removeFormData(
+  removalOptions            // RemovalOptions object
+)
+
+ +

Paramètres

+ +
+
object. 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..
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browsingData.removeFormData")}}

+ +

Exemples

+ +

Supprimer les données de formulaire enregistrées la semaine dernière :

+ +
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.removeFormData(
+  {since: oneWeekAgo}).
+then(onRemoved, onError);
+ +

Supprimer tous les données de formulaire enregistrées :

+ +
function onRemoved() {
+  console.log("removed");
+}
+
+function onError(error) {
+  console.error(error);
+}
+
+browser.browsingData.removeFormData({}).
+then(onRemoved, onError);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.browsingData.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Efface l'enregistrement des pages Web que l'utilisateur a visité (historique de navigation).

+ +

Vous pouvez utiliser le paramètre removalOptions, qui est un objet  {{WebExtAPIRef("browsingData.RemovalOptions")}} pour :

+ + + +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var removing = browser.browsingData.removeHistory(
+  removalOptions            // RemovalOptions object
+)
+
+ +

Paramètres

+ +
+
removalOptions
+
object. 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.
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browsingData.removeHistory", 10)}}

+ +

Exemples

+ +

Supprimer les enregistrements de la page visitées de la semaine dernière :

+ +
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.removeHistory(
+  {since: oneWeekAgo}).
+then(onRemoved, onError);
+ +

Supprimer tous les enregistrements des pages visitées :

+ +
function onRemoved() {
+  console.log("removed");
+}
+
+function onError(error) {
+  console.error(error);
+}
+
+browser.browsingData.removeHistory({}).
+then(onRemoved, onError);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.browsingData.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Efface tout le stockage local créé par des sites Web.

+ +

Vous pouvez utiliser le paramètre removalOptions, qui est un objet {{WebExtAPIRef("browsingData.RemovalOptions")}} pour :

+ + + +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var removing = browser.browsingData.removeLocalStorage(
+  removalOptions            // RemovalOptions object
+)
+
+ +

Paramètres

+ +
+
removalOptions
+
object. 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.
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browsingData.removeLocalStorage", 10)}}

+ +

Exemples

+ +

Supprime tout le stockage local :

+ +
function onRemoved() {
+  console.log("removed");
+}
+
+function onError(error) {
+  console.error(error);
+}
+
+browser.browsingData.removeLocalStorage({}).
+then(onRemoved, onError);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.browsingData.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Efface les mots de passes enregistrés

+ +

Vous pouvez utiliser le paremètre removalOptions, qui est un objet {{WebExtAPIRef("browsingData.RemovalOptions")}} pour :

+ + + +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var removing = browser.browsingData.removePasswords(
+  removalOptions            // RemovalOptions object
+)
+
+ +

Paramètres

+ +
+
removalOptions
+
object. 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.
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browsingData.removePasswords")}}

+ +

Exemples

+ +

Supprimer les mots de passe enregistrés la semaine dernière :

+ +
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);
+ +

Supprime tous les mots de passe enregistrés :

+ +
function onRemoved() {
+  console.log("removed");
+}
+
+function onError(error) {
+  console.error(error);
+}
+
+browser.browsingData.removePasswords({}).then(onRemoved, onError);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.browsingData.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Efface les données stockées par les plugins du navigateur.

+ +

Vous pouvez utiliser le paramètre removalOptions, qui est un objet {{WebExtAPIRef("browsingData.RemovalOptions")}}, pour :

+ + + +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var removing = browser.browsingData.removePluginData(
+  removalOptions            // RemovalOptions object
+)
+
+ +

Paramètres

+ +
+
removalOptions
+
object. 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.
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browsingData.removePluginData")}}

+ +

Exemples

+ +

Supprimer les données stockées par les plugins au cours de la dernière semaine :

+ +
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);
+ +

Supprimer toutes les données stockées par les plugins :

+ +
function onRemoved() {
+  console.log("removed");
+}
+
+function onError(error) {
+  console.error(error);
+}
+
+browser.browsingData.removePluginData({}).
+then(onRemoved, onError);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.browsingData.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Cette fonction renvoie la valeur actuelle de ces paramètres.

+ +

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.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var getSettings = browser.browsingData.settings()
+
+ +

Paramètres

+ +

Aucun.

+ +

Valeur retournée

+ +

Une Promise qui sera remplie avec un objet contenant les informations sur les paramètres. Cet objet a trois propriétés :

+ +
+
options
+
{{WebExtAPIRef("browsingData.RemovalOptions")}}. Un objet  RemovalOptions décrivant les options de suppression actuellement sélectionnées.
+
dataToRemove
+
{{WebExtAPIRef("browsingData.DataTypeSet")}}. 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 true si ce type est sélectionné pour la suppression et false dans le cas contraire.
+
dataRemovalPermitted
+
{{WebExtAPIRef("browsingData.DataTypeSet")}}. Cela contiendra une propriété pour chaque type de données pouvant être basculé dans l'interface utilisateur du navigateur. Chacune aura la valeur  true si l'administrateur du périphérique a autorisé l'utilisateur à supprimer ce type, et false dans le cas contraire.
+
+ +

Si une erreur se produit, la  promise sera rejetée avec un message d'erreur.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.browsingData.settings")}}

+ +

Exemples

+ +

Paramètres des Logs courrants :

+ +
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);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.browsingData.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Renvoyer l'URL canonique de la page de détection du portail des prisonniers. En lecture seule.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.captivePortal.canonicalURL")}}

+ +

{{WebExtExamples}}

+ +
Remerciements + +

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

+ +

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.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Retourne le temps écoulé depuis que la dernière demande a été complétée.

+ +

Syntaxe

+ +
var state = browser.captivePortal.getLastChecked()
+
+ +

Valeur retournée

+ +

Une Promise qui est remplie avec un nombre entier représentant le temps en millisecondes.

+ + + +

{{WebExtExamples}}

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.captivePortal.getLastChecked")}}

+ + 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 +--- +
{{AddonSidebar()}}
+ +

Renvoie l'état du portail comme unknown, not_captive, unlocked_portal, ou locked_portal.

+ +

Syntaxe

+ +
var state = browser.captivePortal.getState()
+
+ +

Valeur retournée

+ +

Une Promise qui est remplie avec une chaîne de caractères contenant l'un des éléments suivants unknown, not_captive, unlocked_portal, ou locked_portal.

+ +

{{WebExtExamples}}

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.captivePortal.getState")}}

+ + 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 +--- +
{{AddonSidebar}}
+ +

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.

+ +

Pour utiliser cette API, vous devez disposer de la permission "captivePortal".

+ +

Propriétés

+ +
+
{{WebExtAPIRef("captivePortal.canonicalURL")}}
+
Renvoyer l'URL canonique de la page de détection du portail des prisonniers. En lecture seule.
+
+ +

Fonctions

+ +
+
{{WebExtAPIRef("captivePortal.getLastChecked()")}}
+
Retourne le temps, en millisecondes, depuis que la dernière demande a été complétée.
+
{{WebExtAPIRef("captivePortal.getState()")}}
+
Renvoie l'état du portail comme étant inconnu, unknown, not_captive, unlocked_portal, ou locked_portal.
+
+ +

Evénements

+ +
+
{{WebExtAPIRef("captivePortal.onConnectivityAvailable")}}
+
S'allume lorsque le service de portail captif détermine que l'utilisateur peut se connecter à l'internet.
+
{{WebExtAPIRef("captivePortal.onStateChanged")}}
+
+

S'allume lorsque l'état de portail captif change

+
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.captivePortal")}}

+ + + +

{{WebExtExamples("h2")}}

+ + 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 +--- +
{{AddonSidebar()}}
+ +

S'allume lorsque le service de portail captif détermine que l'utilisateur peut se connecter à l'internet.

+ +

Syntaxe

+ +
browser.captivePortal.onConnectivityAvailable.addListener(callback)
+browser.captivePortal.onConnectivityAvailable.removeListener(listener)
+browser.captivePortal.onConnectivityAvailable.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un auditeur à cet événement
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'auditeur à retirer.
+
hasListener(listener)
+
Vérifiez si listener est inscrit à cet événement. Renvoie true si c'est un auditeur, sinon false .
+
+ +

Syntaxe addListener

+ +

Paramétres

+ +
+
callback
+
+

Fonction qui est appelée lorsque cet événement se produit. La fonction se voit transmettre les arguments suivants :

+ +
+
status
+
string Le statut du service, étant celui de captive s'il y a un portail captif déverrouillé présent ou clear si aucun portail captif n'est détecté
+
+
+
+ +

Exemples

+ +

Gérer la capacité d'un utilisateur de changement à se connecter à l'internet :

+ +
function handleConnectivity(connectivityInfo) {
+  console.log("The captive portal status: " + connectivityInfo.status);
+}
+
+browser.captivePortal.onConnectivityAvailable.addListener(handleConnectivity);
+
+ +

{{WebExtExamples}}

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.captivePortal.onConnectivityAvailable")}}

+ + 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 +--- +
{{AddonSidebar()}}
+ +

S'allume lorsque l'état de portail captif change.

+ +

Syntaxe

+ +
browser.captivePortal.onStateChanged.addListener(callback)
+browser.captivePortal.onStateChanged.removeListener(listener)
+browser.captivePortal.onStateChanged.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un auditeur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument de listener est l'auditeur à retirer.
+
hasListener(listener)
+
Vérifiez si listener est inscrit à cet événement. Renvoie true si c'est un auditeur, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramétres

+ +
+
callback
+
+

Fonction qui est appelée lorsque cet événement se produit. La fonction se voit transmettre les arguments suivants :

+ +
+
details
+
+

string L'État portail captif, étant l'un des unknown, not_captive, unlocked_portal, ou locked_portal.

+
+
+
+
+ +

Exemples

+ +

Gérer un changement de statut de portail captif :

+ +
function handlePortalStatus(portalstatusInfo) {
+  console.log("The portal status is now: " + portalstatusInfo.details);
+}
+
+browser.captivePortal.onStateChanged.addListener(handlePortalStatus)
+
+ +

{{WebExtExamples}}

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.captivePortal.onStateChanged")}}

+ + 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 +--- +
{{AddonSidebar}}
+ +

L'API presse-papiers 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.

+ +

Cette API WebExtension existe principalement parce que l'API standard du presse-papiers Web ne prend pas en charge l'écriture d'images dans le presse-papiers. 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.

+ +

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 Interaction avec le presse-papier.

+ +

Cette API est basée sur l'API de clipboard de Chrome, mais cette API n'est disponible que pour les applications Chrome et non pour les extensions.

+ +

Pour utiliser cette API, vous devez avoir la permission "clipboardWrite".

+ +

Fonctions

+ +
+
{{WebExtAPIRef("clipboard.setImageData()")}}
+
Copiez une image dans le presse-papiers.
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.clipboard", 1, 1)}} {{WebExtExamples("h2")}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.clipboard.

+
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 +--- +
{{AddonSidebar()}}
+ +

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é.

+ +

L'image est fournie en tant que ArrayBuffer contenant l'image codée. Les formats JPEG et PNG sont pris en charge.

+ +

Bien que cette API soit basée sur l'API clipboard.setImageData() de Chrome, il existe certaines différentes :

+ + + +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
browser.clipboard.setImageData(imageData, imageType)
+
+ +

Paramètres

+ +
+
imageData
+
ArrayBuffer. Les données de l'image codées.
+
imageType
+
Un {{domxref("DOMString")}} indiquant le type d'image contenue dans le fichier imageData: "png" ou "jpeg".
+
+ +

Valeur de retour

+ +

Une Promise 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).

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.clipboard.setImageData", 10)}}

+ +

Exemples

+ +

Copiez une image distante :

+ +
// requires:
+// * the host permission for "https://cdn.mdn.mozilla.net/*"
+// * the API permission "clipboardWrite"
+
+fetch('https://cdn.mdn.mozilla.net/static/img/favicon144.png')
+.then(response => response.arrayBuffer())
+.then(buffer => browser.clipboard.setImageData(buffer, 'png'));
+ +

Copiez une image fournie avec l'extension :

+ +
// requires the API permission "clipboardWrite"
+
+fetch(browser.runtime.getURL('image.png'))
+.then(response => response.arrayBuffer())
+.then(buffer => browser.clipboard.setImageData(buffer, 'png'));
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.clipboard.

+
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 +--- +
{{AddonSidebar()}}
+ +

Information sur une commande. Cela contient les informations spécifiées pour la commande dans la  commande clef manifest.json.

+ +

Un tableau de ces objets est renvoyé par {{WebExtAPIRef('commands.getAll()')}}.

+ +

Type

+ +

Les valeurs de ce type  sont des objets. Ils contiennent les propriétés suivantes :

+ +
+
name{{optional_inline}}
+
string. Nom de la commande. Cela sera passé dans l'écouteur de l'événement  {{WebExtAPIRef('commands.onCommand')}}.
+
description{{optional_inline}}
+
string. Description de cette commande. Ceci est principalement utilisé pour expliquer à l'utilisateur ce que cette commande fait.
+
shortcut{{optional_inline}}
+
string. clef(s) utilisée pour exécuter cette commande , spécifiée comme une chaîne comme "Ctrl+Shift+Y".
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.commands.Command")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.commands.

+
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 +--- +
{{AddonSidebar()}}
+ +

Obient toutes les commandes pour l'exécution que vous avez enregistré à l'aide d'une des commandes clef du manifest.json.

+ +

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, browser.commands.getAll(),  les commandes sont passées dans l'argument onFulfilled à Promise.then().

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var getCommands = browser.commands.getAll();
+
+ +

Paramètres

+ +

Aucun.

+ +

Valeur retournée

+ +

Une Promise qui sera accompli avec un tableau  d'objets {{WebExtAPIRef('commands.Command')}}, un pour  chaque commande enregistrée pour l'extension. Si aucune n'a été enregistrée, le tableau  sera vide.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.commands.getAll")}}

+ +

Exemples

+ +
function logCommands(commands) {
+  commands.forEach(function(command) {
+    console.log(command);
+  });
+}
+
+var getCommands = browser.commands.getAll();
+getCommands.then(logCommands);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.commands.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar}}
+ +

Écoutez l'utilisateur exécutant les commandes que vous avez enregistrées à l'aide des clés commandes du fichier manifest.json.

+ +

Types

+ +
+
{{WebExtAPIRef("commands.Command")}}
+
Objet représentant une commande. Il contient les informations spécifiées pour la commande dans les clés commands du fichier manifest.json.
+
+ +

Fonctions

+ +
+
{{WebExtAPIRef("commands.getAll")}}
+
+

Obtient toutes les commandes enregistrées pour cette extension.

+
+
{{WebExtAPIRef("commands.reset")}}
+
+

Réinitialiser la description de la commande donnée et le raccourci vers les valeurs données dans la clé “manifest”.

+
+
{{WebExtAPIRef("commands.update")}}
+
+

Modifiez la description ou le raccourci de la commande donnée.

+
+
+ +

Événements

+ +
+
{{WebExtAPIRef("commands.onCommand")}}
+
+
Activé lorsqu'une commande est exécutée à l'aide du raccourci clavier associé.
+
+
+ +

Compatibilité des navigateurs

+ +

{{Compat("webextensions.api.commands")}} {{WebExtExamples("h2")}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.commands.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +
Lancer quand une commande est exécutée à l'aide de son raccourci clavier associé.
+ +
+ +
L'écouteur reçoit  le nom de la commande. Cela correspond au nom donnée à la commande dans une  entrée manifest.json.
+ +

Syntaxe

+ +
browser.commands.onCommand.addListener(listener)
+browser.commands.onCommand.removeListener(listener)
+browser.commands.onCommand.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à un événement.
+
removeListener(listener)
+
Arrêter d'écouter un événement. L'arguement listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement . Renvoie true s'il écoute, false sinon.
+
+ +

Syntaxe addListener

+ +

Paramètre

+ +
+
callback
+
+

Fonction qui sera appelée lorsqu'un utilisateur entre dans le raccourci de la commande. La fonction recevra les arguments suivants :

+ +
+
name
+
string. Nom de la commande. Cela correspond au nom donné à la commande dans son entrée manifest.json.
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.commands.onCommand")}}

+ +

Exemples

+ +
Etant donnée une entrée manifest.json comme ceci :
+ +
+ +
+
"commands": {
+  "toggle-feature": {
+    "suggested_key": {
+      "default": "Ctrl+Shift+Y"
+    },
+    "description": "Send a 'toggle-feature' event"
+  }
+}
+
+ +
Vous pouvez écouter cette commande particulière comme ceci :
+ +
+ +
+
browser.commands.onCommand.addListener(function(command) {
+  if (command == "toggle-feature") {
+    console.log("toggling the feature!");
+  }
+});
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.commands.

+
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 +--- +
{{AddonSidebar()}}
+ +

Réinitialise la description de la commande donnée et le raccourci clavier aux valeurs indiquées dans commands de la clé du manifest.json de l'extension.

+ +

Cela annule efficacement les modifications apportées à la commande à l'aide de la fonction {{WEbExtAPIRef("commands.update()")}}.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
browser.commands.reset(
+  name // string
+);
+
+ +

Paramètres

+ +
+
name
+
string. Nom de la commande à réinitialiser, comme indiqué par la propriété name de l'objet {{WebExtAPIRef("commands.Command")}}.
+
+ +

Valeur retournée

+ +

Une Promise qui sera remplie sans arguments lorsque le raccourci a été réinitialisé.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.commands.reset")}}

+ +

Exemples

+ +

Réinitialise la commande "my-command" lorsque l'utilisateur clique sur le bouton "reset" :

+ +
const commandName = 'my-command';
+
+function resetShortcut() {
+  browser.commands.reset(commandName);
+}
+
+document.querySelector('#reset').addEventListener('click', resetShortcut);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Changez la description ou le raccourci clavier pour la commande donnée.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
browser.commands.update(
+  details // object
+);
+
+ +

Paramètres

+ +
+
details
+
object. Un objet avec les propriétés suivantes:
+
+
+
name
+
string. e nom de la commande à mettre à jour. Cela doit correspondre au nom d'une commande existante, comme indiqué par exemple dans la propriété name de l'objet {{WebExtAPIRef("commands.Command")}}.
+
description{{optional_inline}}
+
string. Une nouvelle description à définir pour la commande.
+
shortcut{{optional_inline}}
+
string. Un nouveau raccourci à définir pour la commande. Cela doit correspondre au format donné dans la documentation pour les commands de la clé manifest.json. S'il ne correspond pas à ce format, la fonction va générer une erreur.
+
+
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.commands.update")}}

+ +

Exemples

+ +

Met à jour la commande "my-command" avec la valeur de raccourci donnée, lorsque l'utilisateur clique sur "update" :

+ +
const commandName = 'my-command';
+
+function updateShortcut() {
+  browser.commands.update({
+    name: commandName,
+    shortcut: document.querySelector('#shortcut').value
+  });
+}
+
+document.querySelector('#update').addEventListener('click', updateShortcut);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar}}
+ +

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.

+ +

Cette API est très similaire à la clé "content_scripts" du manifest.json, à l'exception de "content_scripts" , l'ensemble des scripts de contenu et des motifs associés est fixé au moment de l'installation. Avec l'API contentScripts, une extension peut enregistrer et  désenregistrer des scripts au moment de l'exécution.

+ +

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 Promise qui est résolue avec un objet {{WebExtAPIRef("contentScripts.RegisteredContentScript")}}.

+ +

L'objet RegisteredContentScript représente les scripts enregistrés dans l'appel register() . Il définit une méthode unregister() 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.

+ +

Il n'y a pas de permission de l'API contentScripts, mais une extension doit disposer des permissions d'hôte appropriées pour tous les modèles qu'elle transmet à register().

+ +

Types

+ +
+
{{WebExtAPIRef("contentScripts.RegisteredContentScript")}}
+
+

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.

+
+
+ +

Fonctions

+ +
+
{{WebExtAPIRef("contentScripts.register()")}}
+
Enregistre les scripts de contenu donnés.
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.contentScripts", 10, 1)}}

+ +

 {{WebExtExamples("h2")}}

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 +--- +
{{AddonSidebar()}}
+ +

Utilisez cette fonction pour enregistrer un ou plusieurs scripts de contenu.

+ +

Il accepte un paramètre, qui est un objet avec des propriétés similaires aux objets donnés dans la clé du manifest content_scripts (mais notez que content_scripts est un tableau d'objets, tandis que l'argument de register() est un simple objet).

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var registering = browser.contentScripts.register(
+  contentScriptOptions       // object
+)
+
+ +

Paramètres

+ +
+
contentScriptOptions
+
+

object. Un objet RegisteredContentScriptOptions représentant les scripts de contenu à enregistrer. Sa syntaxe est similaire à celle des objets du tableau de clés de manifest content_scripts.  Les différences sont :

+ +
    +
  • les noms de propriété utilisent camelCase plutôt que des traits de soulignement (par exemple, excludeMatches, pas exclude_matches
  • +
  • les propriétés js et css vous permettent d'enregistrer des chaînes ainsi que des URL, leur syntaxe doit donc distinguer ces types.
  • +
+ +

L'objet RegisteredContentScriptOptions a les propriétés suivantes :

+ +
+
allFrames{{optional_inline}}
+
Identique à all_frames dans la clé content_scripts.
+
css{{optional_inline}}
+
Un tableau d'objets. Chaque objet possède soit une propriété nommée file, 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, qui est un code CSS à enregistrer.
+
excludeGlobs{{optional_inline}}
+
Identique à exclude_globs dans la clé content_scripts.
+
excludeMatches{{optional_inline}}
+
Identique à exclude_matches dans la clé content_scripts.
+
includeGlobs{{optional_inline}}
+
Identique à include_globs dans la clé content_scripts.
+
js{{optional_inline}}
+
Un tableau d'objets. Chaque objet possède soit une propriété nommée file, 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, qui est du code JavaScript à enregistrer.
+
matchAboutBlank{{optional_inline}}
+
Identique à match_about_blank dans la clé content_scripts.
+
matches
+
Identique à matches dans la clé content_scripts.
+
runAt{{optional_inline}}
+
Identique à run_at dans la clé content_scripts.
+
+
+
+ +

Return value

+ +

Une Promise qui sera remplie avec un objet {{WebExtAPIRef("contentScripts.RegisteredContentScript")}} que vous pouvez utiliser pour annuler l'enregistrement des scripts de contenu.

+ +

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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.contentScripts.register", 10)}}

+ +

Exemples

+ +

Cet exemple enregistre le script de contenu defaultCode  pour toutes les URL .org :

+ +
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);
+ +

Ce code enregistre le fichier JS à l'adresse content_scripts/example.js:

+ +
const scriptObj = await browser.contentScripts.register({
+  "js": [{file: "/content_scripts/example.js"}],
+  "matches": ["<all_urls>"],
+  "allFrames": true,
+  "runAt": "document_start"
+});
+
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Un RegisteredContentScript est renvoyé par un appel à  {{WebExtAPIRef("contentScripts.register()")}} et représente les scripts de contenu enregistrés dans cet appel.

+ +

Il définit une seule fonction {{WebExtAPIRef("contentScripts.RegisteredContentScript.unregister()", "unregister()")}}, qui peut être utilisée pour annuler l'enregistrement des scripts de contenu.

+ +
+

Note: 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.

+
+ +

Méthodes

+ +
+
{{WebExtAPIRef("contentScripts.RegisteredContentScript.unregister","unregister()")}}
+
Annule l'inscription des scripts de contenu représentés par cet objet.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.contentScripts.RegisteredContentScript", 10)}}

+ +

Exemples

+ +

Ce code permet de basculer un script de contenu enregistré sur un clic d'action du navigateur :

+ +
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);
+
+
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +
Annule l'inscription des scripts de contenu représentés par cet objet RegisteredContentScript.
+ +

Syntaxe

+ +
registered.unregister()
+
+ +

Paramètres

+ +

None.

+ +

Valeur retournée

+ +

None.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.contentScripts.RegisteredContentScript.unregister", 10)}}

+ +

Exemples

+ +

Ce code permet de basculer un script de contenu enregistré sur un clic d'action du navigateur :

+ +
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);
+
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Le type contextualIdentities.ContextualIdentity décrit une identité contextuelle unique.

+ +

Type

+ +

Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :

+ +
+
cookieStoreId
+
string. 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.
+
color
+
+

string. La couleur pour l'identité. Cela sera montré dans les onglets appartenant à cette identité. Les valeurs suivantes sont valides :

+ +
    +
  • "blue"
  • +
  • "turquoise"
  • +
  • "green"
  • +
  • "yellow"
  • +
  • "orange"
  • +
  • "red"
  • +
  • "pink"
  • +
  • "purple"
  • +
  • "toolbar"
  • +
+ +

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 clé thème "toolbar_field_text").

+
+
colorCode
+
string. Un code hexadécimal représentant la couleur exacte utilisée pour l'identité. Par exemple : "#37adff". Dans le cas particulier de la couleur "toolbar", colorCode est toujours "#7c7c7d", quelle que soit la couleur affichée.
+
icon
+
+

string. 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 :

+ +
    +
  • "fingerprint"
  • +
  • "briefcase"
  • +
  • "dollar"
  • +
  • "cart"
  • +
  • "circle"
  • +
  • "gift"
  • +
  • "vacation"
  • +
  • "food"
  • +
  • "fruit"
  • +
  • "pet"
  • +
  • "tree"
  • +
  • "chill"
  • +
  • "fence"
  • +
+
+
iconUrl
+
string. Une URL complète resource:// pointant vers l'icône de l'identité. Par exemple : "resource://usercontext-content/fingerprint.svg".
+
name
+
string. 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 .
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.contextualIdentities.ContextualIdentity")}}

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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var createContext = browser.contextualIdentities.create(
+  details                  // object
+)
+
+ +

Paramètres

+ +
+
details
+
+

object. Un objet contenant des propriétés pour la nouvelle identité contextuelle. Cela contient les propriétés suivantes :

+ +
+
name
+
+

string. 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é.

+
+
color
+
+

string. 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 :

+ +
    +
  • "blue"
  • +
  • "turquoise"
  • +
  • "green"
  • +
  • "yellow"
  • +
  • "orange"
  • +
  • "red"
  • +
  • "pink"
  • +
  • "purple"
  • +
  • "toolbar" 
  • +
+
+
icon
+
+

string. 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 :

+ +
    +
  • "fingerprint"
  • +
  • "briefcase"
  • +
  • "dollar"
  • +
  • "cart"
  • +
  • "circle"
  • +
  • "gift"
  • +
  • "vacation"
  • +
  • "food"
  • +
  • "fruit"
  • +
  • "pet"
  • +
  • "tree"
  • +
  • "chill"
  • +
  • "fence"
  • +
+
+
+
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.contextualIdentities.create")}}

+ +

Exemples

+ +

Cet exemple crée une nouvelle identité contextuelle et enregistre son ID de cookie :

+ +
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);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Obtient des informations sur une identité contextuelle, compte tenu de son ID de cookie.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var getContext = browser.contextualIdentities.get(
+  cookieStoreId                  // string
+)
+
+ +

Paramètres

+ +
+
cookieStoreId
+
+

string. 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.

+
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Comptatiblité du navigateur

+ + + +

{{Compat("webextensions.api.contextualIdentities.get")}}

+ +

Exemples

+ +

Cet exemple tente de récupérer l'identité contextuelle dont l'ID est "firefox-container-1":

+ +
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);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar}}
+ +

Travailler avec des identités contextuelles : lister, créer, supprimer et mettre à jour des identités contextuelles.

+ +

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.

+ +

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…

+ +

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 privacy.userContext.enabled sur true. 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.

+ +

Avant Firefox 57, l’API contextualIdentities n’était disponible que si la fonctionnalité d’identités contextuelles était activée. Si une extension essayait d’utiliser l’API contextualIdentities sans activer la fonctionnalité, les appels de méthode résolvaient leurs promesses avec false.

+ +

À partir de Firefox 57, si une extension utilisant l’API  contextualIdentities 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 contextualIdentities rejetteront leurs promesses avec un message d’erreur.

+ +

Pour plus d’informations sur les identités contextuelles, consultez ce guide.

+ +

Les identités contextuelles ne sont actuellement pas supportes dans les autres navigateurs.

+ +

Pour utiliser cette API, vous devez inclure la permission « contextualIdentities » dans votre fichier manifest.json.

+ +

Types

+ +
+
{{WebExtAPIRef("contextualIdentities.ContextualIdentity")}}
+
Contient des informations sur une identité contextuelle.
+
+ +

Fonctions

+ +
+
{{WebExtAPIRef("contextualIdentities.create()")}}
+
Crée une nouvelle identité contextuelle.
+
{{WebExtAPIRef("contextualIdentities.get()")}}
+
Récupère une identité contextuelle unique, compte tenu de son ID de cookie.
+
{{WebExtAPIRef("contextualIdentities.query()")}}
+
Récupère toutes les identités contextuelles ou toutes les identités contextuelles avec un nom particulier.
+
{{WebExtAPIRef("contextualIdentities.update()")}}
+
Met à jour les propriétés d’une identité contextuelle existante.
+
{{WebExtAPIRef("contextualIdentities.remove()")}}
+
Supprime une identité contextuelle.
+
+

Événements

+
+
{{WebExtAPIRef("contextualIdentities.onCreated")}}
+
Lancé lorsqu’une identité contextuelle est créée
+
{{WebExtAPIRef("contextualIdentities.onRemoved")}}
+
Lancé lorsqu’une identité contextuelle est supprimée
+
{{WebExtAPIRef("contextualIdentities.onUpdated")}}
+
Lancé lorsqu’une ou plusieurs propriétés d’une identité contextuelle sont mises à jour
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.contextualIdentities")}}

+ +

{{WebExtExamples("h2")}}

+ +

 

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 +--- +
{{AddonSidebar()}}
+ +

Lancé lorsqu'une nouvelle identité contextuelle est créée. Les identités contextuelles peuvent être créées par des extensions en utilisant l'API contextualIdentities, ou directement par l'utilisateur, en utilisant l'interface utilisateur du navigateur.

+ +

Syntaxe

+ +
browser.contextualIdentities.onCreated.addListener(listener)
+browser.contextualIdentities.onCreated.removeListener(listener)
+browser.contextualIdentities.onCreated.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(listener)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
changeInfo
+
object. Un objet contenant une seule propriété, contextualIdentity, qui est un objet {{WebExtAPIRef("contextualIdentities.ContextualIdentity")}} représentant l'identité créée.
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.contextualIdentities.onCreated")}}

+ +

Examples

+ +
function handleCreated(changeInfo) {
+  console.log(`Created: ${changeInfo.contextualIdentity.name}`);
+}
+
+browser.contextualIdentities.onCreated.addListener(handleCreated);
+ +

{{WebExtExamples}}

+ + 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 +--- +
{{AddonSidebar()}}
+ +

Lancé lorsqu'une nouvelle identité contextuelle est supprimée. Les identités contextuelles peuvent être supprimées par des extensions en utilisant l'API contextualIdentities,  ou directement par l'utilisateur, en utilisant l'interface utilisateur du navigateur.

+ +

Syntaxe

+ +
browser.contextualIdentities.onRemoved.addListener(listener)
+browser.contextualIdentities.onRemoved.removeListener(listener)
+browser.contextualIdentities.onRemoved.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(listener)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
changeInfo
+
object. Un objet qui contient une seule propriété, contextualIdentity, qui est un objet {{WebExtAPIRef("contextualIdentities.ContextualIdentity")}} représentant l'identité qui a été supprimée.
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.contextualIdentities.onRemoved")}}

+ +

Exemples

+ +
function handleRemoved(changeInfo) {
+  console.log(`Removed: ${changeInfo.contextualIdentity.name}`);
+}
+
+browser.contextualIdentities.onRemoved.addListener(handleRemoved);
+ +

{{WebExtExamples}}

+ + 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 +--- +
{{AddonSidebar()}}
+ +

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 contextualIdentities , ou directement par l'utilisateur, en utilisant l'interface utilisateur du navigateur.

+ +

Syntaxe

+ +
browser.contextualIdentities.onUpdated.addListener(listener)
+browser.contextualIdentities.onUpdated.removeListener(listener)
+browser.contextualIdentities.onUpdated.hasListener(listener)
+
+ +

Events have three functions:

+ +
+
addListener(listener)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si le listener est enregistré pour cet événement. Renvoie trues'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
changeInfo
+
object. Un objet qui contient une seule propriété, contextualIdentity, qui est un objet {{WebExtAPIRef("contextualIdentities.ContextualIdentity")}} représentant l'identité dont les propriétés ont été mises à jour.
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.contextualIdentities.onUpdated")}}

+ +

Exemples

+ +
function handleUpdated(changeInfo) {
+  console.log(`Updated: ${changeInfo.contextualIdentity.name}`);
+}
+
+browser.contextualIdentities.onUpdated.addListener(handleUpdated);
+ +

{{WebExtExamples}}

+ + 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 +--- +
{{AddonSidebar()}}
+ +

Obtient des informations sur toutes les identités contextuelles ou sur les identités contextuelles correspondant à un argument de filtre donné.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var getContext = browser.contextualIdentities.query(
+  details                  // object
+)
+
+ +

Paramètres

+ +
+
details
+
+

object. Un objet qui peut être utilisé pour filtrer les identités contextuelles renvoyées. Cela peut contenir l'une des propriétés suivantes :

+ +
+
name {{optional_inline}}
+
string. Renvoie uniquement les identités contextuelles avec ce nom.
+
+
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.contextualIdentities.query")}}

+ +

Exemples

+ +

Retrieve all contextual identities, and log their names :

+ +
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);
+ +

Récupérez toutes les identités contextuelles dont les noms sont "my-thing", et consignez leurs noms :

+ +
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);
+
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Supprime une identité contextuelle, compte tenu de son ID de cookie.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var removeContext = browser.contextualIdentities.remove(
+  cookieStoreId                  // string
+)
+
+ +

Paramètres

+ +
+
cookieStoreId
+
+

string. 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.

+
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.contextualIdentities.remove")}}

+ +

Exemples

+ +

Cet exemple tente de supprimer l'identité contextuelle dont l'ID est "firefox-container-1" :

+ +
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);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Met à jour les propriétés d'une identité contextuelle, compte tenu de son ID de cookie.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var createContext = browser.contextualIdentities.update(
+  cookieStoreId,           // string
+  details                  // object
+)
+
+ +

Paramètres

+ +
+
cookieStoreId
+
+

string. 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.

+
+
details
+
+

object. 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 :

+ +
+
name {{optional_inline}}
+
+

string. 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é.

+
+
color {{optional_inline}}
+
+

string. 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 :

+ +
    +
  • "blue"
  • +
  • "turquoise"
  • +
  • "green"
  • +
  • "yellow"
  • +
  • "orange"
  • +
  • "red"
  • +
  • "pink"
  • +
  • "purple"
  • +
  • "toolbar" 
  • +
+
+
icon {{optional_inline}}
+
+

string. Une nouvelle icône pour l'identité. Vous pouvez fournir l'une des valeurs suivantes ici :

+ +
    +
  • "fingerprint"
  • +
  • "briefcase"
  • +
  • "dollar"
  • +
  • "cart"
  • +
  • "circle"
  • +
  • "gift"
  • +
  • "vacation"
  • +
  • "food"
  • +
  • "fruit"
  • +
  • "pet"
  • +
  • "tree"
  • +
  • "chill"
  • +
  • "fence"
  • +
+
+
+
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.contextualIdentities.update")}}

+ +

Exemples

+ +

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 :

+ +
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);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Le type Cookie de l'API {{WebExtAPIRef("cookies")}} représente des informations sur un cookie HTTP.

+ +

Type

+ +

Les valeurs de ce type sont des objets, qui peuvent contenir les propriétés suivantes :

+ +
+
domain
+
Une chaîne représentant le domaine auquel appartient le cookie (par exemple "www.google.com", "example.com").
+
expirationDate{{optional_inline}}
+
Un number 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.
+
firstPartyDomain
+
Une chaîne 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 Isolement de la première partie.
+
hostOnly
+
Un booléen, true 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  false dans la case contraire.
+
httpOnly
+
Un booléen, true si le cookie est marqué comme  HttpOnly (c'est à dire le cookie est inaccessible aux scripts côté client), ou false dans le cas contraire.
+
name
+
Une chaîne représentant le nom du cookie.
+
path
+
Une chaîne représentant le chemin du cookie.
+
secure
+
Un booléen, 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 false dans le cas contraire.
+
session
+
Un boolean, true si le cookie est un cookie de session, ou false s'il s'agit d'un cookie persistant avec une date expiration.
+
sameSite
+
Une valeur {{WebExtAPIRef("cookies.SameSiteStatus")}} qui indique l'état SameSite du cookie.
+
storeId
+
Une chaine représentant l'ID du cookie store contenant ce cookie, tel que fourni par {{WebExtAPIRef("cookies.getAllCookieStores()")}}.
+
value
+
Une chaîne représentant la valeur du cookie.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.cookies.Cookie")}}

+ +

Exemples

+ +

La plupart des méthodes de l'API cookies impliquent qu'un objet Cookie    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 Cookie.

+ +

Dans l'exemple ci-dessous, nous avons demandé tous les cookies, puis enregistré quelque-unes des valeurs de chacun des objets Cookie :

+ +
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);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Le type CookieStore de l'API {{WebExtAPIRef("cookies")}} représente un cookie store dans le navigateur.

+ +

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.

+ +

Type

+ +

Les valeurs de ce type sont des objets, qui peuvent contenir les propriétés suivantes :

+ +
+
id
+
Une chaîne représentant l'identification unique pour le cookie store.***
+
incognito
+
Une valeur booléenne qui indique s'il s'agit d'un magasin de cookies incognito.
+
tabIds
+
Un tableau d'entiers, qui identifie tous les onglets du navigateur qui partagent ce cookie store.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.cookies.CookieStore")}}

+ +

Exemples

+ +

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.

+ +
function logStores(cookieStores) {
+  for(store of cookieStores) {
+    console.log(`Cookie store: ${store.id}\n Tab IDs: ${store.tabIds}`);
+  }
+}
+
+var getting = browser.cookies.getAllCookieStores();
+getting.then(logStores);
+ +

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.

+ +
browser.cookies.getAllCookieStores().then((stores) => {
+  var incognitoStores = stores.map(store => store.incognito);
+  console.log(`Of ${stores.length} cookie stores, ${incognitoStores.length} are incognito.`);
+});
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

La méthode get() de l'API {{WebExtAPIRef("cookies")}} récupère les informations d'un seul cookie, par son nom et son URL.

+ +

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 null est retourné.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var getting = browser.cookies.get(
+  details                // object
+)
+
+ +

Paramètres

+ +
+
details
+
Un objet contenant les informations pouvant être utilisées pour récupérer un cookie. Il peut inclure les propriétés suivantes :
+
+
+
firstPartyDomain{{optional_inline}}
+
Une chaîne 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 Isolement de la première partie.
+
name
+
Une chaîne représentant le nom du cookie à récupérer.
+
storeId{{optional_inline}}
+
Une chaîne 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é.
+
url
+
Une chaîne 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   permissions d'hôte pour cette URL ne sont pas spécifiées dans le fichier manifeste de l'extension, l'appel de l'API échouera.
+
+
+
+ +

Valeur retournée

+ +

Une Promise qui sera remplie avec un objet {{WebExtAPIRef('cookies.Cookie', 'Cookie')}} contenant des détails sur le cookie, ou null si le cookie n'a pas été trouvé.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.cookies.get")}}

+ +

Exemples

+ +

Cet exemple tente d'obtenir le cookie nommé "favourite-colour", associé à l'URL de l'onglet actuellement actif :

+ +
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);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

La méthode getAll() de l'API {{WebExtAPIRef("cookies")}} récupère tous les cookies d'un seul cookie store qui correspondent aux informations fournies.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var getting = browser.cookies.getAll(
+  details                // object
+)
+
+ +

Paramètres

+ +
+
details
+
Un object contenant des détails pouvant être utilisés pour faire correspondre les cookies à extraire. Les propriétés incluses sont les suivantes (voir type de cookie pour plus d'informations sur celles-ci ) :
+
+
+
domain{{optional_inline}}
+
Une chaîne 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).
+
firstPartyDomain{{optional_inline}}
+
Une chaîne 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. Vous pouvez cependant passer null dans cette situation. Si vous faites cela, alors les cookies avec n'importe quelle valeur pour firstPartyDomain, ainsi que les cookies qui n'ont pas de set firstPartyDomain , seront inclus dans les résultats. Voir Isolement de la première partie.
+
name{{optional_inline}}
+
Une chaîne représentant un nom que les cookies devraient avoir.
+
path{{optional_inline}}
+
Une chaîne représentant un chemin - le chemin des cookies doit être identique à celui-ci.
+
secure{{optional_inline}}
+
Un booléen — filtre les cookies par leur propriété sécurisée, vous permettant de filtrer les cookies sécurisés contre les cookies non sécurisés.
+
session{{optional_inline}}
+
Un booléen— filtre les cookies en fonction de leur propriété de session, ce qui vous permet de filtrer les cookies de session par rapport aux cookies persistants.
+
storeId{{optional_inline}}
+
Une chaîne 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é.
+
url{{optional_inline}}
+
Une chaîne représentant une URL à laquelle les cookies récupérés doivent être associés.
+
+
+
+ +

Valeur retournée

+ +

Une Promise qui sera remplie avec un tableau d'objets   {{WebExtAPIRef('cookies.Cookie')}} correspondant aux propriétés données dans le paramètre details. 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.cookies.getAll")}}

+ +

Exemples

+ +

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.

+ +
function logCookies(cookies) {
+  for (let cookie of cookies) {
+    console.log(cookie.value);
+  }
+}
+
+var gettingAll = browser.cookies.getAll({
+  name: "favourite-colour"
+});
+gettingAll.then(logCookies);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

La méthode getAllCookieStores() de l'API {{WebExtAPIRef("cookies")}} retourne une liste de tous les cookies stores.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var gettingStores = browser.cookies.getAllCookieStores()
+
+ +

Paramètres

+ +

Aucun.

+ +
+
+
+
+
+
+ +

Valeur renvoyée

+ +

Une Promise qui sera remplie avec un tableau d'objets {{WebExtAPIRef('cookies.CookieStore')}} représentant tous les cookies stores existants.

+ +

Compatibibilité du navigateur

+ + + +

{{Compat("webextensions.api.cookies.getAllCookieStores")}}

+ +

Exemples

+ +

Dans l'extrait suivant, la méthode getAllCookieStores() 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.

+ +
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);
+ +

Chaque membre du tableau cookieStores est un objet  {{WebExtAPIRef("cookies.CookieStore")}}.

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+ + +
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 +--- +
{{AddonSidebar}}
+ +

Permet aux extensions d'obtenir et de définir des cookies, et d'être averti quand ils changent.

+ +

Pour utiliser cette API, vous devez inclure l'API permission "cookies" dans votre fichier  manifest.json, ainsi que les permissions d'hôte  pour les sites dont vous devez accéder aux cookies. Voir les permissions cookies.

+ +

Permissions

+ +

Pour utiliser cette API, un module complémentaire doit spécifier la  permission d'API "cookies" dans son manifest, ainsi que les permissions host 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 :

+ +
+
http://*.example.com/
+
+

Un module complémentaire avec cette autorisation d'hôte peut :

+ +
    +
  • Lire un cookie non sécurisé pour www.example.com, avec n'importe quel chemin.
  • +
  • Écrire un cookie ou non sécurisé pour www.example.com, avec n'importe quel chemin.
  • +
+ +

Il ne peut pas :

+ +
    +
  • Lire un cookie  sécurisé pour www.example.com.
  • +
+
+
http://www.example.com/
+
+

Un module complémentaire avec cette permission d'hôte peut :

+ +
    +
  • Lire un cookie non sécurisé pour www.example.com, avec n'importe quel chemin.
  • +
  • Lire un cookie non sécurisé pour .example.com, avec n'importe quel chemin.
  • +
  • Écrire un cookie sécurisé ou non sécurisé pour  www.example.com avec n'importe quel chemin.
  • +
  • Écrire un cookie sécurisé ou non sécurisé pour  .example.com avec n'importe quel chemin.
  • +
+ +

Il ne peut pas :

+ +
    +
  • Lire ou écrire un cookie pour foo.example.com.
  • +
  • Lire ou écrire un cookie pour foo.www.example.com.
  • +
+
+
*://*.example.com/
+
+

Un module complémentaire avec çà permission d'hôtes n add-on with this host permission may:

+ +
    +
  • Read or write a secure or non-secure cookie for www.example.com with any path.
  • +
+
+
+ +

Isolement de la première partie

+ +

Les cookies tiers sont des cookies qui sont définis par un site Web autre que celui sur lequel vous êtes actuellement. Par exemple :

+ +
    +
  1. Vous visitez bbc.com. Il contient une annonce de tracker.com qui définit un cookie associé au domaine "tracker.com".
  2. +
  3. Vous visitez cnn.com. Il contient également une annonce de  tracker.com qui définit un cookie associé au domaine "tracker.com".
  4. +
  5. Finalement, les deux cookies peuvent être envoyés à tracker.com. qui peut alors comprendre que le même utilisateur a visité les deux sites.
  6. +
+ +

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 bbc.com avec son cookie de cnn.com, de sorte que le tracker ne peut pas suivre un seul utilisateur sur les deux sites.

+ +

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 firstPartyIsolate de l'API de privacy Notez que l'isolation de première partie est activée par défaut dans le Tor Browser.

+ +

Dans l'API cookies, le domaine de première partie est représenté à l'aide de l'attribut firstPartyDomain. 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 "bbc.com" pour un cookie et "cnn.com" 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.
+
+ Le {{WebExtAPIRef("cookies.get()")}}, {{WebExtAPIRef("cookies.getAll()")}}, {{WebExtAPIRef("cookies.set()")}} et {{WebExtAPIRef("cookies.remove()")}} Les API acceptent toutes une option firstPartyDomain.

+ +

Lorsque l'isolation de première partie est activée, vous devez fournir cette option ou les appels de l'API échoueront. Pour get(), set(), et remove()vous devez passer une valeur de chaîne de caractères.

+ +

Pour getAll(),  vous pouvez aussi passer null ici, et ceci obtiendra tous les cookies,
+ qu'ils aient ou non une valeur non vide pour firstPartyDomain.

+ +

Lorsque l'isolation de la première partie est désactivée, le paramètre firstPartyDomain 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  null comme firstPartyDomain pour getAll() retournera tous les cookies.

+ +

Types

+ +
+
{{WebExtAPIRef("cookies.Cookie")}}
+
Représente les informations sur un cookie HTTP.
+
{{WebExtAPIRef("cookies.CookieStore")}}
+
Représente un cookie store dans le navigateur.
+
{{WebExtAPIRef("cookies.OnChangedCause")}}
+
Représente la raison pour laquelle un cookie a été modifié.***
+
{{WebExtAPIRef("cookies.SameSiteStatus")}}
+
Représente le même statut du cookie sur le site.
+
+ +

Méthodes

+ +
+
{{WebExtAPIRef("cookies.get()")}}
+
Récupère les informations sur un cookie unique.
+
{{WebExtAPIRef("cookies.getAll()")}}
+
Récupère tous les cookies correspondant à un ensemble de filtres données.
+
{{WebExtAPIRef("cookies.set()")}}
+
Définit un cookie avec les données d'un cookie donné ; peut remplacer les cookies équivalents s'ils existent.
+
{{WebExtAPIRef("cookies.remove()")}}
+
Supprime un cookie par son nom.
+
{{WebExtAPIRef("cookies.getAllCookieStores()")}}
+
Liste tous les cookies stores existants.
+
+ +

Gestionnaire d'événements

+ +
+
{{WebExtAPIRef("cookies.onChanged")}}
+
Détails quand un cookie est défini ou supprimé.
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.cookies")}}

+ +

{{WebExtExamples("h2")}}

+ +
Remerciements : + +

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

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

L'événement onChanged de l'API {{WebExtAPIRef("cookies")}} est déclenché lorsqu'un cookie est défini ou supprimé.

+ +

Notez que la mise à jour des propriétés d'un cookie est implémentée en deux étapes :

+ +
    +
  1. 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.
  2. +
  3. Ensuite, un nouveau cookie est écrit avec les valeurs mises à jour, généralement une seconde notification avec un {{WebExtAPIRef("cookies.OnChangedCause")}} explicite.
  4. +
+ +

Syntaxe

+ +
browser.cookies.onChanged.addListener(listener)
+browser.cookies.onChanged.removeListener(listener)
+browser.cookies.onChanged.hasListener(listener)
+
+ +

Cet API est également disponible en tant que  browser.cookies.onChanged.*.

+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à l'événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument de l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si l'écouteur est enregistré pour cet événement. Retourne true s'il écoute, false sinon.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Une fonction de rappel qui sera appelée lorsque l'événement se produira. La fonction recevra les arguments suivants :

+ +
+
changeInfo
+
Un objet contenant les détails de la modification survenue. Ses propriétés sont les suivantes :
+
+
+
removed
+
Un booléen défini sur true si un cookie a été supprimé et sinon  false.
+
cookie
+
Un objet {{WebExtAPIRef('cookies.Cookie')}} contenant les informations sur le cookie qui a été défini ou supprimé.
+
cause
+
Une valeur {{WebExtAPIRef('cookies.OnChangedCause')}} représentant la raison sous-jacente de la modification du cookie.
+
+
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.cookies.onChanged")}}

+ +

Exemples

+ +

Cet exemple écoute les événements onChanged et enregistre les détails de l'argument  changeInfo :

+ +
browser.cookies.onChanged.addListener(function(changeInfo) {
+  console.log('Cookie changed: ' +
+              '\n * Cookie: ' + JSON.stringify(changeInfo.cookie) +
+              '\n * Cause: ' + changeInfo.cause +
+              '\n * Removed: ' + changeInfo.removed);
+});
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Le type OnChangedCause de l'API {{WebExtAPIRef("cookies")}} représente la raison pour laquelle un cookie a été modifié.

+ +

Type

+ +

Les valeurs de ce type sont des chaînes. Les valeurs possibles sont :

+ +
+
evicted
+
Un cookie a été automatiquement supprimé en raison d'un nettoyage de mémoire.
+
expired
+
Un cookie a été automatiquement supprimé en raison de l'expiration.
+
explicit
+
Un cookie a été inséré ou supprimé via un appel explicite à {{WebExtAPIRef("cookies.remove()")}}.
+
expired_overwrite
+
Un cookie a été remplacé par un cookie dont la date d'expiration est déjà expirée.
+
overwrite
+
Un appel à {{WebExtAPIRef("cookies.set()")}} a remplacé ce cookie par un autre.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.cookies.OnChangedCause")}}

+ +

Exemples

+ +

Vous pouvez écouter l'événement {{WebExtAPIRef("cookies.onChanged")}} pour être averti lorsque les cookies changent. L'écouteur reçoit un objet  changeInfo qui contient une propriété cause, dont la valeur est une chaîne OnChangeCaused :

+ +
browser.cookies.onChanged.addListener(function(changeInfo) {
+  console.log('Cookie changed: ' +
+              '\n * Cookie: ' + JSON.stringify(changeInfo.cookie) +
+              '\n * Cause: ' + changeInfo.cause +
+              '\n * Removed: ' + changeInfo.removed);
+});
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

La méthode remove() de l'API {{WebExtAPIRef("cookies")}} supprime un cookie, compte tenu de son nom et de son URL.

+ +

L'appel réussit uniquement si vous incluez la permission de l'API "cookies" dans votre fichier manifest.json, ainsi que les permissions d'hôte pour l'URL indiquée dans son manifest.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var removing = browser.cookies.remove(
+  details               // object
+)
+
+ +

Paramètres

+ +
+
details
+
Un objet contenant des informations permettant d'identifier le cookie à supprimer. Il contient les propriétés suivantes :
+
+
+
firstPartyDomain{{optional_inline}}
+
Une chaîne 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 Isolement de la première partie.
+
name
+
Une chaîne représenant le nom du cookie à supprimer.
+
storeId{{optional_inline}}
+
Une chaîne 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.
+
url
+
Une chaîne représentant l'URL associée au cookie. Si l'extension n'a pas de permissions d'hôte pour cette URL, l'appel de l'API échouera.
+
+
+
+ +

Valeur retournée

+ +

Une Promise 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 details n'a pas pu être trouvé, la promesse est remplie avec null.  Si l'appel échoue pour une raison quelconque, la promesse sera rejetée avec un message d'erreur.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.cookies.remove")}}

+ +

Exemples

+ +

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 :

+ +
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);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +
+ +

Le type SameSiteStatus de l'API {{WebExtAPIRef("cookies")}} représente des informations sur l'état SameSite d'un cookie.

+ +

Type

+ +

Les valeurs de ce type sont des chaînes de caractères. Les valeurs possibles sont :

+ +
+
no_restriction
+
Représente un ensemble de cookies sans attribut SameSite.
+
lax
+
Correspond au SameSite=Lax
+
strict
+
Correspond à un ensemble de témoins avec SameSite=Strict
+
+ +

Voir les cookies HTTP pour plus d'informations.

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 +--- +
{{AddonSidebar()}}
+ +

La méthode set() 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 Set-Cookie lors d'une requête à une URL donnée.

+ +

L'appel réussit uniquement si vous incluez la permission de l'API "cookies" dans votre fichier manifest.json, ainsi que les permissions d'hôte 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.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var setting = browser.cookies.set(
+  details               // object
+)
+
+ +

Paramètres

+ +
+
details
+
Un objet contenant les détails du cookie que vous souhaitez définir. Il peut avoir les propriétés suivantes :
+
domain{{optional_inline}}
+
Une chaîne représentant le domaine du cookie. S’il est omis, le cookie devient un cookie hôte uniquement.
+
expirationDate{{optional_inline}}
+
Un nombre 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.
+
firstPartyDomain{{optional_inline}}
+
Une chaîne 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 Isolement de la première partie.
+
httpOnly{{optional_inline}}
+
Un booléen qui spécifie si le cookie doit être marqué comme  HttpOnly (true), ou pas (false). S’il est omis, la valeur par défaut est false.
+
name{{optional_inline}}
+
Une chaîne représentant le nom du cookie. S’il est omis, il est vide par défaut.
+
path{{optional_inline}}
+
Une chaîne 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.
+
sameSite{{optional_inline}}
+
Une valeur {{WebExtAPIRef("cookies.SameSiteStatus")}} qui indique l’état SameSite du cookie. Si omis, la valeur par défaut 0, 'no_restriction'.
+
secure{{optional_inline}}
+
Un booléen qui spécifie si le cookie doit être marqué comme sécurisé (true), ou pas (false). S’il est omis, la valeur par défaut est false.
+
storeId{{optional_inline}}
+
Une chaîne 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.
+
url
+
Une chaîne 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.
+
value{{optional_inline}}
+
Une chaîne représentant la valeur du cookie. S’il est omis, c’est vide par défaut.
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.cookies.set")}}

+ +

Exemples

+ +

Cet exemple définit un cookie pour le document hébergé par l'onglet actuellement actif :

+ +
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"
+  });
+}
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Exécute JavaScript dans la fenêtre à laquelle les devtools sont attachés.

+ +

C'est un peu comme utiliser {{WebExtAPIRef("tabs.executeScript()")}} pour joindre un script de contenu, mais avec deux différences principales:

+ +

Tout d'abord, le JavaScript peut utiliser un ensemble de commandes spéciales que les navigateurs fournissent généralement dans leur implémentation de console devtools : par exemple, en utilisant "$0" pour designer l'élément actuellement sélectionné dans l'inspecteur.

+ +

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 telle qu'elle existerait si aucun script de page n'était pas chargé. 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().

+ +

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.

+ +

Vous ne pouvez pas appeler eval() sur les fenêtres de navigateur privilégiées telles que "about: addons".

+ +

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.

+ +

La fonction eval() renvoie une Promise qui résout le résultat évalué du script ou une erreur.

+ +

Aides

+ +

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:

+ +
+
$0
+
Contient une référence à l'élément actuellement sélectionné dans l'inspecteur Devtools.
+
inspect()
+
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.
+
+ +

Voir quelques exemples.

+ +

Syntaxe

+ +
var evaluating = browser.devtools.inspectedWindow.eval(
+  expression,       // string
+  options           // object
+)
+
+ +

Paramètres

+ +
+
expression
+
string. 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.
+
options{{optional_inline}}
+
object. Options pour la fonction  (Notez que Firefox ne supporte pas encore cette option), comme suit :
+
+
+
frameURL{{optional_inline}}
+
string. 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.
+
useContentScriptContext{{optional_inline}}
+
boolean. 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.
+
contextSecurityOrigin {{optional_inline}}
+
string. 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 useContentScriptContext.
+
+
+
+ +

Valeur retournée

+ +

Une Promise qui sera remplie avec un tableau contenant deux éléments.

+ +

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.

+ +

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 :

+ + + +

Compatibilité des navigateurs

+ +

{{Compat("webextensions.api.devtools.inspectedWindow.eval")}}

+ + + +

Exemples

+ +

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.

+ +
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);
+});
+ +

Exemples d'aide

+ +

Cela utilise l'aide de $0 pour définir la couleur d'arrière-plan de l'élément, actuellement sélectionné dans l'inspecteur :

+ +
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);
+});
+
+ +

Cela utilise l'assistant l'inspection() pour sélectionner le premier élément <h1> dans la page:

+ +
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);
+});
+
+ +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API Chromium chrome.devtools.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar}}
+ +
+

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 APIs de devtools de Chrome, 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  Limitations des APIs devtools.

+
+ +

L'API devtools.inspectedWindow permet à un extension de devtools d'interagir avec la fenêtre sur laquelle les outils de développement sont attachés.

+ +

Comme toutes les APIs de devtools, cette API n'est disponible que pour exécuter le code dans le document défini dans la clé devtools_page 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 Extension des outils de développement  pour plus d'informations.

+ +

Propriétés

+ +
+
devtools.inspectedWindow.tabId
+
L'ID de la fenêtre sur laquelle sont attachés les outils du développeur.
+
+ +

Fonctions

+ +
+
devtools.inspectedWindow.eval()
+
Evaluez certains JavaScript dans la fenêtre de destination.
+
devtools.inspectedWindow.reload()
+
Rechargez le document de la fenêtre destination.
+
+ +

Comptatibilité navigateur

+ +

{{Compat("webextensions.api.devtools.inspectedWindow")}}

+ +

{{WebExtExamples("h2")}}

+ + + +
Remerciements + +

Cette API est basée sur l'API Chromium chrome.devtools.inspectedWindow.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Recharge la fenêtre à laquelle les devtools sont attachés.

+ +

Syntaxe

+ +
browser.devtools.inspectedWindow.reload(
+  reloadOptions       // object
+)
+
+ +

Paramètres

+ +
+
reloadOptions{{optional_inline}}
+
object. Options pour la fonction, comme suit
+
+
+
ignoreCache{{optional_inline}}
+
boolean. S'il est vrai, cela fait que le rechargement ignore le cache du navigateur (comme si l'utilisateur avait appuyé sur Shift+Ctrl+R).
+
userAgent{{optional_inline}}
+
string. Définissez un agent utilisateur personnalisé pour la page. Ici, la chaîne fournie sera envoyée dans l'en-tête de l'Agent utilisateur, et sera renvoyée par les appels à navigator.userAgent réalisé par des scripts s'exécutant sur la page.
+
injectedScript {{optional_inline}}
+
string. Injectez l'expression JavaScript donnée dans toutes les images de la page, avant tout autre script.
+
+
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.devtools.inspectedWindow.reload")}}

+ + + +

Exemples

+ +

Rechargez la fenêtre inspectée, définissez l'agent utilisateur et injectez un script

+ +
const reloadButton = document.querySelector("#reload-button");
+
+reloadButton.addEventListener("click", () => {
+  browser.devtools.inspectedWindow.reload({
+    injectedScript:"alert(navigator.userAgent);",
+    userAgent: "Not a real UA"
+  });
+});
+
+ +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API Chromium chrome.devtools.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

L'ID de {{WebExtAPIRef("tabs.Tab", "tab")}} est que cette instance des devtools est jointe, représenté comme un nombre.

+ +

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 :

+ +
// 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
+  });
+});
+ +
// background.js
+
+function handleMessage(request, sender, sendResponse) {
+  browser.tabs.executeScript(request.tabId, {
+    code: request.script
+  });
+}
+
+browser.runtime.onMessage.addListener(handleMessage);
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.devtools.inspectedWindow.tabId")}}

+ + + +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API Chromium chrome.devtools.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Obtenez un journal HAR pour la page chargée dans l'onglet en cours.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var getting = browser.devtools.network.getHAR()
+
+ +

Paramètres

+ +

None.

+ +

Valeur retournée

+ +

Une Promise 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 spécification HAR.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.devtools.network.getHAR")}}

+ +

Exemples

+ +

Consignez les URL des demandes contenues dans le journal HAR :

+ +
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);
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.devtools.network.

+
+ + 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 +--- +
{{AddonSidebar}}
+ +

L'API devtools.network 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).

+ +

Comme toutes les APIs de devtools, cette API est uniquement disponible pour le code exécuté dans le document défini dans la clé devtools_page du manifest.json, ou dans d'autres documents de devtools créés par l'extension (tel que le document du panneau). Voir Extension des outils de développement pour plus d'informations.

+ +

Fonctions

+ +
+
devtools.network.getHAR()
+
Obtenez le  journal HAR pour la page chargée dans l'onglet en cours..
+
+ +

Evénements

+ +
+
devtools.network.onNavigated
+
Attiré lorsque l'utilisateur navigue dans la fenêtre inspectée vers une nouvelle page.
+
devtools.network.onRequestFinished
+
Lancé lorsque la demande réseau est terminée et que ses détails sont disponibles pour l'extension.
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.devtools.network")}}

+ +

{{WebExtExamples("h2")}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.devtools.network.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Mise en place lorsque l'utilisateur navigue dans la fenêtre inspectée vers une nouvelle page

+ +

Syntaxe

+ +
browser.devtools.network.onNavigated.addListener(listener)
+browser.devtools.network.onNavigated.removeListener(listener)
+browser.devtools.network.onNavigated.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(listener)
+
Ajouter un auditeur à cet événement.
+
removeListener(listener)
+
Arrêter d'écouter un événement. L'argument de l'auditeur est l'auditeur à supprimer.
+
hasListener(listener)
+
Vérifiez si l'auditeur est enregistré pour cet événement. Renvoie vrai si elle écoute, sinon faux.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lors de l'événement. La fonction passera les arguments suivants :

+ +
+
url
+
string. La nouvelle URL pour la fenêtre.
+
+
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.devtools.network.onNavigated")}}

+ + + +

Exemples

+ +
function handleNavigated(url) {
+  console.log(url);
+}
+
+browser.devtools.network.onNavigated.addListener(handleNavigated);
+ +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API chrome.devtools de Chromium.

+ +

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.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Lancé lorsqu'une requête réseau est terminée et que ses détails sont disponibles pour l'extension.

+ +

La requête est donnée en tant qu'objet d'entrée HAR, qui est également doté d'une méthode getContent() asynchrone qui récupère le contenu du corps de la réponse.

+ +

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 moniteur réseau du navigateur au moins une fois.

+ +

Syntaxe

+ +
browser.devtools.network.onRequestFinished.addListener(listener)
+browser.devtools.network.onRequestFinished.removeListener(listener)
+browser.devtools.network.onRequestFinished.hasListener(listener)
+
+ +

Les événements ont trois fonctions

+ +
+
addListener(listener)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument de listener  est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie trues'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
request
+
object. Un objet représentant la requête. Cet objet est un seul objet d'entrée HAR. Il définit également une méthode getContent() asynchrone, qui renvoie une Promise qui se résout avec le corps de la réponse.
+
+
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.devtools.network.onRequestFinished")}}

+ + + +

Examples

+ +

Ajoutez un écouteur qui consigne l'adresse IP du serveur et le corps de la réponse pour chaque requête réseau.

+ +
function handleRequestFinished(request) {
+  console.log("Server IP: ", request.serverIPAddress);
+  request.getContent().then(content => {
+    console.log("Content: ", content);
+  });
+}
+
+browser.devtools.network.onRequestFinished.addListener(handleRequestFinished);
+ +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API chrome.devtools de Chromium.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Ajoute un nouveau panneau aux devtools.

+ +

Cette fonction prend : un titre, une URL vers un fichier d'icône et une URL vers un fichier HTML. Il crée un nouveau panneau dans les devtools, dont le contenu est spécifié par le fichier HTML. Il renvoie une Promise qui résout un objet ExtensionPanel représentant le nouveau panneau.

+ +

Syntaxe

+ +
var creating = browser.devtools.panels.create(
+  title,       // string
+  iconPath,    // string
+  pagePath     // string
+)
+
+ +

Parametères

+ +
+
title
+
string. 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.
+
iconPath
+
string. 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").
+
pagePath
+
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 Extention des outils de développement.
+
+ +

Valeur retournée

+ +

Une Promise qui sera remplie avec un objet ExtensionPanel représentant le nouveau panneau.

+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.devtools.panels.create")}}

+ + + +

Exemples

+ +

Créer un nouveau panneau, et ajoute des auditeurs à ces événements onShown et  onHidden :

+ +
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);
+});
+
+ +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API Chromium chrome.devtools.panels.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Un objet ElementsPanel qui représente l'inspecteur HTML/CSS du navigateur

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.devtools.panels.elements", 10)}}

+ +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API Chromium chrome.devtools.panels.

+
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 +--- +
{{AddonSidebar()}}
+ +

Ajoute un nouveau volet à la barre latérale dans l'inspecteur HTML / CSS.

+ +

L'inspecteur HTML / CSS, appelé l'inspecteur de page dans Firefox et le panneau éléments 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.

+ +

La fonction createSidebarPane() 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 :

+ +

+ +

Cette fonction prend un argument, qui est une chaîne représentant le titre du volet. Il renvoie une Promise qui se résout en un objet ExtensionSidebarPane représentant le nouveau volet. Vous pouvez utiliser cet objet pour définir le contenu et le comportement du volet.

+ +

Syntaxe

+ +
var creating = browser.devtools.panels.elements.createSidebarPane(
+  title       // string
+)
+
+ +

Paramètres

+ +
+
title
+
string. 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.
+
+ +

Valeur retournée

+ +

Une Promise qui sera remplie avec un objet ExtensionSidebarPane représentant le nouveau volet.

+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.devtools.panels.ElementsPanel.createSidebarPane", 10)}}

+ + + +

Exemples

+ +

Créez un nouveau volet et remplissez-le avec un objet JSON. Vous pouvez exécuter ce code dans un script chargé par la page devtools.

+ +
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);
+
+ +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API Chromium chrome.devtools.panels.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Un ElementsPanel 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.

+ +

Fonctions

+ +
+
devtools.panels.ElementsPanel.createSidebarPane()
+
Crée un volet dans la barre latérale de l'inspecteur.
+
+

Evénements

+
+
devtools.panels.ElementsPanel.onSelectionChanged
+
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".
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.devtools.panels.ElementsPanel", 10)}}

+ +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API Chromium chrome.devtools.panels.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Syntaxe

+ +
browser.devtools.panels.elements.onSelectionChanged.addListener(listener)
+browser.devtools.panels.elements.onSelectionChanged.removeListener(listener)
+browser.devtools.panels.elements.onSelectionChanged.hasListener(listener)
+
+ +

L'événement a trois fonctions :

+ +
+
addListener(listener)
+
Ajoute une écoute à cet événement.
+
removeListener(listener)
+
Arrête une écoute à l'événement. L'argument de l'auditeur est un auditeur supprimer.
+
hasListener(listener)
+
Vérifiez si l'auditeur est enregistré pour cet événement. Renvoie la valeur Vrai si elle l'écoute, sinon Faux.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lors de l'événement. La fonction ne passera pas d'arguments.

+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.devtools.panels.ElementsPanel.onSelectionChanged", 10)}}

+ +

Exemples

+ +

Ecoutez la sélection des événements modifiés, et enregistrez le contenu du texte de l'élément nouvellement sélectionné :

+ +
function handleSelectedElement() {
+  browser.devtools.inspectedWindow.eval("$0.textContent")
+    .then((result) => {
+      console.log(result[0]);
+    });
+}
+
+browser.devtools.panels.elements.onSelectionChanged.addListener(handleSelectedElement);
+ +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API Chromium chrome.devtools.

+
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 +--- +
{{AddonSidebar()}}
+ +

Une ExtensionPanel représente un panneau ajouté aux devtools. C'est la résolution de la Promise renvoyé par browser.devtools.panels.create().

+ +

Type

+ +

Les valeurs de ce type sont des objets. Définissez deux événements, onShown et onHidden.

+ + + +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.devtools.panels.ExtensionPanel")}}

+ + + +

Exemples

+ +

Ce code crée un nouveau panneau, puis ajoute des gestionnaires pour ces événements onShown et onHidden.

+ +
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);
+});
+ +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API Chromium chrome.devtools.panels.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar}}
+ +

L'objet ExtensionSidebarPane représente un volet qu'une extension a ajouté à la barre latérale dans l'inspecteur HTML/CSS du navigateur.

+ +

+ +

Pour créer un ExtensionSidebarPane, appelez la fonction browser.devtools.panels.elements.createSidebarane().

+ +

Fonctions

+ +
+
devtools.panels.ExtensionSidebarPane.setExpression()
+
+

É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.

+
+
devtools.panels.ExtensionSidebarPane.setObject()
+
+

Définit un objet JSON qui sera affiché dans le volet de la barre latérale.

+
+
devtools.panels.ExtensionSidebarPane.setPage()
+
+

Charge la page pointée par l'URL fournie.

+
+
+ +

Evénements

+ +
+
devtools.panels.ExtensionSidebarPane.onShown
+
Lancé lorsque le volet latéral est affiché.
+
devtools.panels.ExtensionSidebarPane.onHidden
+
Lancé lorsque le volet de la barre latérale est masqué.
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.devtools.panels.ExtensionSidebarPane", 10)}}

+ +

{{WebExtExamples("h2")}}

+ +
Remerciements + +

Cette API est basée sur l'API Chromium chrome.devtools.panels.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Appelé lorsque le volet de la barre latérale est masqué, suite à l'abandon de l'utilisateur.

+ +

Syntaxe

+ +
browser.devtools.panels.onHidden.addListener(listener)
+browser.devtools.panels.onHidden.removeListener(listener)
+browser.devtools.panels.onHidden.hasListener(listener)
+
+ +

Les événements ont trois fonctions:

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrête d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifie si listener est enregistré pour cet événement. Renvoie true s'il écoute,  sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction appelée lorsque cet événement se produit. Cette fonction sera passée sans arguments.

+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.devtools.panels.ExtensionSidebarPane.onHidden", 10)}}

+ +

Exemples

+ +

Créez un volet de barre latérale et journal afficher et masquer les événements.

+ +
function onCreated(sidebarPane) {
+
+  sidebarPane.onShown.addListener(() => {
+    console.log("Shown");
+  });
+
+  sidebarPane.onHidden.addListener(() => {
+    console.log("Hidden");
+  });
+
+}
+
+browser.devtools.panels.elements.createSidebarPane("My pane").then(onCreated);
+
+ +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API Chromium chrome.devtools.panels.

+
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 +--- +
{{AddonSidebar()}}
+ +

Lancé lorsque le volet latéral devient visible suite à un changement d'utilisateur.

+ +

Syntaxe

+ +
browser.devtools.panels.onShown.addListener(listener)
+browser.devtools.panels.onShown.removeListener(listener)
+browser.devtools.panels.onShown.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument de listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction sera passée sans arguments.

+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.devtools.panels.ExtensionSidebarPane.onShown", 10)}}

+ +

Exemples

+ +

Créez un volet de barre latérale et journal afficher et masquer les événements.

+ +
function onCreated(sidebarPane) {
+
+  sidebarPane.onShown.addListener(() => {
+    console.log("Shown");
+  });
+
+  sidebarPane.onHidden.addListener(() => {
+    console.log("Hidden");
+  });
+
+}
+
+browser.devtools.panels.elements.createSidebarPane("My pane").then(onCreated);
+
+ +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API Chromium chrome.devtools.panels.

+
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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Le contexte d'exécution de l'expression est le même que celui de inspectedWindow.eval().

+ +

 Les objets JSON et les noeuds DOM sont affichés en tant qu'arborescence extensible, comme dans la visionneuse jSON dans Firefox. Vous pouvez éventuellement spécifier une chaîne rootTitle : elle sera affichée comme le titre de la racine de l'arbre.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var evaluating = browser.devtools.panels.setExpression(
+  expression,       // string
+  rootTitle         // string
+)
+
+ +

Paramètres

+ +
+
expression
+
string. L'expression à évaluer.
+
rootTitle {{optional_inline}}
+
string. Le titre de la racine de l'arbre dans lequel les résultats sont affichés.
+
+ +

Valeur retournée

+ +

Une Promise sera remplie sans arguments, une fois l'expression évaluée.

+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.devtools.panels.ExtensionSidebarPane.setExpression", 10)}}

+ + + +

Exemples

+ +

Ce code crée un volet de barre latérale qui affiche le tagName de l'élément actuellement sélectionné :

+ +
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);
+
+ +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API Chromium chrome.devtools.panels.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Affiche un objet JSON dans le volet de la barre latérale de l'extension.

+ +

L'objet est affiché en tant qu'arborescence extensible, comme dans le JSON viewer dans Firefox. Vous pouvez éventuellement spécifier une chaîne rootTitle : elle sera affichée comme le titre de la racine de l'arbre.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var setting = browser.devtools.panels.setObject(
+  jsonObject,       // string, array, or JSON object
+  rootTitle         // string
+)
+
+ +

Paramètres

+ +
+
jsonObject
+
String ou Array ou Object. L'objet à afficher. S'il s'agit d'un objet JSON-serialized, donc les propriétés comme les fonctions seront omises.
+
rootTitle {{optional_inline}}
+
String. Le titre de la racine de l'arbre dans lequel l'objet est affiché.
+
+ +

Valeur retournée

+ +

Une Promise qui sera accomplie sans arguments, une fois l'objet défini.

+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.devtools.panels.ExtensionSidebarPane.setObject", 10)}}

+ + + +

Exemples

+ +

Créez un nouveau volet et remplissez-le avec un objet JSON. Vous pouvez exécuter ce code dans un script chargé par la page devtools. de votre extension

+ +
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);
+ +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API Chromium chrome.devtools.panels.

+
+ + 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 +--- +

Définit une page HTML à afficher dans le volet latéral.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
browser.devtools.panels.setPage(
+  path // string containing relative path to page
+)
+
+ +

Paramètres

+ +
+
extensionPageURL
+
string. Le chemin relatif d'une page HTML à afficher dans la barre latérale.
+
+ +

Valeur retournée

+ +

Une Promise qui sera tenue sans arguments, une fois l'URL définie.

+ +

La page sélectionnée ne sera pas chargée tant que l'utilisateur n'aura pas sélectionné la barre latérale devtools.

+ +

Exemples

+ +

Créez un nouveau volet et remplissez-le d'une page HTML. Vous pouvez exécuter ce code dans un script chargé par la page devtools de votre extension.

+ +
function onCreated(sidebarPane) {
+  sidebarPane.setPage('sidebar/sidebar.html');
+}
+
+ +

{{WebExtExamples}}

+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.devtools.panels.ExtensionSidebarPane.setPage", 10)}}

+ + + + + +
Remerciements + +

Cette API est basée sur l'API Chromium chrome.devtools.panels.

+
+ + 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 +--- +
{{AddonSidebar}}
+ +
+

Bien que les API soient basées sur les APIs de devtools de Chrome, 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  Limitations des APIs devtools.

+
+ +

L'API devtools.panels permet à une extension devtools de définir son interface utilisateur à l'intérieur de la fenêtre devtools.

+ +

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".

+ +

Avec l'API devtools.panels, vous pouvez créer de nouveaux panneaux dans la fenêtre des devtools.

+ +

Comme toutes les API de devtools, cette API est uniquement disponible pour le code exécuté dans le document défini dans la clé devtools_page du manifest.json, ou dans d'autres documents de déploiement créés par une extension (tel que le document du panneau). Voir Extension des outils de développement pour plus for d'informations.

+ +

Types

+ +
+
devtools.panels.ElementsPanel
+
Représente l'inspecteur HTML/CSS dans le devtools du navigateur
+
devtools.panels.ExtensionPanel
+
Représente un panneau de déploiement créé par l'extension.
+
devtools.panels.ExtensionSidebarPane
+
Représente un volet ajouté par une extension à l'inspecteur HTML/CC dans les devtools du navigateur.
+
+ +

Propriétés

+ +
+
devtools.panels.elements
+
Une référence à un objet ElementsPanel.
+
devtools.panels.themeName
+
Le nom du thème actuel des devtools.
+
+ +

Fonctions

+ +
+
devtools.panels.create()
+
Créé un nouveau panneau de développement
+
+ +

Evénements

+ +
+
devtools.panels.onThemeChanged
+
Mise en place lorsque le thème Devtools change.
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.devtools.panels", 2)}}

+ +

{{WebExtExamples("h2")}}

+ +
Remerciements + +

Cette API est basée sur l'API Chromium chrome.devtools.panels.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Remplacement quand le thème de devtools change

+ +

Syntaxe

+ +
browser.devtools.panels.onThemeChanged.addListener(listener)
+browser.devtools.panels.onThemeChanged.removeListener(listener)
+browser.devtools.panels.onThemeChanged.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un auditeur à cet événement
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument de l'auditeur est l'auditeur à supprimer.
+
hasListener(listener)
+
Vérifiez si l'auditeur est enregistré pour cet événement. Renvoie Vrai si elle écoute, sinon Faux.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Function qui sera appelée lors de l'événement. La fonction passera les arguments suivants :

+ +
+
themeName
+
string. Nom du nouveau thème : ce sera l'une des valeurs autorisées pour  devtools.panels.themeName.
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.devtools.panels.onThemeChanged")}}

+ +

Exemples

+ +
browser.devtools.panels.onThemeChanged.addListener((newThemeName) => {
+  console.log(`New theme: ${newThemeName}`);
+});
+
+ +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API Chromium chrome.devtools.panels.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar()}}
+ +

Le nom du thème de devtools actuellement sélectionné.

+ +

Il s'agit d'une chaîne dont les valeurs possibles sont :

+ + + +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.devtools.panels.themeName")}}

+ +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API Chromium chrome.devtools.panels.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +

{{AddonSidebar}}

+ +

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.

+ +

Pour utiliser cette API, vous devez disposer de la permission API "devtools" spécifiée dans votre fichier manifest.json. Cette permission ne peut pas être facultative.

+ +

Interfaces

+ +
+
{{WebExtAPIRef("devtools.inspectedWindow")}}
+
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.
+
{{WebExtAPIRef("devtools.network")}}
+
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).
+
{{WebExtAPIRef("devtools.panels")}}
+
Créer des panneaux d'interface utilisateur qui seront affichés dans les outils de développement de l'agent utilisateur.
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.devtools")}}

+ +
Remerciements + +

Cette API est basé sur l'API  chrome.downloads de Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar}}
+ +
Active une extension pour résoudre les noms de domaine.
+ +
+ +
Pour utiliser cette API, une extension doit demander la permission "dns" permission dans son fichier manifest.json .
+ +

Fonctions

+ +
+
{{WebExtAPIRef("dns.resolve()")}}
+
Résout le nom d'hôte donné en un enregistrement DNS
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.dns")}}

+ +

{{WebExtExamples("h2")}}

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 +--- +
{{AddonSidebar()}}
+ +

Résout le nom d'hôte donné en un enregistrement DNS.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var resolving = browser.dns.resolve(
+  hostname,    // string
+  flags        // array of string
+)
+
+ +

Paramètres

+ +
+
hostname
+
string. Le nom d'hôte à résoudre.
+
flags {{optional_inline}}
+
array de string. Drapeaux pour modifier la façon dont le nom d'hôte est résolu. Tous les indicateurs omis sont par défaut à false. Vous pouvez passer zéro ou plusieurs des indicateurs suivants :
+
+
    +
  • "allow_name_collisions": autorise les résultats de collision de noms qui sont normalement filtrés.
  • +
  • "bypass_cache": Supprime le cache de recherche DNS interne.
  • +
  • "canonical_name": Le nom canonique de l'hôte spécifié sera interrogé.
  • +
  • "disable_ipv4": Seules les adresses IPv6 seront renvoyées.
  • +
  • "disable_ipv6": Seules les adresses IPv4 seront renvoyées.
  • +
  • "disable_trr": 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 DNS-over-HTTPS dédié.
  • +
  • "offline": seuls les littéraux et les entrées mises en cache seront renvoyés.
  • +
  • "priority_low": La priorité est donnée à la requête. Si "priority_medium" est également donné, la requête est prioritaire.
  • +
  • "priority_medium": La priorité est donnée à la requête. Si "priority_low" est également donné, la requête est prioritaire
  • +
  • "speculate": 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.
  • +
+
+
+ +

Valeur retournée

+ +

A Promise qui sera remplie avec un objet DNSRecord object. Cet objet peut contenir les propriétés suivantes :

+ +
+
addresses
+
array of string. Les adresses IP associées à cet enregistrement DNS.
+
canonicalName
+
string. Le nom canonique de cet enregistrement. Ceci n'est inclus dans la réponse que si le drapeau "canonical_name"a été passé à  resolve().
+
isTRR
+
boolean: true si l'enregistrement a été récupéré à l'aide d'un TRR (Trusted Recursive Resolver).
+
+ +

Exemples

+ +
function resolved(record) {
+  console.log(record.addresses);
+}
+
+let resolving = browser.dns.resolve("example.com");
+resolving.then(resolved);
+
+// > e.g. Array [ "73.284.240.12" ]
+
+ +

Contournez le cache et demandez le nom canonique:

+ +
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" ]
+ +

{{WebExtExamples}}

+ + + +
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.dns.resolve")}}

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 +--- +
{{AddonSidebar()}}
+ +

La fonction acceptDanger() de l'API {{WebExtAPIRef("downloads")}} invite l'utilisateur à accepter ou à annuler un téléchargement potentiellement dangereux.

+ +

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).

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var prompting = browser.downloads.acceptDanger(
+  downloadId      // integer
+)
+
+ +

Parameters

+ +
+
downloadId
+
Un integer représentant l'id de {{WebExtAPIRef("downloads.DownloadItem", "DownloadItem")}} en question.
+
+ +

Valeur retournée

+ +

Une Promise. Lorsque la boîte de dialogue se ferme, la promesse sera remplie sans arguments.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.downloads.acceptDanger")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.downloads.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Le type BooleanDelta de l'API {{WebExtAPIRef("downloads")}} représente la différence entre deux booléens.

+ +

Type

+ +

Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :

+ +
+
current{{optional_inline}}
+
Un boolean représentant la valeur booléenne actuelle.
+
previous{{optional_inline}}
+
Un boolean représentant la valeur booléenne précédente.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.downloads.BooleanDelta")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.downloads.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

La fonction cancel() 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..

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var canceling = browser.downloads.cancel(
+  downloadId      // integer
+)
+
+ +

Paramètres

+ +
+
downloadId
+
integer. L'identifiant du téléchargement à annuler.
+
+ +

Valeur retournée

+ +

Une Promise. 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.downloads.cancel")}}

+ +

Exemples

+ +
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);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.downloads.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +

{{AddonSidebar()}}

+ +

Le type DangerType 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..

+ +

Une propriété de danger {{WebExtAPIRef('downloads.DownloadItem')}} contiendra une chaîne tirée des valeurs définies dans ce type.

+ +
+

Remarque : Ces constantes de chaîne ne changeront jamais, mais l'ensemble de DangerTypes peut change.

+
+ +

Type

+ +

Les valeurs de ce type sont des chaînes. Les valeurs possibles sont :

+ +
+
file
+
Le nom de fichier du téléchargement est suspect.
+
url
+
L'URL du téléchargement est connue pour être malveillante.
+
content
+
Le fichier téléchargé est connu pour être malveillant.
+
uncommon
+
L'URL du téléchargement n'est pas généralement téléchargée.
+
host
+
Le téléchargement provenait d'un hôte connu pour distribuer des binaires malveillants.
+
unwanted
+
Le téléchargement est potentiellement indésirable ou dangereux..
+
safe
+
Le téléchargement ne présente aucun danger connu pour l'ordinateur de l'utilisateur.
+
accepted
+
L'utilisateur a accepté le téléchargement dangereux.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.downloads.DangerType")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.downloads.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Le type DoubleDelta de l'API {{WebExtAPIRef("downloads")}} représente la différence entre deux doubles.

+ +

Type

+ +

Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :

+ +
+
current{{optional_inline}}
+
Un number représentant la double valeur actuelle.
+
previous{{optional_inline}}
+
Un number représentant la valeur double précédente.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.downloads.DoubleDelta")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.downloads.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

La fonction download() de l'API {{WebExtAPIRef("downloads")}} télécharge le fichier, compte tenu de son URL et d'autres préférences optionnelles.

+ + + +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var downloading = browser.downloads.download(
+  options                   // object
+)
+
+ +

Paramètres

+ +
+
options
+
Un object 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 :
+
+
+
allowHttpErrors{{optional_inline}}
+
Un tag booléen 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 false. Lorsqu'il est défini à : +
    +
  • false, le téléchargement est annulé lorsqu'il rencontre une erreur HTTP.
  • +
  • true, 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.
  • +
+
+
body{{optional_inline}}
+
Un string représentant le corps du message de la requête.
+
conflictAction{{optional_inline}}
+
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é).
+
filename{{optional_inline}}
+
Un string 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  (../) 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.
+
headers{{optional_inline}}
+
Si l'URL utilise les protocoles HTTP ou HTTPS, un array d'objects 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 name des clés et soit la value, soit la valeur binaryValue. Les en-têtes interdits par XMLHttpRequest et fetch ne peuvent pas être spécifiés, cependant, Firefox 70 et les versions ultérieures permettent d'utiliser l'en-tête Referer. Tenter d'utiliser un en-tête interdit provoque une erreur.
+
incognito{{optional_inline}}
+
Un boolean: 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.
+
method{{optional_inline}}
+
Un string représentant la méthode HTTP à utiliser si l'url utilise le protocole HTTP[S]. Cela peut être "GET" ou "POST".
+
saveAs{{optional_inline}}
+
+

Un boolean 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 (true), ou non (false).

+ +

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 browser.download.useDownloadDir dans about:config).

+ +
+

Note: Firefox pour Android provoque une erreur si saveAs est à  true. Le paramètre est ignoré lorsque saveAs est false ou non inclus.

+
+
+
url
+
Un string représentant l'URL à télécharger.
+
+
+
+ +

Valeur retournée

+ +

Une Promise. Si le téléchargement a démarré avec succès, la promesse sera remplie avec l'id de la nouvelle {{WebExtAPIRef("downloads.DownloadItem")}}. Sinon, la promesse sera rejetée avec un message d'erreur venant de  {{WebExtAPIRef("downloads.InterruptReason")}}.

+ +

Si vous utilisez URL.createObjectURL() pour télécharger des données créées en JavaScript et que vous voulez révoquer l'URL de l'objet (avec revokeObjectURL) plus tard (comme il est fortement recommandé), vous devez le faire après le téléchargement. Pour ce faire, écoutez l'événement downloads.onChanged.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.downloads.download")}}

+ +

Examples

+ +

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 uniquify conflictAction.

+ +
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);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.downloads.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Le type DownloadItem de l'API {{WebExtAPIRef("downloads")}} représente un fichier téléchargé.

+ +

Type

+ +

Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :

+ +
+
byExtensionId{{optional_inline}}
+
Un string 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.
+
byExtensionName{{optional_inline}}
+
Un string 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.
+
bytesReceived
+
Un number 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.
+
canResume
+
Un boolean indiquant si un téléchargement actuellement interrompu (par exemple en pause) peut être repris à partir du point où il a été interrompu (true), ou non (false).
+
danger
+
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')}}.
+
endTime{{optional_inline}}
+
Un string (au format ISO 8601) 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é.
+
error{{optional_inline}}
+
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.
+
estimatedEndTime{{optional_inline}}
+
Un string (au format ISO 8601) 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  DownloadItem qui est passé dans {{WebExtAPIRef("downloads.onCreated")}}).
+
exists
+
Un boolean indiquant si un fichier téléchargé existe toujours (true) ou non (false). 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.
+
filename
+
Un string représentant le chemin local absolu du fichier.
+
fileSize
+
Un number 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.
+
id
+
Un integer représentant un identifiant unique pour le fichier téléchargé qui est persistant entre les sessions du navigateur.
+
incognito
+
Un boolean qui indique si le téléchargement est enregistré dans l'historique du navigateur (false), ou non (true).
+
mime
+
Un string représentant le type MIME du fichier téléchargé.
+
paused
+
Un boolean 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 true, sinon false.
+
referrer
+
Un string représentant le référent du fichier téléchargé.
+
startTime
+
Un string (au format ISO 8601) représentant le nombre de millisecondes entre l'époque UNIX et le début du téléchargement.
+
state
+
Un string Indique si le téléchargement progresse, est interrompu ou terminé. Les valeurs possibles sont définies dans le type {{WebExtAPIRef('downloads.State')}}.
+
totalBytes
+
Un number 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..
+
url
+
Un string représentant l'URL absolue à partir de laquelle le fichier a été téléchargé.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.downloads.DownloadItem")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.downloads.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Le type DownloadQuery 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.

+ +

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.

+ +

Type

+ +

Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :

+ +
+
query{{optional_inline}}
+
Un tableau dechaines. Inclure uniquement {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} dont le nom de fichier ou l'URL contient toutes les chaînes données. Vous pouvez également inclure des termes commençant par un titet (-) — ces termes ne doivent pas figurer dans le nom du fichier ou l'url de l'élément à inclure.
+
startedBefore{{optional_inline}}
+
Un {{WebExtAPIRef('downloads.DownloadTime', "DownloadTime")}}. Inclure uniquement {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} qui a démarré avant l'heure indiquée.
+
startedAfter{{optional_inline}}
+
Un {{WebExtAPIRef('downloads.DownloadTime', "DownloadTime")}}. Inclure uniquement {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} qui a démarré après l'heure indiquée.
+
endedBefore{{optional_inline}}
+
Un {{WebExtAPIRef('downloads.DownloadTime', "DownloadTime")}}. Inclure uniquement {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} qui s'est terminé avant l'heure indiquée.
+
endedAfter{{optional_inline}}
+
Un {{WebExtAPIRef('downloads.DownloadTime', "DownloadTime")}}. Inclure uniquement {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} qui s'est terminé après l'heure indiquée.
+
totalBytesGreater{{optional_inline}}
+
Un number représentant un nombre d'octets. Inclure uniquement {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} dont le  totalBytes est supérieur au nombre donné.
+
totalBytesLess{{optional_inline}}
+
Un number représentant un nombre d'octets. Inclure seulement  {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} dont le totalBytes est inférieur au nombre donné.
+
filenameRegex{{optional_inline}}
+
Un string représentant une expression régulière. Inclure uniquement {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} dont le nom du fichier correspond à l'expression régulière donnée..
+
urlRegex{{optional_inline}}
+
Un string représentant une expression régulière. Inclure uniquement {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} dont la valeur d'url correspond à l'expression régulière donnée..
+
limit{{optional_inline}}
+
Un integer représentant un nombre de résultats. Incluez uniquement le nombre spécifié de {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}}.
+
orderBy{{optional_inline}}
+
Un tableaude chaînes représentant les propriétés  {{WebExtAPIRef("downloads.DownloadItem", "DownloadItem")}} les résultats de la recherche doivent être tirés par exemple, en incluant startTime puis totalBytes 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 -startTime.
+
id{{optional_inline}}
+
Un integer représentant l'ID du {{WebExtAPIRef("downloads.DownloadItem")}} que vous souhaitez interroger.
+
url{{optional_inline}}
+
Un string représentant l'URL absolue à partir de laquelle le téléchargement a été initié, avant toute redirection.
+
filename{{optional_inline}}
+
Un string représentant le chemin local absolu du fichier téléchargé que vous souhaitez interroger.
+
danger{{optional_inline}}
+
Une chaîne représentant un {{WebExtAPIRef('downloads.DangerType')}} — inclut uniquement {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} avec cette valeur de danger .
+
mime{{optional_inline}}
+
Un string représentant un type MIME. Incluez uniquement  {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} avec cette valeur mime.
+
startTime{{optional_inline}}
+
Un string représentant une heure au format ISO 8601. Incluez seulement  {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} avec cette valeur  startTime.
+
endTime{{optional_inline}}
+
Un string représentant une heure au format ISO 8601. Inclure uniquement sera limité à {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} avec cette valeur endTime.
+
state{{optional_inline}}
+
Un string représentant un téléchargement {{WebExtAPIRef('downloads.State')}} (in_progress, interrupted, or complete). Inclure uniquement {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} avec cette valeur d' état.
+
paused{{optional_inline}}
+
Un boolean 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 (true), ou non (false). inclure uniquement {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} avec cette valeur de pause.
+
error{{optional_inline}}
+
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'  erreur .
+
bytesReceived{{optional_inline}}
+
Un number 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 bytesReceived.
+
totalBytes{{optional_inline}}
+
Un number 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  totalBytes.
+
fileSize{{optional_inline}}
+
number. Nombre d'octets dans le fichier entier après la décompression, ou -1 si inconnu. Un nombre représentant le nombre total d'octets dans le fichier après la décompression. Inclure seulement {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} avec cette valeur fileSize.
+
exists{{optional_inline}}
+
Un boolean si un fichier téléchargé existe toujours (true) ou non (false). Inclure seulement {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} avec cette valeur existe.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.downloads.DownloadQuery")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.downloads.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Le type DownloadTime de l'API {{WebExtAPIRef("downloads")}} représente le temps nécessaire au téléchargement.

+ +

Type

+ +

Un DownloadTime peut être l'un de trois types différents :

+ + + +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.downloads.DownloadTime")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.downloads.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

La fonction  drag() de l'API {{WebExtAPIRef("downloads")}} initie le glissement du fichier téléchargé vers une autre application.

+ +

Syntaxe

+ +
chrome.downloads.drag(
+  downloadId // integer
+)
+
+ +

Cette API est également disponible en tant que browser.downloads.drag().

+ +

Paramètres

+ +
+
downloadId
+
Un integer représentant l'id du {{WebExtAPIRef("downloads.DownloadItem", "DownloadItem")}} ein question.
+
+ +

Browser compatibility

+ + + +

{{Compat("webextensions.api.downloads.drag")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.downloads.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

La fonction erase() 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.

+ +

Pour supprimer les fichiers du disque, vous devez utiliser {{WebExtAPIRef("downloads.removeFile()")}}.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +
+

Remarque : 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 erase(). 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.

+
+ +

Syntaxe

+ +
var erasing = browser.downloads.erase(
+  query                    // DownloadQuery
+)
+
+ +

Paramètres

+ +
+
query
+
Un objet {{WebExtAPIRef('downloads.DownloadQuery')}}.
+
+ +

Valeur retournée

+ +

Une Promise. 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.downloads.erase")}}

+ +

Exemples

+ +

Effacer le téléchargement le plus récent :

+ +
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);
+ +

Tout effacer :

+ +
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);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.downloads.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Le type FilenameConflictAction 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.

+ +

Ce type définit les valeurs pouvant être utilisées pour la propriété conflictAction du paramètre d'options {{WebExtAPIRef("downloads.download")}}.

+ +

Type

+ +

Les valeurs de ce type sont des chaînes. Les valeurs possibles sont :

+ +
+
"uniquify"
+
Le navigateur modifiera le nom de fichier pour le rendre unique.
+
"overwrite"
+
Le navigateur écrase l'ancien fichier avec le fichier nouvellement téléchargé.
+
"prompt"
+
Le navigateur invitera l'utilisateur, lui demandant de choisir s'il souhaite l'uniquifier ou l'écraser.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.downloads.FilenameConflictAction")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.downloads.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

La fonction getFileIcon() de l'API {{WebExtAPIRef("downloads")}} récupère une icône pour le téléchargement spécifié.

+ +

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é.

+ +

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.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var gettingIcon = browser.downloads.getFileIcon(
+  downloadId,           // integer
+  options               // optional object
+)
+
+ +

Paramètres

+ +
+
downloadId
+
Un integer eprésentant l'ID du téléchargement.
+
options{{optional_inline}}
+
Un object d'options représentant les préférences pour l'icône à extraire. Il peut prendre les propriétés suivantes :
+
+
+
size{{optional_inline}}
+
Un integer 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.
+
+
+
+ +

Valeur retournée

+ +

Une Promise. 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.downloads.getFileIcon")}}

+ +

Exemples

+ +

Cet exemple enregistre l'URL de l'icône pour le téléchargement le plus récent :

+ +
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);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.downloads.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar}}
+ +

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.

+ +

Pour utiliser cette API, vous devez disposer de l' API permission "downloads" spécifiée dans votre fichier manifest.json.

+ +

Types

+ +
+
{{WebExtAPIRef("downloads.FilenameConflictAction")}}
+
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.
+
{{WebExtAPIRef("downloads.InterruptReason")}}
+
Définit un ensemble de raisons possibles pour lesquelles un téléchargement a été interrompu.
+
{{WebExtAPIRef("downloads.DangerType")}}
+
Définit un ensemble d'avertissements communs des dangers possibles associés aux fichiers téléchargeables.
+
{{WebExtAPIRef("downloads.State")}}
+
Définit différents états dans lesquels un téléchargement en cours peut être.
+
{{WebExtAPIRef("downloads.DownloadItem")}}
+
Représente un fichier téléchargé.
+
{{WebExtAPIRef("downloads.StringDelta")}}
+
Représente la différence entre deux chaînes.
+
{{WebExtAPIRef("downloads.DoubleDelta")}}
+
Représente la différence entre deux doubles.
+
{{WebExtAPIRef("downloads.BooleanDelta")}}
+
Représente la différence entre deux booléens.
+
{{WebExtAPIRef("downloads.DownloadTime")}}
+
Représente le temps nécessaire au téléchargement pour terminer.
+
{{WebExtAPIRef("downloads.DownloadQuery")}}
+
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.
+
+ +

Fonctions

+ +
+
{{WebExtAPIRef("downloads.download()")}}
+
Télécharge un fichier, compte tenu de son URL et d'autres préférences optionnelles.
+
{{WebExtAPIRef("downloads.search()")}}
+
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.
+
{{WebExtAPIRef("downloads.pause()")}}
+
Suspend un téléchargement.
+
{{WebExtAPIRef("downloads.resume()")}}
+
Reprend un téléchargement suspendu.
+
{{WebExtAPIRef("downloads.cancel()")}}
+
Annule un téléchargement.
+
{{WebExtAPIRef("downloads.getFileIcon()")}}
+
Récupère une icône pour le téléchargement spécifié.
+
{{WebExtAPIRef("downloads.open()")}}
+
Ouvre le fichier téléchargé avec son application associée.
+
{{WebExtAPIRef("downloads.show()")}}
+
Ouvre l'application du gestionnaire de fichiers de la plateforme pour afficher le fichier téléchargé dans son dossier conteneur.
+
{{WebExtAPIRef("downloads.showDefaultFolder()")}}
+
Ouvre l'application du gestionnaire de fichiers de la plateforme pour afficher le dossier de téléchargements par défaut.
+
{{WebExtAPIRef("downloads.erase()")}}
+
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.
+
{{WebExtAPIRef("downloads.removeFile()")}}
+
Supprime un fichier téléchargé du disque, mais pas de l'historique de téléchargement du navigateur.
+
{{WebExtAPIRef("downloads.acceptDanger()")}}
+
Invite l'utilisateur à accepter ou annuler un téléchargement dangereux.
+
{{WebExtAPIRef("downloads.drag()")}}
+
Lance le glissement du fichier téléchargé vers une autre application.
+
{{WebExtAPIRef("downloads.setShelfEnabled()")}}
+
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.
+
+ +

Evénements

+ +
+
{{WebExtAPIRef("downloads.onCreated")}}
+
Se déclenche avec l'objet {{WebExtAPIRef("downloads.DownloadItem", "DownloadItem")}} lorsqu'un téléchargement commence.
+
{{WebExtAPIRef("downloads.onErased")}}
+
Se déclenche avec downloadId lorsqu'un téléchargement est effacé de l'historique.
+
{{WebExtAPIRef("downloads.onChanged")}}
+
Lorsque l'une des propriétés de {{WebExtAPIRef("downloads.DownloadItem", "DownloadItem")}} sauf les changements bytesReceived, cet événement se déclenche avec le downloadId et un objet contenant les propriétés qui ont changé.
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.downloads")}}

+ +

{{WebExtExamples("h2")}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.downloads.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Le type InteruptReason de l'API {{WebExtAPIRef("downloads")}} définit un ensemble de raisons possibles pour lesquelles un téléchargement a été interrompu.

+ +

Une propriété {{WebExtAPIRef('downloads.DownloadItem')}} d'erreur contiendra une chaîne tirée des valeurs définies dans ce type.

+ +

Type

+ +

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:

+ +

Erreurs liées au fichier :

+ + + +

Erreurs liées au réseau :

+ + + +

Erreurs liées au serveur :

+ + + +

Erreurs liées à l'utilisateur :

+ + + +

Divers :

+ + + +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.downloads.InterruptReason")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.downloads.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

L'événement onChanged() de l'API {{WebExtAPIRef("downloads")}} est déclenché lorsque l'une des propriétés de {{WebExtAPIRef('downloads.DownloadItem')}} change (à l'exception de bytesReceived).

+ +

L'écouteur reçoit un fichier downloadDelta en tant que paramètre — un objet contenant le downloadId de l'objet {{WebExtAPIRef('downloads.DownloadItem')}} en question, plus le statut de toutes les propriétés qui ont changé.

+ +

Syntaxe

+ +
browser.downloads.onChanged.addListener(listener)
+browser.downloads.onChanged.removeListener(listener)
+browser.downloads.onChanged.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si un listener donné est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Parameters

+ +
+
callback
+
+

Une fonction de rappel qui sera appelée lorsque cet événement se produira. Cette fonction recevra les arguments suivants :

+ +
+
downloadDelta
+
Un objet 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.
+
+
+
+ +

Objets supplémentaires

+ +

downloadDelta

+ +

L'objet downloadDelta a les propriétés suivantes disponibles :

+ +
+
id
+
Un integer représentant l'identifiant de l'id  {{WebExtAPIRef('downloads.DownloadItem')}} qui a changé.
+
url{{optional_inline}}
+
Un objet {{WebExtAPIRef('downloads.StringDelta')}} décrivant une modification d'une  url {{WebExtAPIRef('downloads.DownloadItem')}}.
+
filename{{optional_inline}}
+
Un objet {{WebExtAPIRef('downloads.StringDelta')}} décrivant un changement dans un filename {{WebExtAPIRef('downloads.DownloadItem')}}
+
danger{{optional_inline}}
+
Un objet {{WebExtAPIRef('downloads.StringDelta')}} décrivant un changement dans un danger {{WebExtAPIRef('downloads.DownloadItem')}}.
+
mime{{optional_inline}}
+
Un objet {{WebExtAPIRef('downloads.StringDelta')}} décrivant un changement dans un mime {{WebExtAPIRef('downloads.DownloadItem')}}
+
startTime{{optional_inline}}
+
Un objet {{WebExtAPIRef('downloads.StringDelta')}} décrivant un changement dans un startTime {{WebExtAPIRef('downloads.DownloadItem')}}.
+
endTime{{optional_inline}}
+
Un objet {{WebExtAPIRef('downloads.StringDelta')}} décrivant un changement dans un  endTime {{WebExtAPIRef('downloads.DownloadItem')}}.
+
state{{optional_inline}}
+
Un objet {{WebExtAPIRef('downloads.StringDelta')}} décrivant un changement dans un état {{WebExtAPIRef('downloads.DownloadItem')}}
+
canResume{{optional_inline}}
+
Un objet {{WebExtAPIRef('downloads.BooleanDelta')}} décrivant un changement dans un état {{WebExtAPIRef('downloads.DownloadItem')}} canResume.
+
paused{{optional_inline}}
+
Un objet {{WebExtAPIRef('downloads.BooleanDelta')}} décrivant un changement dans un état en pause {{WebExtAPIRef('downloads.DownloadItem')}}.
+
error{{optional_inline}}
+
Un objet {{WebExtAPIRef('downloads.StringDelta')}} décrivant un changement dans un état d'erreur {{WebExtAPIRef('downloads.DownloadItem')}}.
+
totalBytes{{optional_inline}}
+
Un objet {{WebExtAPIRef('downloads.DoubleDelta')}} décrivant un changement dans un totalBytes {{WebExtAPIRef('downloads.DownloadItem')}}.
+
fileSize{{optional_inline}}
+
Un objet  {{WebExtAPIRef('downloads.DoubleDelta')}} décrivant une modification d'un  fileSize {{WebExtAPIRef('downloads.DownloadItem')}}.
+
exists{{optional_inline}}
+
Un objet {{WebExtAPIRef('downloads.BooleanDelta')}} décrivant un changement dans un état {{WebExtAPIRef('downloads.DownloadItem')}}.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.downloads.onChanged")}}

+ +

Exemples

+ +

Enregistrez un message lorsque les téléchargements sont terminés :

+ +
function handleChanged(delta) {
+  if (delta.state && delta.state.current === "complete") {
+    console.log(`Download ${delta.id} has completed.`);
+  }
+}
+
+browser.downloads.onChanged.addListener(handleChanged);
+ +

{{WebExtExamples}}

+ +
Acknowledgements + +

This API is based on Chromium's chrome.downloads API.

+ +

Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

L'événement onCreated() 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.

+ +

L'écouteur reçoit l'objet {{WebExtAPIRef('downloads.DownloadItem')}} en question en tant que paramètre.

+ +

Syntaxe

+ +
browser.downloads.onCreated.addListener(listener)
+browser.downloads.onCreated.removeListener(listener)
+browser.downloads.onCreated.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si un listener donné est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
function
+
+

Une fonction de rappel qui sera appelée lorsque cet événement se produira. Cette fonction recevra les arguments suivants :

+ +
+
downloadItem
+
L'objet {{WebExtAPIRef('downloads.DownloadItem')}} en question.
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.downloads.onCreated")}}

+ +

Exemples

+ +

Consignez l'URL des éléments au fur et à mesure qu'ils sont téléchargés :

+ +
function handleCreated(item) {
+  console.log(item.url);
+}
+
+browser.downloads.onCreated.addListener(handleCreated);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.downloads.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

L'événement onErased() de l'API {{WebExtAPIRef("downloads")}} se déclenche lorsqu'un téléchargement est effacé de l'historique du navigateur.

+ +

L'écouteur reçoit le paramètre downloadId de l'objet {{WebExtAPIRef('downloads.DownloadItem')}}  en question en tant que paramètre.

+ +

Syntaxe

+ +
browser.downloads.onErased.addListener(listener)
+browser.downloads.onErased.removeListener(listener)
+browser.downloads.onErased.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer..
+
hasListener(listener)
+
Vérifie si un listener donné est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Une fonction de rappel qui sera appelée lorsque cet événement se produira. Cette fonction recevra les arguments suivants :

+ +
+
downloadId
+
Un integer représentant l'id du {{WebExtAPIRef('downloads.DownloadItem')}} qui a été effacé.
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.downloads.onErased")}}

+ +

Exemples

+ +

Ajoute un écouteur pour les événements onErased , puis effacez le téléchargement le plus récent :

+ +
function handleErased(item) {
+  console.log(`Erased: ${item}`);
+}
+
+browser.downloads.onErased.addListener(handleErased);
+
+var erasing = browser.downloads.erase({
+  limit: 1,
+  orderBy: ["-startTime"]
+});
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.downloads.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

La fonction open() 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.

+ +

Pour utiliser cette fonction dans votre extension, vous devez demander la permission manifest "downloads.open", ainsi que la permission "downloads". En outre, vous pouvez uniquement appeler cette fonction à l'intérieur du gestionnaire pour une action utilisateur.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var opening = browser.downloads.open(
+  downloadId      // integer
+)
+
+ +

Paramètres

+ +
+
downloadId
+
Un integer représentant l'id du {{WebExtAPIRef("downloads.DownloadItem")}} que vous voulez ouvrir.
+
+ +

Valeur retournée

+ +

Une Promise. 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.downloads.open")}}

+ +

Exemples

+ +

Cet exemple ouvre l'élément le plus récemment téléchargé :

+ +
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);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.downloads.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

La fonction pause() de l'API {{WebExtAPIRef("downloads")}} interrompt un téléchargement.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var pausing = browser.downloads.pause(
+  downloadId      // integer
+)
+
+ +

Paramètres

+ +
+
downloadId
+
Un integer représetant l'id du téléchargement à mettre en pause.
+
+ +

Valeur retournée

+ +

Une Promise. 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.downloads.pause")}}

+ +

Exemples

+ +
function onPaused() {
+  console.log(`Paused download`);
+}
+
+function onError(error) {
+  console.log(`Error: ${error}`);
+}
+
+var pausing = browser.downloads.pause(downloadId);
+pausing.then(onPaused, onError);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.downloads.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

La fonction removeFile() de l'API {{WebExtAPIRef("downloads")}} supprime un fichier téléchargé du disque.

+ +

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 exists sera false.

+ +

Pour supprimer un fichier de l'historique des téléchargements, vous devez utiliser  {{WebExtAPIRef("downloads.erase()")}}.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +
+

Remarque : Si vous souhaitez supprimer un fichier téléchargé du disque et l'effacer de l'historique, vous devez appeler removeFile() avant d'appeler {{WebExtAPIRef("downloads.erase()")}}. Si vous l'essayez dans l'autre sens, vous obtiendrez une erreur lors de l'appel de removeFile(), car le navigateur n'aura plus d'enregistrement du téléchargement.

+
+ +

Syntaxe

+ +
var removing = browser.downloads.removeFile(
+  downloadId      // integer
+)
+
+ +

Paramètres

+ +
+
downloadId
+
Un integer représentant l'identifiant de  {{WebExtAPIRef("downloads.DownloadItem", "DownloadItem")}} que vous souhaitez supprimer du disque.
+
+ +

Valeur retournée

+ +

Une Promise. 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.downloads.removeFile")}}

+ +

Exemples

+ +

Supprimer le dernier fichier téléchargé :

+ +
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);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.downloads.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

La fonction resume() 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 resume() échouera si le téléchargement n'est pas actif: par exemple, parce qu'il a fini le téléchargement.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var resuming = browser.downloads.resume(
+  downloadId      // integer
+)
+
+ +

Paramètres

+ +
+
downloadId
+
Un integer représentant l'id du téléchargement à reprendre.
+
+ +

Valeur retournée

+ +

Une Promise. 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.downloads.resume")}}

+ +

Exemples

+ +
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);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.downloads.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

La fonction search() 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.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var searching = browser.downloads.search(query);
+
+ +

Paramètres

+ +
+
query
+
Un objet {{WebExtAPIRef('downloads.DownloadQuery')}}.
+
+ +

Return value

+ +

Une Promise. La promise est remplie avec un tableau d'objets {{WebExtAPIRef('downloads.DownloadItem')}} qui correspondent aux critères donnés.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.downloads.search")}}

+ +

Exemples

+ +

En général, vous restreignez les éléments récupérés à l'aide du paramètre de requête.

+ +

Obtenez les téléchargements correspondant à "query"

+ +
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);
+ +

Obtenez un article spécifique

+ +

Pour obtenir un {{WebExtAPIRef("downloads.DownloadItem", "DownloadItem")}}, la méthode la plus simple consiste à définir uniquement le champ id, comme indiqué dans l'extrait ci-dessous :

+ +
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);
+
+ +

Obtenez tous les téléchargements

+ +

Si vous voulez renvoyer tout {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}}, définissez la query sur un objet vide.

+ +
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);
+ +

Obtenez le téléchargement le plus récent

+ +

Vous pouvez obtenir le téléchargement le plus récent en spécifiant les paramètres de recherche suivants :

+ +
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);
+ +

Vous pouvez voir ce code en action par exemple dans notre dernier téléchargement.

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.downloads.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +

{{AddonSidebar()}}

+ +

La fonction  setShelfEnabled() 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.

+ +

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é.

+ +
+

Remarque : Pour utiliser cette fonction dans votre extension, vous devez demander la permission manifest, "downloads.shelf", ainsi que la permission "downloads".

+
+ +

Syntaxe

+ +
chrome.downloads.setShelfEnabled(enabled);
+
+ +

Cette API est également disponible en tant que  browser.downloads.setShelfEnabled().

+ +

Paramètres

+ +
+
enabled
+
Un boolean l'état que vous souhaitez définir setShelfEnabled() à — true pour activer et false pour désactiver.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.downloads.setShelfEnabled")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.downloads.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

La fonction show() 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.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var showing = browser.downloads.show(
+  downloadId             // integer
+)
+
+ +

Paramètes

+ +
+
downloadId
+
Un integer représentant l'ID du {{WebExtAPIRef("downloads.DownloadItem", "DownloadItem")}} à afficher.
+
+ +

Valeur retournée

+ +

Une Promise. 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.downloads.show")}}

+ +

Exemples

+ +

Cet exemple montre l'élément le plus récemment téléchargé :

+ +
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);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.downloads.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

La fonction showDefaultFolder() de l'API {{WebExtAPIRef("downloads")}} ouvre le dossier de téléchargement par défaut dans le gestionnaire de fichiers de la plateforme.

+ +

Syntaxe

+ +
browser.downloads.showDefaultFolder();
+
+ +

Paramètres

+ +
+
None.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.downloads.showDefaultFolder")}}

+ +

Exemples

+ +

L'extrait suivant contient un bouton d'affichage qui, lorsqu'il est cliqué, appelle showDefaultFolder() pour ouvrir le dossier de téléchargement par défaut dans le gestionnaire de fichiers de la plateforme :

+ +
var showBtn = document.querySelector('.show');
+
+showBtn.onclick = function() {
+  browser.downloads.showDefaultFolder();
+}
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.downloads.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +

{{AddonSidebar()}}

+ +

Le type d'état de l'API {{WebExtAPIRef("downloads")}} définit différents états dans lesquels un téléchargement en cours peut se trouver.

+ +

Une propriété d'state {{WebExtAPIRef('downloads.DownloadItem')}}  contiendra une chaîne tirée des valeurs définies dans ce type.

+ +

Type

+ +

Les valeurs de ce type sont des chaînes. Les valeurs possibles sont :

+ +
+
in_progress
+
Le navigateur reçoit actuellement les données de téléchargement du serveur .
+
interrupted
+
Une erreur a rompu la connexion avec le serveur.
+
complete
+
Le téléchargement s'est terminé avec succès.
+
+ +
+

Remarque : Ces constantes de chaîne ne changeront jamais, mais de nouvelles constantes peuvent être ajoutées.

+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.downloads.State")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.downloads.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Le type StringDelta de l'API {{WebExtAPIRef("downloads")}} représente la différence entre deux chaînes.

+ +

Type

+ +

Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes:

+ +
+
current{{optional_inline}}
+
Un string représentant la valeur de chaîne actuelle.
+
previous{{optional_inline}}
+
Un string représentant la valeur de chaîne précédente.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.downloads.StringDelta")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.downloads.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Un objet qui permet l'ajout et la suppression d'écouteurs pour un événement de navigateur.

+ +

Type

+ +

Les valeurs de ce type sont des objets.

+ +

Méthodes

+ +
+
{{WebExtAPIRef("events.Event.addListener()")}}
+
Enregistre un rappel d'écouteur d'événement sur un événement.
+
{{WebExtAPIRef("events.Event.removeListener()")}}
+
Désinscrit un rappel d'écouteur d'événement d'un événement.
+
{{WebExtAPIRef("events.Event.hasListener()")}}
+
Teste l'état d'enregistrement d'un écouteur.
+
{{WebExtAPIRef("events.Event.hasListeners()")}}
+
Teste si des écouteurs sont enregistrés pour l'événement.
+
{{WebExtAPIRef("events.Event.addRules()")}}
+
Enregistre les règles pour gérer les événements.
+
{{WebExtAPIRef("events.Event.getRules()")}}
+
Renvoie les règles actuellement enregistrées.
+
{{WebExtAPIRef("events.Event.removeRules()")}}
+
Annule l'inscription des règles actuellement enregistrées.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.events.Event")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar}}
+ +

Types communs utilisés par les API qui distribuent les événements.

+ +

Types

+ +
+
{{WebExtAPIRef("events.Rule")}}
+
Description d'une règle déclarative pour gérer les événements.
+
{{WebExtAPIRef("events.Event")}}
+
Un objet qui permet l'ajout et la suppression d'écouteurs pour un événement Chrome.
+
{{WebExtAPIRef("events.UrlFilter")}}
+
Filtre les URL pour différents critères. Si un critère donné correspond, alors tout le filtre correspond.
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.events")}}

+ +

{{WebExtExamples("h2")}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +

{{AddonSidebar()}}

+ +

Description d'une règle déclarative pour la gestion des événements.

+ +

Type

+ +

Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :

+ +
+
id{{optional_inline}}
+
string. Identifiant facultatif permettant de référencer cette règle.
+
tags{{optional_inline}}
+
array of string. Les balises peuvent être utilisées pour annoter des règles et effectuer des opérations sur des ensembles de règles.
+
conditions
+
array de any. Liste des conditions qui peuvent déclencher les actions.
+
actions
+
array de any. Liste des actions qui sont déclenchées si l'une des conditions est remplie.
+
priority{{optional_inline}}
+
integer. Priorité optionnelle de cette règle. Par défaut à 100.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.events.Rule")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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 Array d'UrlFilters. Par exemple, les écouteurs  webNavigation peuvent être ajoutés avec un filtre qui est un objet avec une seule propriété url qui est un Array de UrlFilters, par exemple {url:[UrlFilter,UrlFilter,...]}. 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ù.

+ +

Tous les critères sont sensibles à la casse.

+ +

Type

+ +

Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes:

+ +

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, "org." correspondra à "https://borg.com" mais pas "https://example.org". Pour faire correspondre ces modèles, utilisez hostSuffix.

+ +
+
hostContains{{optional_inline}}
+
string. Correspond si le hostname de l'URL contient la chaîne donnée. +
    +
  • Pour tester si un composant de nom d'hôte commence par "foo", utilisez  ".foo". Cela correspond à "www.foobar.com" et "foo.com", car un point implicite est ajouté au début du nom d'hôte.
  • +
  • Pour tester si un composant de nom d'hôte se termine par "foo", utilisez "foo.".
  • +
  • Pour tester si un composant de nom d'hôte correspond exactement à "foo", utilisez ".foo.".
  • +
+
+
hostEquals{{optional_inline}}
+
string. Correspond si le nom d'hôte de l'URL est égal à une chaîne spécifiée.
+
hostPrefix{{optional_inline}}
+
string. Correspond si le nom d'hôte de l'URL commence par une chaîne spécifiée.
+
hostSuffix{{optional_inline}}
+
string. Correspond si le nom d'hôte de l'URL se termine par une chaîne spécifiée. +
    +
  • Exemple: ".example.com" correspond à "http://www.example.com/", mais pas à "http://example.com/".
  • +
  • Exemple: "example.com" correspond à "http://www.example.com/", et  "http://fakeexample.com/".
  • +
+
+
pathContains{{optional_inline}}
+
string. Correspond si le segment de chemin de l'URL contient une chaîne spécifiée.
+
pathEquals{{optional_inline}}
+
string. Correspond si le segment de chemin de l'URL est égal à une chaîne spécifiée.
+
pathPrefix{{optional_inline}}
+
string. Correspond si le segment de chemin de l'URL commence par une chaîne spécifiée.
+
pathSuffix{{optional_inline}}
+
string. Correspond si le segment de chemin de l'URL se termine par une chaîne spécifiée.
+
queryContains{{optional_inline}}
+
string. Correspond si le segment de requête de l'URL contient une chaîne spécifiée.
+
queryEquals{{optional_inline}}
+
string. Correspond si le segment de requête de l'URL est égal à une chaîne spécifiée.
+
queryPrefix{{optional_inline}}
+
string. Correspond si le segment de requête de l'URL commence par une chaîne spécifiée.
+
querySuffix{{optional_inline}}
+
string. Correspond si le segment de requête de l'URL se termine par une chaîne spécifiée.
+
urlContains{{optional_inline}}
+
string. 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.
+
urlEquals{{optional_inline}}
+
string. 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.
+
urlMatches{{optional_inline}}
+
string. Correspond si l'URL (sans l'identificateur de fragment) correspond à une  expression régulière. Les numéros de port sont supprimés de l'URL s'ils correspondent au numéro de port par défaut. +
    +
  • Par exemple : urlMatches: "^[^:]*:(?://)?(?:[^/]*\\.)?mozilla\\.org/.*$" correspond "http://mozilla.org/", "https://developer.mozilla.org/", "ftp://foo.mozilla.org/", mais pas "https://developer.fakemozilla.org/".
  • +
+
+
originAndPathMatches{{optional_inline}}
+
string. Correspond si l'URL sans segment de requête et l'identificateur de fragment correspondent à une expression régulière 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.
+
urlPrefix{{optional_inline}}
+
string. 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. +
    +
  • Exemple: "https://developer" correspond "https://developer.mozilla.org/" et  "https://developers.facebook.com/".
  • +
+
+
urlSuffix{{optional_inline}}
+
string. 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 "com/" correspond "https://example.com", mais pas "com".
+
schemas{{optional_inline}}
+
array of string. 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. +
    +
  • Exemple: ["https"] correspond uniquement aux URL HTTPS.
  • +
+
+
ports{{optional_inline}}
+
array de (integer ou array of integer). 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. +
    +
  • Par exemple: [80, 443, [1000, 1200]] correspond à toutes les demandes sur les ports 80, 443, et dans la plage 1000-1200.
  • +
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.events.UrlFilter")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Alias de {{WebExtAPIRef("runtime.getBackgroundPage()")}}.

+ +
+

Remarque : 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)}}.

+
+ +

Syntaxe

+ +
var page = browser.extension.getBackgroundPage()
+
+ +

Paramètres

+ +
+
None.
+
+ +

Valeur retournée

+ +

object. Window de la page d'arrière plan.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.extension.getBackgroundPage")}}

+ +

Exemples

+ +

Supposons un  script d'arrière plan définisse une fonction foo():

+ +
// background.js
+
+function foo() {
+  console.log("I'm defined in background.js");
+}
+ +

Un script exécuté dans un popup peut appeler cette fonction directement comme ceci :

+ +
// popup.js
+
+var page = browser.extension.getBackgroundPage();
+page.foo(); // -> "I'm defined in background.js"
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +
+

Cette méthode a été dépréciée. Utilisez {{WebExtAPIRef("extension.getViews()")}} à la place.

+
+ +

Renvoie un tableau des objets de la Window JavaScriptpour chacun des onglets qui s'exécutent dans l'extension actuelle. Si windowId est spécifié, renvoie uniquement les objets Window des onglets attachés à la fenêtre spécifiée.

+ +

Syntaxe

+ +
chrome.extension.getExtensionTabs(
+  windowId // optional integer
+)
+
+ +

Cette API est également disponible en tant que browser.extension.getExtensionTabs().

+ +

Paramètres

+ +
+
windowId{{optional_inline}}
+
integer.
+
+ +

Valeur retournée

+ +

array of object. Tableau d'objets de fenêtre globaux

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.extension.getExtensionTabs")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar}}
+ +
+

Cette fonction est obsolète. Veuillez utiliser runtime.getURL.

+
+ +

Convertit un chemin relatif dans le répertoire d'installation d'une extension en une URL complète.

+ +

Syntaxe

+ +
browser.extension.getURL(
+  path // string
+)
+
+ +

Paramètres

+ +
+
path
+
string. Un chemin vers une ressource dans une extension exprimée par rapport à son répertoire d'installation.
+
+ +

Valeur retournée

+ +

string. The fully-qualified URL to the resource.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.extension.getURL")}}

+ +

Exemples

+ +

Donné un fichier empaqueté avec l'add-on à "beasts/frog.html", obtenez l'URL complète comme ceci :

+ +
var fullURL = browser.extension.getURL("beasts/frog.html");
+
+// -> something like:
+// moz-extension://2c127fa4-62c7-7e4f-90e5-472b45eecfdc/beasts/frog.html
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Renvoie un tableau des objets Window pour chacune des pages exécutées dans l'extension en cours. Cela inclut, par exemple :

+ + + +

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.

+ +

Syntaxe

+ +
var windows = browser.extension.getViews(
+  fetchProperties // optional object
+)
+
+ +

Paramètres

+ +
+
fetchProperties{{optional_inline}}
+
object.
+
+
+
type{{optional_inline}}
+
string. Un {{WebExtAPIRef('extension.ViewType')}} indiquant le type de vue à obtenir. Si omis, cette fonction renvoie toutes les vues.
+
windowId{{optional_inline}}
+
integer. La fenêtre pour restreindre la recherche. Si omis, cette fonction renvoie toutes les vues.
+
+
+
+ +

Valeur retournée

+ +

array of object. Un tableau d'objets Window.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.extension.getViews")}}

+ +

Exemples

+ +

Obtenez toutes les fenêtres appartenant à cette extension et consignez leurs URL :

+ +
var windows = browser.extension.getViews();
+
+for (var extensionWindow of windows) {
+  console.log(extensionWindow.location.href);
+}
+ +

Obtenez uniquement des fenêtres dans les onglets du navigateur hébergeant du contenu fourni avec l'extension :

+ +
var windows = browser.extension.getViews({type: "tab"});
+ +

Obtenir seulement des fenêtres dans les popups :

+ +
var windows = browser.extension.getViews({type: "popup"});
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar}}
+ +

Utilitaires liés à votre extension. Obtenez des URL vers des packages de ressources avec votre extension, récupérez l'objet Window 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 runtime.

+ +

Types

+ +
+
{{WebExtAPIRef("extension.ViewType")}}
+
Le type de vue d'extension.
+
+ +

Propriétés

+ +
+
{{WebExtAPIRef("extension.lastError")}}
+
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 indéfini.
+
{{WebExtAPIRef("extension.inIncognitoContext")}}
+
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'.
+
+ +

Fonctions

+ +
+
{{WebExtAPIRef("extension.getBackgroundPage()")}}
+
Renvoie l'objet Window 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.
+
{{WebExtAPIRef("extension.getExtensionTabs()")}} {{deprecated_inline}}
+
Renvoie un tableau des objets de la Window JavaScript pour chacun des onglets qui s'exécutent dans l'extension actuelle.
+
{{WebExtAPIRef("extension.getURL()")}} {{deprecated_inline}}
+
Convertit un chemin relatif dans un répertoire d'installation d'extension en une URL complète.
+
{{WebExtAPIRef("extension.getViews()")}}
+
Renvoie un tableau des objets Window pour chacune des pages exécutées dans l'extension en cours.
+
{{WebExtAPIRef("extension.isAllowedIncognitoAccess()")}}
+
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").
+
{{WebExtAPIRef("extension.isAllowedFileSchemeAccess()")}}
+
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').***
+
{{WebExtAPIRef("extension.sendRequest()")}} {{deprecated_inline}}
+
Envoie une seule requête aux autres écouteurs de l'extension.
+
{{WebExtAPIRef("extension.setUpdateUrlData()")}}
+
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.
+
+ +

Evénements

+ +
+
{{WebExtAPIRef("extension.onRequest")}} {{deprecated_inline}}
+
Lancé lorsqu'une requête est envoyée par un processus d'extension ou un script de contenu.
+
{{WebExtAPIRef("extension.onRequestExternal")}} {{deprecated_inline}}
+
Lancé lorsqu'une requête est envoyée depuis une autre extension.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.extension")}}

+ +

{{WebExtExamples("h2")}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Valeur booléenne, 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é..

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.extension.inIncognitoContext")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +
Renvoie true si l'extension peut accéder au schéma "file://", sinon false.
+ +
+ +
+

C'est une fonction asynchrone qui renvoie une Promise.

+
+ +

Syntaxe

+ +
var isAllowed = browser.extension.isAllowedFileSchemeAccess()
+
+ +

Paramètres

+ +

None.

+ +

Valeur retournée

+ +

Une Promise qui sera remplie avec un booléen : true si l'extension est autorisée à accéder aux URLs "file://", sinon false.

+ +

Firefox retournera toujours false.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.extension.isAllowedFileSchemeAccess")}}

+ +

Exemples

+ +
function logIsAllowed(answer) {
+  console.log(`Is allowed: ${answer}`);
+}
+
+var isAllowed = browser.extension.isAllowedFileSchemeAccess();
+isAllowed.then(logIsAllowed);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Vérifiez si l'extension est autorisée à accéder aux onglets ouverts en mode "navigation privée".

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var isAllowed = browser.extension.isAllowedIncognitoAccess()
+
+ +

Paramètres

+ +

None.

+ +

Valeur retournée

+ +

Une Promise qui sera remplie avec un booléen : true si l'extension est autorisée à accéder aux onglets privés, sinon false.

+ +

 

+ +

Exemples

+ +
function logIsAllowed(answer) {
+  console.log(`Is allowed: ${answer}`);
+}
+
+var isAllowed = browser.extension.isAllowedIncognitoAccess();
+isAllowed.then(logIsAllowed);
+ +

{{WebExtExamples}}

+ +

 

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.extension.isAllowedIncognitoAccess")}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Un alias de {{WebExtAPIRef("runtime.lastError")}}.

+ +

Compatibilité du navoigateur

+ + + +

{{Compat("webextensions.api.extension.lastError")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +
+

Not implémenté : Ceci n'est pas implémenté dans Firefox car il est obsolète depuis Chrome 33. Veuillez utiliser runtime.onMessageExternal à la place.

+
+ +

Lancé lorsqu'une requête est envoyée par un processus d'extension ou un script de contenu.

+ +

Syntaxe

+ +
chrome.extension.onRequest.addListener(function(
+  request,         // optional any
+  sender,          // runtime.MessageSender
+  function() {...} // function
+) {...})
+chrome.extension.onRequest.removeListener(listener)
+chrome.extension.onRequest.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ + + +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
request
+
any. La requête envoyée par le script appelant.
+
+ +
+
sender
+
{{WebExtAPIRef('runtime.MessageSender')}}.
+
+ +
+
sendResponse
+
function. 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 onRequest dans le même document, un seul peut envoyer une réponse.
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.extension.onRequest")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +
+

Not implémenté : Ceci n'est pas implémenté dans Firefox car il est obsolète depuis Chrome 33. Veuillez utiliser runtime.onMessageExternal à la place.

+
+ +

Lancé lorsqu'une requête est envoyée depuis une autre extension.

+ +

Syntaxe

+ +
chrome.extension.onRequestExternal.addListener(function(
+  request,         // optional any
+  sender,          // runtime.MessageSender
+  function() {...} // function
+) {...})
+chrome.extension.onRequestExternal.removeListener(listener)
+chrome.extension.onRequestExternal.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
request
+
any. La requête envoyée par le script appelant.
+
+ +
+
sender
+
{{WebExtAPIRef('runtime.MessageSender')}}.
+
+ +
+
sendResponse
+
function. 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.
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.extension.onRequestExternal")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar}}{{Deprecated_Header}} +
+

Cette méthode est dépréciée. utilisez {{WebExtAPIRef("runtime.sendMessage")}} à la place.

+
+
+ +

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

+ +

Syntaxe

+ +
chrome.extension.sendRequest(
+  extensionId,             // optional string
+  request,                 // any
+  function(response) {...} // optional function
+)
+
+ +

Cette API est également disponible en tant que browser.extension.sendRequest() dans une version qui renvoie une promise.

+ +

Paramètres

+ +
+
extensionId{{Optional_Inline}}
+
string. L'ID d'extension de l'extension à laquelle vous souhaitez vous connecter. Si omis, la valeur par défaut est votre propre extension.
+
request
+
any.
+
responseCallback{{Optional_Inline}}
+
function. La fonction est passée les arguments suivants : + + +
+
response
+
any. 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.
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.extension.sendRequest")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Syntaxe

+ +
browser.extension.setUpdateUrlData(
+  data // string
+)
+
+ +

Paramètres

+ +
+
data
+
string.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.extension.setUpdateUrlData")}}

+ +

Exemples

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Le type de vue de l'extension.

+ +

Type

+ +

Les valeurs de ce type sont des chaînes. Les valeurs possibles sont : "tab", "popup", "sidebar".

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.extension.ViewType")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Details sur le format et la qualité de l'image.

+ +

Type

+ +

Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :

+ +
+
format{{optional_inline}}
+
{{WebExtAPIRef('extensionTypes.ImageFormat')}}. Le format du résultat de l'image. Par défaut est "png".
+
quality{{optional_inline}}
+
integer. Quand le format est "jpeg", 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  encoderOptions sur HTMLCanvasElement.toDataURL(). 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.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.extensionTypes.ImageDetails")}}

+ +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basé sur l'API Chromium chrome.extensionTypes . Cette documentation provient de extension_types.json dans le code de Chromium.

+ +

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.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Les valeurs de ce type sont des chaînes de caractères. Les valeurs possibles sont : "jpeg", "png".

+ +

Type

+ +

Les valeurs de ce type sont des chaines. Les valeurs possibles sont : "jpeg", "png".

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.extensionTypes.ImageFormat")}}

+ +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basé sur l'API Chromium chrome.extensionTypes . Cette documentation provient de extension_types.json dans le code de Chromium.

+ +

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.

+
+ + 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 +--- +
{{AddonSidebar}}
+ +

Certains types communs utilisés dans d'autres APIs WebExtensions.

+ +

Types

+ +
+
{{WebExtAPIRef("extensionTypes.ImageDetails")}}
+
Détails sur le format et la qualité de l'image.
+
{{WebExtAPIRef("extensionTypes.ImageFormat")}}
+
Le format d'une image.
+
{{WebExtAPIRef("extensionTypes.ImageDetails")}}
+
Injecte des détails dans une page
+
{{WebExtAPIRef("extensionTypes.RunAt")}}
+
Le plus tot que le Javascript ou le CSS est injecté dans l'onglet.
+
extensionTypes.CSSOrigin
+
Indique si une feuille de style CSS injectée par tabs.insertCSS doit être traitée comme une feuille de style "auteur" ou "utilisateur".
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.extensionTypes")}}

+ +

{{WebExtExamples("h2")}}

+ +
Remerciements + +

Cette API est basé sur l'API Chromium chrome.extensionTypes . Cette documentation provient de extension_types.json dans le code de Chromium.

+ +

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.

+
+ + 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 +--- +
{{AddonSidebar}}
+ +

Ce type est donné en tant que paramètre aux méthodes tabs.executeScript(), tabs.insertCSS(), et tabs.removeCSS() . Pour plus de détails sur ses propriétés et leur utilisation, consultez les pages de documentation de ces méthodes :

+ + 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 +--- +
{{AddonSidebar()}}
+ +

Le plus tot que le Javascript ou CSS sera injecté dans l'onglet.

+ +

Type

+ +

Les valeurs de ce type sont des chaines. Les valeurs possibles sont : "document_start", "document_end", "document_idle".

+ + + +

La valeur par défaut est "document_idle".

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.extensionTypes.RunAt")}}

+ +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basé sur l'API Chromium chrome.extensionTypes . Cette documentation provient de extension_types.json dans le code de Chromium.

+ +

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.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Recherche du texte dans un onglet.

+ +

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..

+ +

Vous pouvez rendre la recherche sensible à la casse et la faire correspondre uniquement à des mots entiers.

+ +

Par défaut, la fonction renvoie juste le nombre de correspondances trouvées. En transmettant les options includeRangeData et  includeRectData, vous pouvez obtenir plus d'informations sur l'emplacement des correspondances dans l'onglet cible.

+ +

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 find seront mis en surbrillance, jusqu'à ce que quelqu'un appelle find().

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
browser.find.find(
+  queryphrase,       // string
+  options            // optional object
+)
+
+ +

Paramètres

+ +
+
queryphrase
+
string. Le texte à rechercher
+
options{{optional_inline}}
+
+

object. Un objet spécifiant des options supplémentaires. Il peut prendre l'une des propriétés suivantes, toutes facultatives :

+ +
+
tabId
+
integer. ID de l'onglet à rechercher. Par défaut à l'onglet actif
+
caseSensitive
+
boolean. Si true, la recherche est sensible à la casse. Par défault à  false.
+
entireWord
+
boolean. Comparaison seulement entre les mots entiers : ainsi "Tok" ne sera pas comparé dans "Tokyo". Par défaut à false.
+
includeRangeData
+
boolean. Inclure les groupes de données dans la réponse, which describe where in the page DOM the match was found. Defaults to false.
+
includeRectData
+
boolean. 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 à false.
+
+
+
+ +

Valeur retournée

+ +

  Une Promise qui sera remplie avec un objet contenant jusqu'à trois propriétés :

+ +
+
count
+
integer. Le nombre de résultat trouvés.
+
rangeData{{optional_inline}}
+
+

array. Si includeRangeData a été donné dans le paramètre  options, cette propriété sera incluse. Il est fourni sous la forme d'un tableau d'objets RangeData, un pour chaque correspondance. Chaque objet RangeData 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.

+ +

Les élements correspondent aux éléments données dans rectData, donc rangeData[i] décrit la même correspondance que  rectData[i].

+ +

Chaque RangeData contient les propriétés suivantes :

+ +
+
framePos
+
L'index de l'image contenant la correspondance. 0 correspond à une fenêtre parente. Notez que l'ordre des objets dans un tableau  rangeData s'alignera séquentiellement avec l'ordre des index d'images : par exemple, framePos pour la première séquence d'objets rangeData sera 0, framePos pour la séquence suivante sera 1, et ainsi de suite.
+
startTextNodePos
+
La position ordinale du noeud de texte dans lequel la correspondance a démarrée.
+
endTextNodePos
+
La position ordinale du noeud de texte dans lequel la correspondance s'est terminée.
+
startOffset
+
La position de la chaîne de caractères ordinale du début du mot correspondant dans le noeud texte de début.
+
endOffset
+
La position de la chaîne de caractères ordinale de la fin du mot trouvé dans le nœud de texte final.
+
+
+
rectData{{optional_inline}}
+
+

array. Si includeRectData a été donné dans les paramètres des options, cette propriété sera incluse. C'est un tableau d'objets RectData . 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..

+ +

Chaque objet RectData contient des données rectangle pour une seule correspondance. Il a deux propriétés :

+ +
+
rectsAndTexts
+
Un objet contenant deux propriétés, les deux tableaux : +
    +
  • rectList: un tableau d'objets ayant chacun quatre propriétés entières : top, left, bottom, right. Ceux-ci décrivent un rectangle par rapport à la partie supérieure gauche de la fenêtre.
  • +
  • textList:  un tableau de chaînes, correspondant au tableau  rectList. L'entrée de textList[i] contient la partie du match délimitée par le rectangle de rectList[i].
  • +
+ +

Par exemple, considérons une partie d'une page Web qui ressemble à ceci :

+ +

Si vous recherchez "You may", la comparaison doit être décrit par deux rectangles :

+ +

Dans le cas, dans le RectData qui décrit cette correspondance, rectsAndTexts.rectList et rectsAndTexts.textList auront chacun 2 éléments.

+ +
    +
  • textList[0] contiendra "You ", et rectList[0] contiendra son rectangle de délimitation.
  • +
  • textList[1] contiendra "may", et rectList[1] contiendra son rectangle de délimitation.
  • +
+
+
text
+
Le texte complet de comparaison, "You may" dans l'exemple ci-dessus.
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.find.find", 10)}}

+ +

Exemples

+ +

Exemples basics

+ +

Recherchez "banana" dans l'onglet actif, log le nombre de correspondances et mettez-les en surbrillance :

+ +
function found(results) {
+  console.log(`There were: ${results.count} matches.`);
+  if (results.count > 0) {
+    browser.find.highlightResults();
+  }
+}
+
+browser.find.find("banana").then(found);
+ +

Rechercher "banana" dans tous les onglets (notez que cela nécessite la  permission "tabs", car il accède à tab.url):

+ +
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);
+ +

Utilisation de rangeData

+ +

Dans cet exemple, l'extension utilise rangeData pour obtenir le contexte dans lequel la correspondance a été trouvée. Le contexte est le  textContent 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 textContent de tous les noeuds étendus.

+ +

Notez que pour des raisons de simplicité, cet exemple ne gère pas les pages contenant des cadres. Pour cela, vous devez divisez rangeData en groupes, un par frame, et executer le script dans chaque image.

+ +

Le script d'arrière plan :

+ +
// 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);
+});
+
+ +

Le script de contenu :

+ +
/**
+ * 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));
+});
+
+ +

Utiliser rectData

+ +

Dans cet exemple, l'extensions utilise rectData pour comparer "redact", en ajoutant des DIVs noires au dessus de leurs rectangles de délimitation :

+ +

Notez qu'il y a plusieurs façons, c'est une mauvaise façon d'atteindre les pages.

+ +

Le script d'arrière-plan :

+ +
// 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);
+});
+
+ +

Le script de contenu :

+ +
// 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);
+});
+
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Souligne les résultats d'un précédent appel à {{WebExtAPIRef("find.find()")}}.

+ +

Lorsqu'une extension appelle find(), les correspondances ne sont pas automatiquement mises en surbrillance, mais elles sont stockées par le navigateur. Appelez highlightResults() pour les mettre en surbrillance.

+ +

Notez que les résultats stockés sont globaux pour toutes les extensions, par exemple, si l'extension appelle find("apple"), alors si l'extensions B appelle find("banana"), alors si l'extensions A appelle  highlightResults(), le résultat pour "banana" sera mis en évidence.

+ +

Syntaxe

+ +
browser.find.highlightResults()
+
+ +

Paramètres

+ +

Aucun.

+ +

Valeur retournée

+ +

Aucune.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.find.highlightResults", 10)}}

+ +

Exemples

+ +

Recherchez "banana" dans l'onglet actif, notez le nombre de correspondances et mettez-les en surbrillance :

+ +
function found(results) {
+  console.log(`There were: ${results.count} matches.`);
+  if (results.count > 0) {
+    browser.find.highlightResults();
+  }
+}
+
+browser.find.find("banana").then(found);
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 +--- +
{{AddonSidebar}}
+ +

Trouve un texte dans une page web, et met en évidence les correspondances.

+ +

Pour utiliser cette API, vous devez disposez de la permission "find".

+ +

Fonctions

+ +
+
{{WebExtAPIRef("find.find()")}}
+
Trouver du texte dans une page web.
+
{{WebExtAPIRef("find.highlightResults()")}}
+
Mettez en surbrillance le dernier jeu de correspondance trouvé.
+
{{WebExtAPIRef("find.removeHighlighting()")}}
+
Supprimez toute mise en évidence.
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.find", 1, 1)}} {{WebExtExamples("h2")}}

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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Syntaxe

+ +
browser.find.removeHighlighting()
+
+ +

Paramètres

+ +

Aucun

+ +

Valeur retournée

+ +

Aucune.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.find.removeHighlighting", 10)}}

+ +

Exemples

+ +
browser.find.removeHighlighting();
+
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 +--- +
{{AddonSidebar()}}
+ +

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".

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var addingUrl = browser.history.addUrl(
+  details         // object
+)
+
+ +

Paramètres

+ +
+
details
+
object. Objet contenant l'URL à ajouter.
+
+
+
url
+
string. L'URL à ajouter.
+
title{{optional_inline}}
+
string: Le titre de la page. Si ce n'est pas fourni, le titre sera enregistré comme null.
+
transition{{optional_inline}}
+
{{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é.
+
visitTime{{optional_inline}}
+
number ou string ou object. Cela peut être représenté par: un objet Date, une  chaîne de date ISO 8601, 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.
+
+
+
+ +

Valeur retournée

+ +

Une Promise sera rempli sans paramètres lorsque l'élément a été ajouté.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.history.addUrl")}}

+ +

Exemples

+ +

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 :

+ +
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);
+ +

Ajouter un enregistrement d'une visite à "https://example.org", mais lui donner une visitTime de 24 heures dans le passé, et une transition  "typed":

+ +
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);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Supprime toutes les visites de l'historique du navigateur.

+ +

Cette fonction déclenche {{WebExtAPIRef("history.onVisitRemoved")}} une seule fois, avec  allHistory défini sur true et un argument urls vide.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var deletingAll = browser.history.deleteAll()
+
+ +

Paramètres

+ +

None.

+ +

Valeur retournée

+ +

Une Promise sera remplie sans paramètre lorsque tout l'historique a été supprimé.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.history.deleteAll")}}

+ +

Exemples

+ +

Supprimer tout l'historique lorsque l'utilisateur clique sur une action du navigateur :

+ +
function onDeleteAll() {
+  console.log("Deleted all history");
+}
+
+function deleteAllHistory() {
+  var deletingAll = browser.history.deleteAll();
+  deletingAll.then(onDeleteAll);
+}
+
+deleteAllHistory();
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var deletingRange = browser.history.deleteRange(
+  range           // object
+)
+
+ +

Paramètres

+ +
+
range
+
object. Spécification de la plage de temps pour laquelle supprimer des visites.
+
+
+
startTime
+
number ou string ou object. Une valeur indiquant une date et une heure. Cela peut être représenté par: un objet Date, une chaîne de de date ISO 8601, ou le nombre de millisecondes depuis l'époque. Spécifie l'heure de début de la plage.
+
endTime
+
number ou string ou object. Une valeur indiquant une date et une heure. Cela peut être représenté par: un objet Date, une chaîne de date ISO 8601, ou le nombre de millisecondes depuis l'époque. Spécifie l'heure de fin de la plage.
+
+
+
+ +

Valeur retournée

+ +

Une Promise sera remplie sans paramètre lorsque la plage a été supprimée.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.history.deleteRange")}}

+ +

Exemples

+ +

Supprimer toutes les visites effectuées à la dernière minute :

+ +
const MINUTE = 60 * 1000;
+
+function oneMinuteAgo() {
+  return Date.now() - MINUTE;
+}
+
+browser.history.deleteRange({
+  startTime: oneMinuteAgo(),
+  endTime: Date.now()
+});
+ +

{{WebExtExamples}}

+ +
Acknowledgements + +

This API is based on Chromium's chrome.history API. This documentation is derived from history.json in the Chromium code.

+ +

Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Supprime toutes les visites à l'URL donnée de l'historique du navigateur.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var deletingUrl = browser.history.deleteUrl(
+  details         // object
+)
+
+ +

Paramètres

+ +
+
details
+
object. Objet contenant l'URL dont les visites doivent être supprimées.
+
+
+
url
+
string. L'URL dont les visites doivent être supprimées.
+
+
+
+ +

Valeur retournée

+ +

Une Promise sera remplie sans paramètres lorsque les visites auront été supprimées.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.history.deleteUrl")}}

+ +

Exemples

+ +

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()")}}:

+ +
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);
+ +

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 :

+ +
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);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Récupère des informations sur toutes les visites de l'URL donnée.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var getting = browser.history.getVisits(
+  details                // object
+)
+
+ +

Paramètres

+ +
+
details
+
object.
+
+
+
url
+
string. L'URL pour laquelle récupérer les informations de visite.
+
+
+
+ +

valeur retournée

+ +

Une Promise sera remplie avec un tableau d'objets {{WebExtAPIRef('history.VisitItem')}} représentant chacun une visite à l'URL donnée. Les visites sont triées dans l'ordre chronologique inverse.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.history.getVisits")}}

+ +

Exemples

+ +

Liste toutes les visites de la page la plus récemment visitée :

+ +
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);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +

{{AddonSidebar()}}

+ +

Un objet HistoryItem fournit des informations sur une page dans l'historique du navigateur.

+ +

Type

+ +

C'est un objet avec les propriétés suivantes :

+ +
+
id
+
string. Identifiant unique pour l'article.
+
url {{optional_inline}}
+
string. L'URL de la page.
+
title {{optional_inline}}
+
string. Le titre de la page.
+
lastVisitTime {{optional_inline}}
+
number. Date et heure du dernier chargement de la page, représentée en millisecondes depuis l'époque.
+
visitCount {{optional_inline}}
+
number. Le nombre de fois que l'utilisateur a visité la page.
+
typedCount {{optional_inline}}
+
number. Le nombre de fois que l'utilisateur a navigué sur cette page en tapant l'adresse.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.history.HistoryItem")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar}}
+ +

Utilisez l'API historique pour interargir avec l'historique du navigateur.

+ +

Si vous recherchez des informations sur l'historique de session du navigateur, consultez l'interface historique.

+ +
+

Notez : Les téléchargements sont traités comme des objets HistoryItem. Par conséquent, des événements tels que history.onVisited seront également déclenchés pour les téléchargements.

+
+ +

L'historique du navigateur est un enregistrement chronologique des pages que l'utilisateur a visitées. l'API d'historique vous permet de :

+ + + +

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 :

+ + + +

Pour utiliser cette API, une extension doit demander la permission "history" dans le fichier  manifest.json.

+ +

Types

+ +
+
{{WebExtAPIRef("history.TransitionType")}}
+
Décrit comment le navigateur a navigué vers une page particulière.
+
{{WebExtAPIRef("history.HistoryItem")}}
+
+

Fournit des informations sur une page particulière dans l'historique du navigateur.

+
+
{{WebExtAPIRef("history.VisitItem")}}
+
+

Décrit une seule visite sur une page.

+
+
+ +

Fonctions

+ +
+
{{WebExtAPIRef("history.search()")}}
+
Recherche dans l'historique du navigateur les objets history.HistoryItem correspondant aux critères donnés.
+
{{WebExtAPIRef("history.getVisits()")}}
+
Récupère des informations sur les visites sur une page donnée.
+
{{WebExtAPIRef("history.addUrl()")}}
+
Ajoute un enregistrement à l'historique du navigateur d'une visite sur la page donnée.
+
{{WebExtAPIRef("history.deleteUrl()")}}
+
Supprime toutes les visites à l'URL donnée de l'historique du navigateur.
+
{{WebExtAPIRef("history.deleteRange()")}}
+
Supprime toutes les visites aux pages que l'utilisateur a effectuées pendant la période donnée.
+
{{WebExtAPIRef("history.deleteAll()")}}
+
Supprime toutes les visites de l'historique du navigateur.
+
+ +

Evénements

+ +
+
{{WebExtAPIRef("history.onTitleChanged")}}
+
+
Lancé lorsque le titre d'une page visitée par l'utilisateur est enregistré.
+
+
{{WebExtAPIRef("history.onVisited")}}
+
Lancé chaque fois que l'utilisateur visite une page, en fournissant les données {{WebExtAPIRef("history.HistoryItem")}} pour cette page.
+
{{WebExtAPIRef("history.onVisitRemoved")}}
+
+

Lancé lorsqu'une URL est complètement supprimée de l'historique du navigateur.

+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.history")}}

+ +

{{WebExtExamples("h2")}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +
Lancé lorsque le titre d'une page visitée par l'utilisateur est enregistré.
+ +
+ +
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ù history.onVisited est envoyé.
+ +
+ +
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 history.onTitleChanged.
+ +

Syntaxe

+ +
browser.history.onTitleChanged.addListener(listener)
+browser.history.onTitleChanged.removeListener(listener)
+browser.history.onTitleChanged.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(listener)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener argument est l'écouteur à supprimer
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Function that will be called when this event occurs. The function will be passed an object with the following properties:

+ +
+
url
+
String. URL of the page visited.
+
title
+
String. Title of the page visited.
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.history.onTitleChanged")}}

+ +

Exemples

+ +

Écoutez les événements de changement de titre et consignez l'URL et le titre des pages visitées

+ +
function handleTitleChanged(item) {
+  console.log(item.title);
+  console.log(item.url);
+}
+
+browser.history.onTitleChanged.addListener(handleTitleChanged);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Syntaxe

+ +
browser.history.onVisited.addListener(listener)
+browser.history.onVisited.removeListener(listener)
+browser.history.onVisited.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifie si listener est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
result
+
+

{{WebExtAPIRef('history.HistoryItem')}}. Un objet représentant l'élément dans l'historique du navigateur.

+ +

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 HistoryItem.title contiendra l'ancien titre de la page. Si le navigateur n'a pas d'enregistrement de l'ancien titre de la page, alors HistoryItem.title sera vide. Pour obtenir les titres des pages dès qu'ils sont connus, écoutez  {{WebExtAPIRef("history.onTitleChanged")}}.

+
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.history.onVisited")}}

+ +

Exemples

+ +

Écoutez les visites et consignez l'URL et l'heure de visite.

+ +
function onVisited(historyItem) {
+  console.log(historyItem.url);
+  console.log(new Date(historyItem.lastVisitTime));
+}
+
+browser.history.onVisited.addListener(onVisited);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Lancé lorsqu'une page est complètement supprimée de l'historique du navigateur.

+ + + +

Syntaxe

+ +
browser.history.onVisitRemoved.addListener(listener)
+browser.history.onVisitRemoved.removeListener(listener)
+browser.history.onVisitRemoved.hasListener(listener)
+
+ +

Les événements ont trois fonctions:

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction sera passée l'argument suivant :

+ +
+
removed
+
object. Détails de l'enlèvement. C'est un objet contenant deux propriétés: un booléen allHistory et un tableau urls.
+
+
    +
  • Si cet événement se déclenche parce qu'il est clair, allHistory sera true et urls sera un tableau vide.
  • +
  • Dans le cas contraire,  allHistory sera false et urls contiendront un qui est l'URL de la page supprimée.
  • +
+
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.history.onVisitRemoved")}}

+ +

Exemples

+ +
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);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Recherche dans l'historique du navigateur les objets {{WebExtAPIRef("history.HistoryItem")}} correspondant aux critères donnés.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var searching = browser.history.search(
+  query                  // object
+)
+
+ +

Paramètres

+ +
+
query
+
Un objet qui indique ce qu'il faut rechercher dans l'historique du navigateur. Cet objet a les champs suivants :
+
+
+
text
+
string. 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.
+
Par exemple, considérez cet article :
+
URL: "http://example.org"
+ Title: "Example Domain"
+
+
"http"              -> matches
+"domain"            -> matches
+"MAIN ample"        -> matches
+"main tt"           -> matches
+"main https"        -> does not match
+
+
Spécifiez une chaîne vide ("") pour récupérer tous les objets {{WebExtAPIRef("history.HistoryItem")}} qui répondent à tous les autres critères.
+
startTime {{optional_inline}}
+
number ou string ou object. Une valeur indiquant une date et une heure. Cela peut être représenté par :  un objet Date, une chaîne de date ISO 8601, ou le nombre de millisecondes depuis l'époque. Si elle est fournie, cette option exclut les résultats dont lastVisitTime est antérieure à cette heure. Si elle est omise, la recherche est limitée aux dernières 24 heures.
+
endTime {{optional_inline}}
+
number ou string ou object. Une valeur indiquant une date et une heure. Cela peut être représenté par : un objet Date, une chaîne de date ISO 8601, ou le nombre de millisecondes depuis l'époque. Si elle est fournie, cette option exclut les résultats dont lastVisitTime est postérieur à cette fois. Si elle est omise, toutes les entrées sont prises en compte à partir de l'heure de début.
+
maxResults {{optional_inline}}
+
number. 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 maxResults inférieure à 1.
+
+
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Exemples

+ +

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 :

+ +
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);
+ +

Logs the URL and last visit time for all history items ever visited:

+ +
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);
+ +

Consigne l'URL et la dernière visite de la dernière visite sur une page contenant la chaîne "mozilla" :

+ +
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);
+ +

{{WebExtExamples}}

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.history.search")}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +

{{AddonSidebar()}}

+ +

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

+ +

Type

+ +

Les valeurs de ce type sont des chaînes. Les valeurs possibles sont :

+ +
+
"link"
+
L'utilisateur a cliqué sur un lien dans une autre page.
+
"typed"
+
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é".
+
"auto_bookmark"
+
L'utilisateur a cliqué sur un signet ou un élément dans l'historique du navigateur.
+
"auto_subframe"
+
Les iframes imbriqués qui sont automatiquement chargés par leur parent.
+
"manual_subframe"
+
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.
+
"generated"
+
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.
+
"auto_toplevel"
+
La page a été passée à la ligne de commande ou est la page de démarrage.
+
"form_submit"
+
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.
+
"reload"
+
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.
+
"keyword"
+
L'URL a été générée à l'aide d'une recherche par mot clé configuré par l'utilisateur.
+
"keyword_generated"
+
Correspond à une visite générée pour un mot clé.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.history.TransitionType")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Un objet décrivant une seule visite sur une page.

+ +

Type

+ +

Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :

+ +
+
id
+
string. L'identifiant unique du {{WebExtAPIRef("history.HistoryItem")}} associé à cette visite.
+
visitId
+
string. L'identifiant unique pour cette visite.
+
visitTime{{optional_inline}}
+
number. Lorsque cette visite s'est produite, représentée en millisecondes depuis l'époque.
+
referringVisitId
+
string. L'ID de visite du référent.
+
transition
+
{{WebExtAPIRef('history.TransitionType')}}. Décrit comment le navigateur a navigué vers la page à cette occasion.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.history.VisitItem")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Détecte la langue du texte fourni à l'aide du détecteur de langue compact (CLD).

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var detectingLanguages = browser.i18n.detectLanguage(
+  text                  // string
+)
+
+ +

Paramètres

+ +
+
text
+
string. Chaîne d'entrée de l'utilisateur à traduire.
+
+ +

Valeur retournée

+ +

Une Promise qui sera remplie avec un objet résultat. L'objet résultat a deux propriétés :

+ +
+
isReliable
+
boolean. Si la langue a été détectée de manière fiable.
+
languages
+
array d'objets, dont chacun a deux propriétés:
+
+
+
language
+
{{WebExtAPIRef('i18n.LanguageCode')}}. La langue détectée.
+
percentage
+
integer. Le pourcentage de la chaîne d'entrée qui était dans la langue détectée.
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.i18n.detectLanguage")}}

+ +

Exemples

+ +
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);
+
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Obtient les accept-languages 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')}}.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var gettingAcceptLanguages = browser.i18n.getAcceptLanguages()
+
+ +

Paramètres

+ +

None.

+ +

Valeur retournée

+ +

Une Promise qui sera remplie avec un array d'objets {{WebExtAPIRef('i18n.LanguageCode')}}.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.i18n.getAcceptLanguages")}}

+ +

Exemples

+ +
function onGot(languages) {
+  console.log(languages);
+  //e.g. Array [ "en-US", "en" ]
+}
+
+var gettingAcceptLanguages = browser.i18n.getAcceptLanguages();
+gettingAcceptLanguages.then(onGot);
+
+ + + +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Obtient la chaîne localisée pour le message spécifié.

+ +

Syntaxe

+ +
browser.i18n.getMessage(
+  messageName,  // string
+  substitutions // optional any
+)
+
+ +

Paramètres

+ +
+
messageName
+
string. Le nom du message, tel que spécifié dans le fichier messages.json. Si le message ne peut pas être trouvé dans messages.json :
+
+
    +
  • Firefox renvoie "" et enregistre une erreur.
  • +
  • Chrome renvoie "" et n'enregistre pas d'erreur.
  • +
+
+
substitutions{{optional_inline}}
+
string ou array de string. Une chaîne de substitution unique ou un tableau de chaînes de substitution.
+
Dans Chrome, si vous fournissez plus de 9 chaînes de substitution, getMessage() renvoie undefined.
+
+ +

Valeur retournée

+ +

string. Message localisé pour les paramètres régionaux en cours.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.i18n.getMessage")}}

+ +

Exemples

+ +

Obtenez la chaîne localisée pour "messageContent", avec target.url substitué :

+ +
var message = browser.i18n.getMessage("messageContent", target.url);
+console.log(message);
+
+ +

Cela fonctionnerait avec un fichier _locales/en/messages.json contenant :

+ +
{
+  "messageContent": {
+    "message": "You clicked $URL$.",
+    "description": "Tells the user which link they clicked.",
+    "placeholders": {
+      "url" : {
+        "content" : "$1",
+        "example" : "https://developer.mozilla.org"
+      }
+    }
+  }
+}
+ +

Si target.url est "https://developer.mozilla.org", alors la valeur de message, dans la locale "en", serait :

+ +
"You clicked https://developer.mozilla.org."
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Syntaxe

+ +
browser.i18n.getUILanguage()
+
+ +

Paramètres

+ +
+
None.
+
+ +

Valeur retournée

+ +

string. Le code de langue de l'interface utilisateur du navigateur en tant que  {{WebExtAPIRef("i18n.LanguageCode")}}.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.i18n.getUILanguage")}}

+ +

Exemples

+ +
var uiLanguage = browser.i18n.getUILanguage();
+console.log(uiLanguage);
+
+//e.g. "fr"
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar}}
+ +

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 En-tete "Accept-Language".

+ +

Pour plus de détails sur l'utilisation de i18n pour votre extension, voir :

+ + + +

Types

+ +
+
{{WebExtAPIRef("i18n.LanguageCode")}}
+
Une balise de langue telle que "en-US" ou "fr".
+
+ +

Fonctions

+ +
+
{{WebExtAPIRef("i18n.getAcceptLanguages()")}}
+
Obtient les accept-languages 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')}}.
+
{{WebExtAPIRef("i18n.getMessage()")}}
+
Obtient la chaîne localisée pour le message spécifié.
+
{{WebExtAPIRef("i18n.getUILanguage()")}}
+
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.
+
{{WebExtAPIRef("i18n.detectLanguage()")}}
+
Détecte la langue du texte fourni en utilisant le détecteur de langue compact.
+
+ +

Compatibilité des navigateurs

+ +

{{Compat("webextensions.api.i18n")}}

+ +

{{WebExtExamples("h2")}}

+ +
+

Remerciements
+ Cette API est basée sur l'API Chromium chrome.i18n. Cette documentation est dérivée de i18n.json dans le code de Chromium.
+
+ Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar()}}
+ +

Une balise de langue telle que "en-US" ou "fr".

+ +

Type

+ +

Les valeurs de ce type sont des chaînes.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.i18n.LanguageCode")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +

{{AddonSidebar()}}

+ +

Chaque extension internationalisée a au moins un fichier nommé messages.json qui fournit des chaînes spécifiques aux paramètres régionaux. Cette page décrit le format des fichiers messages.json.

+ +
+

Remarque : Pour plus d'informations sur l'internationalisation de vos extensions, consultez notre guide i18n.

+
+ +

Exemple messages.json

+ +

Le code suivant montre un exemple de fichier messages.json file, tiré de notre extension d'exemple notify-link-clicks-i18n. Seuls les champs "name" et "message" ont obligatoires.

+ +
{
+  "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"
+      }
+    }
+  }
+}
+ +

Placement

+ +

Vos fichiers messages.json doivent être placés dans des répertoires nommés d'après les paramètres régionaux que chacun supporte — en, de, ja, etc. Ceux-ci doivent être placés dans un répertoire appelé _locales, à l'intérieur de la racine de votre extension.

+ +

Détails des membres

+ +

Cette section décrit chaque membre qui peut apparaître dans un fichier messages.json.

+ +

name

+ +

Chaque membre de niveau supérieur est nommé d'après le nom de la chaîne de message que vous localisez, par exemple "extensionName" ou "notificationContent" 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é.

+ +

Le nom peut inclure les caractères suivants :

+ + + +

Remarque : Vous ne devez pas définir les noms commençant par @@. Ces noms sont réservés aux messages prédéfinis.

+ +

message

+ +

Au moins, cette propriété doit être définie pour chaque chaîne. Le membre "message" contient une chaîne localisée qui peut contenir {{anch("placeholders")}}. Vous pouvez utiliser :

+ + + +

Autres points à noter :

+ + + +

description

+ +

{{optional_inline}}

+ +

Le membre "description" 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.

+ +

placeholders

+ +

{{optional_inline}}

+ +

Le membre "placeholders" 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.

+ +

Chaque définition de sous-chaîne d'espace réservé possède un certain nombre de valeurs :

+ +
"url" : {
+  "content" : "$1",
+  "example" : "https://developer.mozilla.org"
+}
+ +

Nom placeholder

+ +

Le nom de l'espace réservé est utilisé pour représenter l'espace réservé dans la chaîne de substitution (par exemple "url" devient $url$). Il est insensible à la casse et peut contenir les mêmes caractères qu'une chaîne de message {{anch("name")}}.

+ +

contenu

+ +

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 Récupération des chaînes de messages à partir de Javascript.

+ +

exemple

+ +

{{optional_inline}}

+ +

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.

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 +--- +
{{AddonSidebar()}}
+ +

Génère une URL que vous pouvez utiliser comme URL de redirection.

+ +

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 applications (sinon, chaque fois que vous installerez temporairement l'extension, vous obtiendrez une URL de redirection différente).

+ +

Voir Obtenir une URL de redirection pour plus d'informations sur les URL de redirection.

+ +

Syntaxe

+ +
var redirectURL = browser.identity.getRedirectURL()
+
+ +

Paramètres

+ +

None.

+ +

Valeur retournée

+ +

Une chaîne contenant une valeur d'URL de redirection.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.identity.getRedirectURL")}}

+ +

Exemples

+ +

Obtenez l'URL de redirection :

+ +
var redirectURL = browser.identity.getRedirectURL();
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.identity.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar}}
+ +

Utilisez l'API d'identité pour obtenir un code d'autorisation ou un jeton d'accès OAuth2, 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).

+ +

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 :

+ + + +

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.

+ +

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.

+ +

Pour utiliser cette API, vous devez posséder la permission de l'API "identity"

+ +

Installer

+ +

Il y a une certaine configuration que vous devez faire avant de publier votre extension.

+ +

Obtenir l'URL de redirection

+ +

L'URL de redirection 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..

+ +

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 applications (sinon, chaque fois que vous installez temporairement le module complémentaire, vous obtiendrez une URL de redirection différente).

+ +

Vous n'avez pas besoin d'utiliser l'URL de redirection retournée par  identity.getRedirectURL(): 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.

+ +

Vous utiliserez l'URL de redirection à deux endroits :

+ + + +

Enregistrement de votre extension

+ +

Avant de pouvoir utiliser OAuth2 avec un fournisseur de services, vous devez enregistrer l'extension auprès du fournisseur en tant que client OAuth2.

+ +

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()")}}.

+ +

Fonctions

+ +
+
{{WebExtAPIRef("identity.getRedirectURL()")}}
+
Obtient l'URL de redirection.
+
{{WebExtAPIRef("identity.launchWebAuthFlow()")}}
+
Lancement WAF.
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.identity")}}

+ +

{{WebExtExamples("h2")}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.identity.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Effectue la première partie d'un flux OAuth2 y compris l'authentification de l'utilisateur et l'autorisation du client.

+ +

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'URL de redirection et l'ID client de l'extension. Le fournisseur de service alors :

+ + + +

Notez que si aucune authentification ou autorisation n'est nécessaire, cette fonction se terminera silencieusement, sans interaction de l'utilisateur.

+ +

Cette fonction prend également un paramètre facultatif interactif: 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.

+ +

Cette fonction renvoie une Promise: 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.

+ +

S'il y a une erreur, la promesse est rejetée avec un message d'erreur. Les conditions d'erreur peuvent inclure :

+ + + +

Syntaxe

+ +
var authorizing = browser.identity.launchWebAuthFlow(
+  details   // object
+)
+
+ +

Paramètres

+ +
+
details
+
object. Options pour le flux, contenant les propriétés suivantes :
+
+
+
url
+
+

string. 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 :

+ +
    +
  • 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 Obtenir l'URL de redirection.
  • +
+
+
interactive {{optional_inline}}
+
+

boolean. Si omis ou false, force le flux à se terminer en silence, sans interaction de l'utilisateur.

+ +

Si l'utilisateur est déjà connecté et a déjà accordé l'accès pour l'extension, launchWebAuthFlow() 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), launchWebAuthFlow() invite l'utilisateur, c'est-à-dire que le flux sera interactif.

+ +

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).

+ +

TC'est le but de l'interactif: Si vous omettez interactif ou le définissez sur false, 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 interactif à true si vous lancez le flux en réponse à une action de l'utilisateur, et omettez le sinon.

+
+
+
+
+ +

Valeur retournée

+ +

Une Promise. 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. 

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.identity.launchWebAuthFlow")}}

+ +

Exemples

+ +

Cette fonction autorise une extension des données Google d'un utilisateur, conformément à la documentation disponible à l'adresse  https://developers.google.com/identity/protocols/OAuth2UserAgent. La validation du jeton d'accès renvoyé n'est pas affichée ici :

+ +
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);
+}
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.identity.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar()}}
+ +

Chaîne d'écrivant l'état d'inactivité du périphérique.

+ +

Type

+ +

Les valeurs de ce type sont des chaînes. Les valeurs possibles sont : "active", "idle", "locked".

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.idle.IdleState")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar}}
+ +

Découvrez quand le système de l'utilisateur est inactif, vérouillé ou actif.

+ +

Pour utiliser cette API, vous disposez de la permission "idle" .

+ +

Types

+ +
+
{{WebExtAPIRef("idle.IdleState")}}
+
+

Chaîne décrivant l'état d'inactivité du périphérique

+
+
+ +

Fonctions

+ +
+
{{WebExtAPIRef("idle.queryState()")}}
+
Renvoie "locked" si le système est verrouillé, "idle" si l'utilisateur n'a généré aucune entrée pendant un nombre de secondes spécifié, ou sinon "active"
+
{{WebExtAPIRef("idle.setDetectionInterval()")}}
+
Définit l'intervalle utilisé pour déterminer quand le système est inactif pour les événements  {{WebExtAPIRef("idle.onStateChanged")}}.
+
+ +

Evénements

+ +
+
{{WebExtAPIRef("idle.onStateChanged")}}
+
Définit quand le système change d'état.
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.idle")}}

+ +

{{WebExtExamples("h2")}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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 :

+ + + +

Syntaxe

+ +
browser.idle.onStateChanged.addListener(listener)
+browser.idle.onStateChanged.removeListener(listener)
+browser.idle.onStateChanged.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrétez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si l' écouteur est enregistré pour cet événement. Retourne true s'il écoute, false sinon.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
newState
+
{{WebExtAPIRef('idle.IdleState')}}. Le nouvel état est inactif.
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.idle.onStateChanged")}}

+ +

Exemples

+ +
function newState(state) {
+  console.log(`New state: ${state}`);
+}
+
+browser.idle.onStateChanged.addListener(newState);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Renvoie "locked" si le système est vérouillé, "inactif" si l'utilisation n'a généré aucune entrée pendant un nombre de secondes spécifié, ou "actif" dans le cas contraire.

+ +

Il s'agit d'une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var querying = browser.idle.queryState(
+  detectionIntervalInSeconds // integer
+)
+
+ +

Paramètres

+ +
+
detectionIntervalInSeconds
+
integer. Le système est considéré inactif si  detectionIntervalInSeconds secondes s'est écoulé depuis la dernière entrée utilisateur détectée.
+
+ +

Valeur renvoyée

+ +

Une Promise qui sera remplie avec une chaîne {{WebExtAPIRef('idle.IdleState')}}, indiquant l'état actuel.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.idle.queryState")}}

+ +

Exemples

+ +

Dans cet extrait simple, nous appelons queryState() et vérifions si le newState est inactif ou active, en enregistrant un message selon le cas. Comme nous avons spécifié une valeur de  detectionIntervalInSeconds de 15, un état inactif  ne sera signalé que s'il n'y a pas eu d'activité de l'utilisateur depuis au moins 15 secondes

+ +
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);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

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.

+ +

Syntaxe

+ +
browser.idle.setDetectionInterval(
+  intervalInSeconds // integer
+)
+
+ +

Paramètres

+ +
+
intervalInSeconds
+
integer. 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.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.idle.setDetectionInterval")}}

+ +

Exemples

+ +
browser.idle.setDetectionInterval(15);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar}}
+ +
+

Les APIs WebExtensions en JavaScript peuvent être utilisées au sein des scripts d’arrière plan de l’extension et dans tout autre document livré avec celle-ci. Ceci inclut les pop-ups relatives à une action navigateur ou action de page, barres latérales, pages d’options, ou pages de nouvel onglet. Certaines de ces APIs peuvent également être interrogées par des scripts de contenu de l’extension (voir la liste dans le guide des scripts de contenu).

+ +

Pour utiliser les APIs plus puissantes, vous devez en demander la permission dans le manifest.json de votre extension.

+ +

Vous pouvez accéder aux APIs en utilisant l’espace de noms browser :

+ +
function afficherTabs (tabs) {
+  console.log(tabs)
+}
+
+browser.tabs.query({currentWindow: true}, afficherTabs)
+
+ +
+

De nombreuses APIs sont asynchrones et retournent une {{JSxRef("Promise")}}:

+ +
function afficherCookie (c) {
+  console.log(c)
+}
+
+function afficherErreur (e) {
+  console.error(e)
+}
+
+let setCookie = browser.cookies.set(
+   {url: "https://developer.mozilla.org/"}
+);
+setCookie.then(logCookie, afficherErreur)
+
+ +
+

Notez que ceci est différent du système d'extension de Google Chrome, qui utilise l’espace de noms chrome à la place de browser, 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 chrome et les fonctions de rappel ainsi que browser et les promesses. Mozilla a également écrit une prothèse d’émulation (polyfill) permettant au code qui utilise browser et les promesses de fonctionner sans modification dans Chrome: https://github.com/mozilla/webextension-polyfill.

+ +

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.

+ +

Microsoft Edge utilise l’espace de noms browser, 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.

+ +

Tous les navigateurs ne sont pas compatibles avec toutes les APIs : pour de plus amples informations, consultez la compatibilité navigateur pour les APIs JavaScript.

+ +

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 boîte à outils. Par exemple, voici le premier exemple de code sur cette page fonctionnant dans la console de la boîte à outils dans Firefox Developpeur Edition :

+ +

Illustration of a snippet of web extension code run from the console in the Toolbox

+ +

Liste des API JavaScript

+ +

Voir ci-dessous pour une liste complète des API JavaScript :

+
+ +
{{SubpagesWithSummaries}}
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 +--- +
{{AddonSidebar()}}
+ +

Un objet ExtensionInfo contenant les informations sur l'extension.

+ +

Type

+ +

Il s'agit d'un objet avec les propriétés suivantes :

+ +
+
description
+
string. La description de l'extension, prise à partir de la clé de description du manifest.json.
+
disabledReason
+
string. Si l'extension est désactivée, la raison pour laquelle il a été désactivé. L'une des "inconnnues' or "permissions_increase".
+
enabled
+
boolean. Que l'extension soit activée ou pas.
+
homepageUrl
+
string. L'URL de la page d'accueil de l'extension, prise en compte de la clé  homepage_url du fichier manifest.json.
+
hostPermissions
+
ensemble de chaîne. Les permissions d'hôtes de l'extension.
+
icons
+
array of object. les informations sur les icônes des extensions. Un tableau d'objets, un par chaque icône. Chaque objet contient deux propriétés : +
    +
  • size: un entier représentant la largeur et la hauteur de l'icônes en pixels.
  • +
  • url: une chaîne contenant l'url relative de l'icône, en commençant par la racine de l'extensions.
  • +
+
+
id
+
string. l'ID de l'extension.
+
installType
+
string. Une chaîne décriantn comme l'extension a été ajouté. Une des options suivantes : +
    +
  • "admin": l'extension a été installé en raison d'une politique administrative.
  • +
  • "development": l'extension a été installé décompressé sur le disque.
  • +
  • "normal": l'extension a été installé normalement à partir du package d'installation.
  • +
  • "sideload": l'extension a été installé par un autre logiciel sur l'ordinateur de l'utilisateur.
  • +
  • "other": l'extension a été installé d'une autre manière.
  • +
+
+
mayDisable
+
boolean. Que cette extensions a été désactivé ou désinstallé par l'utilisateur.
+
name
+
string. Le nom de l'extension, pris à partir de la clé name du manifest.json.
+
offlineEnabled
+
boolean. Que les demandes de l'extensions soient prises en charge hors connexion.
+
optionsUrl
+
string. l'URL pour la page d'options de l'élément, s'il y en a un. Il s'agit d'une URL relative, à partir de la racine de l'extension.
+
permissions
+
array of string. les permissions de l'API de l'extension.
+
shortName
+
string. Une courte version du nom de l'extension, prise à partir de la clé  short_name du manifest.json.
+
type
+
string. 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 :
+
+
    +
  • "extension": le type d'extension la plus courante.
  • +
  • "hosted_app"
  • +
  • "packaged_app"
  • +
  • "legacy_packaged_app"
  • +
  • "theme"
  • +
+
+
updateUrl
+
string. URL pour la mise à jour de l'extension, tiré de la clé applications de manifest.json.
+
version
+
string. La version de l'extension, tiré de la clé version du manifest.json
+
versionName
+
string. Le nom descriptif pour la version de l'extension, tiré de la clé  version_name du manifest.json.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.management.ExtensionInfo")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Récupère un objet {{WebExtAPIRef("management.ExtensionInfo", "ExtensionInfo")}} contenant des informations sur l'extension spécifiée.

+ +

Cette API requière la permission API "management"

+ +

Il s'agit d'une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var gettingInfo = browser.management.get(
+  id                  // string
+)
+
+ +

Paramètres

+ +
+
id
+
string. l'ID de l'extension dont vous souhaitez récupérer les informations.
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.management.get")}}

+ +

Exemples

+ +

Enregistrez le nom de l'extension dont l'ID est "my-add-on":

+ +
var id = "my-add-on";
+
+function got(info) {
+  console.log(info.name);
+}
+
+var getting = browser.management.get(id);
+getting.then(got);
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Récupère un ensemble d'objets {{WebExtAPIRef("management.ExtensionInfo", "ExtensionInfo")}}, un pour chaque extension installé.

+ +

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é type de  {{WebExtAPIRef("management.ExtensionInfo", "ExtensionInfo")}}.

+ +

Cette API requiert la permission de l'API de "management"

+ +

Il s'agit d'une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var gettingAll = browser.management.getAll()
+
+ +

Paramètres

+ +

None.

+ +

Valeur retournée

+ +

Une Promise qui sera rempli avec un ensemble d'objets  {{WebExtAPIRef("management.ExtensionInfo", "ExtensionInfo")}}, un pour chaque extension installée.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.management.getAll")}}

+ +

Exemples

+ +

Enregistrez le nom de toutes les extensions installées :

+ +
function gotAll(infoArray) {
+  for (info of infoArray) {
+    if (info.type == "extension") {
+      console.log(info.name);
+    }
+  }
+}
+
+var gettingAll = browser.management.getAll();
+gettingAll.then(gotAll);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +
Lorsque l'utilisateur installe ou met  à jour une extension, le navigateur peut avertir l'utilisateur des permissions 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.
+ +
+ +

Compte tenu de l'ID d'une extension, cette fonction retourne les avertisseurs de permissions comme un tableau de chaînes.

+ +

Cette API requière l'API permission "management"

+ +

Il s'agit d'une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var gettingWarnings = browser.management.getPermissionWarningsById(
+  id                  // string
+)
+
+ +

Paramètres

+ +
+
id
+
string. ID de l'extension dont vous souhaitez récupérer les avertisseurs de permissions.
+
+ +

Valeur retournée

+ +

Une Promise qui sera remplie avec un ensemble de chaînes, chacune contenant un texte d'un avertissement de permissions.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.management.getPermissionWarningsById")}}

+ +

Exemples

+ +

Enregistrez les avertissements de permissions pour l'extension dont l'ID est "my-add-on" :

+ +
var id = "my-add-on";
+
+function gotWarnings(warnings) {
+  for (warning of warnings) {
+    console.log(warning);
+  }
+}
+
+var gettingWarnings = browser.management.getPermissionWarningsById(id);
+gettingWarnings.then(gotWarnings);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+ + +
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 +--- +
{{AddonSidebar()}}
+ +
Lorsque l'utilisateur installe ou met à jour une extension, la navigateur peut avertir l'utilisateur des permissions obligatoires. Toutes les permissions ne donnent pas lieu à des avertissements, et cela n'est pas normalisé dans les navigateurs.
+ +
+ +

Compte tenu du texte du fichier manifest.json, cette fonction retourne les avertisseurs de permissions qui seraient donnés pour l'extension comme un ensemble de chaines.

+ +

Cette API ne requière pas l'API de permission "management".

+ +

Il s'agit d'une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var gettingWarnings = browser.management.getPermissionWarningsByManifest(
+  manifestString      // string
+)
+
+ +

Paramètres

+ +
+
manifestString
+
string. Chaîne contenant le fichier manifest. Cela doit être un manifest valide : par exemple, il doit contenir toutes les clés obligatoires du manifest..
+
+ +

Valeur retournée

+ +

Une Promise qui sera rempli avec un ensemble de chaînes, chacune contenant le texte un avertisseur de permission.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.management.getPermissionWarningsByManifest")}}

+ +

Exemples

+ +

Enregistrez les avertissements de permissions dans le fichier manifest donné :

+ +
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);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Récupère un objet {{WebExtAPIRef("management.ExtensionInfo", "ExtensionInfo")}} contenant les informations de l'extension appelée.

+ +

Cette API ne requière pas l' API de permission "management".

+ +

Il s'agit d'une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var gettingSelf = browser.management.getSelf()
+
+ +

Paramètres

+ +

Aucun.

+ +

Valeur retournée

+ +

Une Promise qui sera remplie avec un objet {{WebExtAPIRef("management.ExtensionInfo", "ExtensionInfo")}}, contenant les informations sur l'extension.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.management.getSelf")}}

+ +

Exemples

+ +

Enregistrez le nom de l'extension :

+ +
function gotSelf(info) {
+  console.log("Add-on name: " + info.name);
+}
+
+var gettingSelf = browser.management.getSelf();
+gettingSelf.then(gotSelf);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar}}
+ +

Obtenez les éléments sur les modules complémentaires installés.

+ +

Avec l'API de gestion vous pouvez :

+ + + +

La plupart de ces opérations requièrent les permissions d'APIs de gestion. Les opérations qui ne fournissent pas d'accès à d'autres modules complémentaires ne nécessitent pas de permissions.

+ +

Types

+ +
+
{{WebExtAPIRef("management.ExtensionInfo")}}
+
Un objet contenant des informations sur un module complémentaire installé.
+
+ +

Fonctions

+ +
+
{{WebExtAPIRef("management.getAll()")}}
+
Renvoie des informations sur tous les modules complémentaires installés
+
{{WebExtAPIRef("management.get()")}}
+
Renvoie des informations sur un module complémentaire particulier, compte tenu de son ID.
+
{{WebExtAPIRef("management.getSelf()")}}
+
Renvoie des informations sur l'appel du module complémentaire.
+
{{WebExtAPIRef("management.install()")}}
+
Installe un thème particulier, étant donné son URL à l'adresse  addons.mozilla.org.
+
{{WebExtAPIRef("management.uninstall()")}}
+
Désinstalle un module complémenaire particulier, compte tenu de son ID.
+
{{WebExtAPIRef("management.uninstallSelf()")}}
+
Désinstalle l'appel d'un module complémentaire.
+
{{WebExtAPIRef("management.getPermissionWarningsById()")}}
+
Obtenez l'ensemble des alertes des permissions particulièrement pour un module complémentaire, compte tenu de son ID.
+
{{WebExtAPIRef("management.getPermissionWarningsByManifest()")}}
+
Obtenez l'ensemble des alertes de permission qui seraient affichés pour la chaîne de manifest donnée.
+
{{WebExtAPIRef("management.setEnabled()")}}
+
Activer / désactiver un module complémentaire, compte tenu de son ID.
+
+

Evénements

+
+
{{WebExtAPIRef("management.onInstalled")}}
+
Action quand un module complémentaire est installé.
+
{{WebExtAPIRef("management.onUninstalled")}}
+
Action quand un module complémentaire est désinstallé.
+
{{WebExtAPIRef("management.onEnabled")}}
+
Action quand un module complémentaire est activé.
+
{{WebExtAPIRef("management.onDisabled")}}
+
Action quand un module complémenaire est désactivé.
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.management")}}

+ +

{{WebExtExamples("h2")}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +
Installe et active une extension de thème à partir de l'URL donnée.
+ +
+ +

Cette API nécessite la permission de l'API "management" et ne fonctionnera qu'avec des thèmes signés.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
let {id} = await browser.management.install({url});
+
+ +

Paramètres

+ +
+
options
+
Un objet qui inclut l'URL du fichier XPI du thème à addons.mozilla.org et un hachage facultatif du fichier XPI, en utilisant sha256 ou plus.
+
+ +

Valeur retournée

+ +

Une Promise qui sera remplie avec un objet, contenant l'ExtensionID défini pour le thème dans manifest.json.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.management.install")}}

+ +

Exemples

+ +

Parcourez une liste de thèmes :

+ +
"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"],
+    });
+}
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Action quand l'extension est désactivée.

+ +

L'API requière l'API de permission "management".

+ +

Syntaxe

+ +
browser.management.onDisabled.addListener(listener)
+browser.management.onDisabled.removeListener(listener)
+browser.management.onDisabled.hasListener(listener)
+
+ +

Les événement ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoutez un auditeur à cet événement.
+
removeListener(listener)
+
L'argument de l'auditeur est l'auditeur à supprimer.
+
hasListener(listener)
+
Vérifie si l'auditeur est enregistré à l'événement. Renvoie true s'il est à l'écoute, sinon false .
+
+ +

addListener syntaxe

+ +

Paramètres

+ +
+
function
+
+

Fonction de rappel qui sera appelée lorsque cet événement se produira. La fonction passera par l'argument suivant :

+ +
+
info
+
ExtensionInfo: informations de l'extension qui a été désactivé
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.management.onDisabled")}}

+ +

Exemples

+ +

Enregistrez les noms des extensions lorsqu'ils sont désactivés.

+ +
browser.management.onDisabled.addListener((info) => {
+  console.log(info.name + " was disabled");
+});
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

L'auditeur de l'événement appelé lorsque l'événement enabled est déclenché, indiquant qu'un add-on est maintenant activé.

+ +

L'API requière l'API de permission "management"

+ +

Syntaxe

+ +
browser.management.onEnabled.addListener(listener)
+browser.management.onEnabled.removeListener(listener)
+browser.management.onEnabled.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoutez un auditeur à cet événement.
+
removeListener(listener)
+
L'argument de l'auditeur est l'auditeur à supprimer.
+
hasListener(listener)
+
Vérifie si l'auditeur est enregistré à l'événement. Renvoie true s'il est à l'écoute, sinon false .
+
+ +

addListener syntaxe

+ +

Parameters

+ +
+
function
+
+

Fonction de rappel qui sera appelée lorsque cet événement se produira. La fonction passera par l'argument suivant :

+ +
+
info
+
ExtensionInfo: informations de l'extension qui a été désinstallé.
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.management.onEnabled")}}

+ +

Exemples

+ +

Enregistrez les noms des extensions lorsqu'ils sont activés :

+ +
browser.management.onEnabled.addListener((info) => {
+  console.log(info.name + " was enabled");
+});
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Action quand une extension est installée.

+ +

Cette API requière l'API de permission "management".

+ +

Syntaxe

+ +
browser.management.onInstalled.addListener(listener)
+browser.management.onInstalled.removeListener(listener)
+browser.management.onInstalled.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajout un auditeur à l'événement.
+
removeListener(listener)
+
Arrêtez d'écouvter l'événement. L'argument de l'auditeur est un auditeur à supprimer.
+
hasListener(listener)
+
Vérifie si un auditeur est enregistré pour cet événement. Renvoie vrai si elle est à l'écoute, sinon faux .
+
+ +

addListener syntaxe

+ +

Paramètres

+ +
+
function
+
+

fonction de rappel qui sera appelée quand l'événement se produira. La fonction passera l'argument suivant :

+ +
+
info
+
ExtensionInfo: informations sur l'extension qui a été installée.
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.management.onInstalled")}}

+ +

Exemples

+ +

Enregistrez les noms des extensions lorsqu'ils sont installés :

+ +
browser.management.onInstalled.addListener((info) => {
+  console.log(info.name + " was installed");
+});
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+ + +
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 +--- +
{{AddonSidebar()}}
+ +

Action quand une extension est désinstallée.

+ +

L'API requière l'API de permission "management".

+ +

Syntaxe

+ +
browser.management.onUninstalled.addListener(listener)
+browser.management.onUninstalled.removeListener(listener)
+browser.management.onUninstalled.hasListener(listener)
+
+ +

Les événement ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoutez un auditeur à cet événement.
+
removeListener(listener)
+
L'argument de l'auditeur est l'auditeur à supprimer.
+
hasListener(listener)
+
Vérifie si l'auditeur est enregistré à l'événement. Renvoie true s'il est à l'écoute, sinon false .
+
+ +

addListener syntaxe

+ +

Paramètres

+ +
+
function
+
+

Fonction de rappel qui sera appelée lorsque cet événement se produira. La fonction passera par l'argument suivant :

+ +
+
info
+
ExtensionInfo: informations de l'extension qui a été désinstallé.
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.management.onUninstalled")}}

+ +

Exemples

+ +

Enregistrez les noms des extensions lorsqu'ils sont désinstallés :

+ +
browser.management.onUninstalled.addListener((info) => {
+  console.log(info.name + " was uninstalled");
+});
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Active ou désactive l'extension ajoutée.

+ +

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.

+ +

Cette API requière l'API permission "management".

+ +

Il s'agit d'une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var settingEnabled = browser.management.setEnabled(
+  id,              // string
+  enabled         // boolean
+)
+
+ +

Paramètres

+ +
+
id
+
string. ID de l'extension pour activer ou désactiver.
+
enabled
+
boolean. Que ce soit pour active ou désactiver l'extension.
+
+ +

Valeur retournée

+ +

Une Promise qui sera remplie sans arguments lorsque l'extension a été désactivé ou activé.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.management.setEnabled")}}

+ +

Exemples

+ +

Actviez / Désactivez l'option pour l'extension dont l'ID est "my-add-on":

+ +
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);
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Désinstalle une extension, compte tenu de son ID.

+ +

Cette API requiert l'API de permission. "management"

+ +

Il s'agit d'une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var uninstalling = browser.management.uninstall(
+  id,                  // string
+  options              // object
+)
+
+ +

Paramètres

+ +
+
id
+
string. ID de l'extensions à désinstaller.
+
options{{optional_inline}}
+
object. l'objet qui peut contenir une propriété unique, showConfirmDialog. Si showConfirmDialog est true, le navigateur affiche une boie de dialogue demandant à l'utilisateur de confirmer que le complément doit être désinstallé. +
    +
  • Si id est l'ID de l'extension appelant, showConfirmDialog est par défaut à false.
  • +
  • Si id est l'ID d'une extension différente, cette option est ignorée et la boite de dialogue de confirmation s'affche toujours.
  • +
+
+
+ +

Valeur retournée

+ +

Une Promise qui sera rejetée avec un message d'erreur si l'utilisateur a annulé la désintallatiion.

+ +

Compatibilité du navigateur

+ + + + + +

{{Compat("webextensions.api.management.uninstall")}}

+ + + +

Exemples

+ +

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.

+ +

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.

+ +
var id = "my-addon-id";
+
+function onCanceled(error) {
+  console.log(`Uninstall canceled: ${error}`);
+}
+
+var uninstalling = browser.management.uninstall(id);
+uninstalling.then(null, onCanceled);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Désinstalle l'appel de l'extension.

+ +

Cette API ne requiert pas la permission API "management"

+ +

Il s'agit d'une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var uninstallingSelf = browser.management.uninstallSelf(
+  options              // object
+)
+
+ +

Paramètres

+ +
+
options{{optional_inline}}
+
object. L'objet qui peut comporter deux propriétés, toutes deux facultatives :
+
+
+
showConfirmDialog{{optional_inline}}
+
Boolean. Si showConfirmDialog est true, le navigateur  affiche la boite  de dialogue demandant à l'utilisateur de confirmer que le complément doit être désinstallé. Par défaut à false.
+
dialogMessage{{optional_inline}}
+
String. Un message supplémentaire qui sera affiché dans la boite de dialogue de confirmation.
+
+ +

Valeur retournée

+ +

Une Promise qui sera rejetée avec un message d'erreur si l'utilisateur a annulé la désinstallation.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.management.uninstallSelf")}}

+ +

Exemples

+ +

Désinsallez l'extension, en demandant à l'utilisateur de confirmer. Dans le rappel, vérifiez si l'utilisateur a annulé la désinstallation.

+ +

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.

+ +
function onCanceled(error) {
+  console.log(`Canceled: ${error}`);
+}
+
+var uninstalling = browser.management.uninstallSelf({
+  showConfirmDialog: true
+});
+
+uninstalling.then(null, onCanceled);
+ +

Le même, mais aussi l'ajout d'un message personnalisé à la boite de dialogue :

+ +
function onCanceled(error) {
+  console.log(`Canceled: ${error}`);
+}
+
+var uninstalling = browser.management.uninstallSelf({
+  showConfirmDialog: true,
+  dialogMessage: "Testing self-uninstall"
+});
+
+uninstalling.then(null, onCanceled);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + +
+
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 +--- +
{{AddonSidebar()}}
+ +

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é.

+ +

Sa valeur est de 6 pour Firefox et Chrome.

+ +

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

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.menus.ACTION_MENU_TOP_LEVEL_LIMIT", 10)}}

+ +

{{WebExtExamples}}

+ +
Remerciements + +

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

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Les différents contextes dans lesquels un élément de menu peut apparaître.

+ +

Type

+ +

Les valeurs de ce type sont des chaînes. L'élément est affiché lorsque le contexte donné s'applique. Les valeurs possibles sont :

+ +
+
all
+
La spécification de "tous" équivaut à la combinaison de tous les autres contextes, à l'exception de 'bookmark', 'tab' et 'tools_menu'.
+
audio
+
S'applique lorsque l'utilisateur clique sur le contexte d'un élément audio.
+
bookmark
+
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 permission d'API dans le manifest.
+
browser_action
+
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.
+
editable
+
S'applique lorsque l'utilisateur clique en contexte sur un élément modifiable, comme un textarea.
+
frame
+
S'applique lorsque l'utilisateur clique sur le contexte dans une iframe imbriqué.
+
image
+
S'applique lorsque l'utilisateur clique sur le contexte d'une image.
+
link
+
S'applique lorsque l'utilisateur clique en contexte sur un lien.
+
page
+
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 iframe imbriqué ou un lien).
+
page_action
+
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.
+
password
+
S'applique lorsque l'utilisateur clique en contexte sur un élément d'entrée de mot de passe.
+
selection
+
S'applique lorsqu'une partie de la page est sélectionnée.
+
tab
+
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).
+
Depuis Firefox 63, cliquer sur l'élément du menu d'un onglet accorde la permission activeTab pour l'onglet cliqué, même si ce n'est pas l'onglet actuellement actif.
+
tools_menu
+
L'élément sera ajouté au menu des outils du navigateur. Notez que ceci n'est disponible que si vous accédez à ContextType via l'espace de nom des menus. Il n'est pas disponible si vous y accédez via l'espace de noms contextMenus.
+
video
+
S'applique lorsque l'utilisateur clique sur le contexte d'un élément video.
+
+ +

Notez que "launcher" n'est pas supporté.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.menus.ContextType", 10)}}

+ +

{{WebExtExamples}}

+ +
Remerciements + +

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

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Crée un nouvel élément de menu, avec un objet d'options définissant les propriétés de l'élément.

+ +

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.

+ +

Pour la compatibilité avec d'autres navigateurs, Firefox rend cette méthode disponible via l'espace noms contextMenus ainsi que l'espace de noms des menus. Notez cependant qu'il n'est pas possible de créer des éléments de menu d'outils (contexts: ["tools_menu"]) en utilisant l'espace de noms contextMenus.

+ +

Syntaxe

+ +
browser.menus.create(
+  createProperties, // object
+  function() {...}  // optional function
+)
+
+ +

Paramètres

+ +
+
createProperties
+
object. Propriétés pour le nouvel élément de menu.
+
+
+
checked {{optional_inline}}
+
boolean. L'état initial d'une case à cocher ou d'un élément radio : true pour selected et false pour non sélectionné. Un seul élément radio peut être sélectionné à la fois dans un groupe donné d'éléments radio.
+
command {{optional_inline}}
+
+

string. Chaîne décrivant une action à effectuer lorsque l'utilisateur clique sur l'élément. Les valeurs possibles sont:

+ +
    +
  • "_execute_browser_action": simule un clic sur l'action du navigateur de l'extension, en ouvrant son popup s'il en a un
  • +
  • "_execute_page_action": simule un clic sur l'action de la page de l'extension, en ouvrant son popup s'il en a un
  • +
  • "_execute_sidebar_action": ouvre la barre latérale de l'extension
  • +
+ +

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 onClicked.

+
+
contexts {{optional_inline}}
+
+

array de {{WebExtAPIRef('menus.ContextType')}}. Tableau des contextes dans lesquels cet élément de menu apparaîtra. Si cette option est omise :

+ +
    +
  • Si l'élément parent a des contextes définis, alors cet élément héritera des contextes de ses parents
  • +
  • sinon, l'élément reçoit un tableau de contexte de ["page"].
  • +
+
+
documentUrlPatterns {{optional_inline}}
+
array de string. Vous permet de restreindre l'élément à appliquer uniquement aux documents dont l'URL correspond à l'un des motifs données. Cela s'applique également aux cadres.
+
enabled {{optional_inline}}
+
boolean. Si cet élément de menu est activé ou désactivé. Par défaut à true.
+
icons {{optional_inline}}
+
+

object. 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 :

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

Vous pouvez également spécifier une seule icône SVG, qui sera mise à l'échelle de manière appropriée :

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

Note: L'élément de menu de niveau supérieur utilise les icônes spécifiées dans le manifest plutôt que ce qui est spécifié avec cette touche.

+
+
+
id {{optional_inline}}
+
string. Identifiant unique à attribuer à cet élément Obligatoire pour les pages d'événement. Ne peut pas être identique à un autre ID pour cette extension.
+
onclick {{optional_inline}}
+
function. 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')}}.
+
parentId {{optional_inline}}
+
integer ou string. 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.
+
targetUrlPatterns {{optional_inline}}
+
array de string. Similaire à documentUrlPatterns, mais vous permet de filtrer en fonction du href des balises d'ancrage et de l'attribut src 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.
+
title {{optional_inline}}
+
+

string. Le texte à afficher dans l'article. Obligatoire sauf si le type est "separator".

+ +

Vous pouvez utiliser "%s" 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 titre 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".

+ +

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

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

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

+
+
type {{optional_inline}}
+
{{WebExtAPIRef('menus.ItemType')}}. Le type d'élément de menu : "normal", "checkbox", "radio", "separator". Par défault à "normal".
+
viewType {{optional_inline}}
+
{{WebExtAPIRef('extension.ViewType')}}. Liste des types d'affichage où l'élément de menu sera affiché. Par défaut à n'importe quelle vue, y compris celles qui n'ont pas de viewType.
+
visible {{optional_inline}}
+
boolean. Si l'élément est affiché dans le menu. Par défaut, la valeur est true.
+
+
+
callback {{optional_inline}}
+
function. 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')}}.
+
+ +

Valeur retournée

+ +

integer ou string. L'ID de l'article nouvellement créé.

+ +

Exemples

+ +

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

+ +
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);
+  }
+});
+ +

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 permission activeTab.

+ +
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
+    });
+  }
+});
+ +

{{WebExtExamples}}

+ + + +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.menus.create", 10)}}

+ + + +
Remerciements + +

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

+
+ + 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 +--- +

{{AddonSidebar()}}

+ +

Un object 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.

+ +
+
checked {{optional_inline}}
+
boolean. The initial state of a checkbox or radio item: true for selected and false for unselected. Only one radio item can be selected at a time in a given group of radio items.
+
command {{optional_inline}}
+
+

string. String describing an action that should be taken when the user clicks the item. Possible values are:

+ +
    +
  • "_execute_browser_action": simulate a click on the extension's browser action, opening its popup if it has one
  • +
  • "_execute_page_action": simulate a click on the extension's page action, opening its popup if it has one
  • +
  • "_execute_sidebar_action": open the extension's sidebar
  • +
+ +

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 onClicked fires.

+
+
contexts {{optional_inline}}
+
+

array of {{WebExtAPIRef('menus.ContextType')}}. Array of contexts in which this menu item will appear. If this option is omitted:

+ +
    +
  • if the item's parent has contexts set, then this item will inherit its parent's contexts
  • +
  • otherwise, the item is given a context array of ["page"].
  • +
+
+
documentUrlPatterns {{optional_inline}}
+
array of string. Lets you restrict the item to apply only to documents whose URL matches one of the given match patterns. This applies to frames as well.
+
enabled {{optional_inline}}
+
boolean. Whether this menu item is enabled or disabled. Defaults to true.
+
icons {{optional_inline}}
+
+

object. 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:

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

Alternatively, you can specify a single SVG icon, and it will be scaled appropriately:

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

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

+
+
+
id {{optional_inline}}
+
string. The unique ID to assign to this item. Mandatory for event pages. Cannot be the same as another ID for this extension.
+
onclick {{optional_inline}}
+
function. 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')}}.
+
parentId {{optional_inline}}
+
integer or string. 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.
+
targetUrlPatterns {{optional_inline}}
+
array of string. Similar to documentUrlPatterns, but lets you filter based on the href of anchor tags and the src attribute of img/audio/video tags. This parameter supports any URL scheme, even those that are usually not allowed in a match pattern.
+
title {{optional_inline}}
+
+

string. The text to be displayed in the item. Mandatory unless type is "separator".

+ +

You can use "%s" 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 title 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".

+ +

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:

+ +
    +
  • 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.
  • +
  • If the next characters are the interpolation directive "%s": then the ampersand will not be displayed and no access key will be set.
  • +
  • If the ampersand is the last character in the title: then the ampersand will not be displayed and no access key will be set.
  • +
+ +

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.

+
+
type {{optional_inline}}
+
{{WebExtAPIRef('menus.ItemType')}}. The type of menu item: "normal", "checkbox", "radio", "separator". Defaults to "normal".
+
viewTypes {{optional_inline}}
+
{{WebExtAPIRef('extension.ViewType')}}. List of view types where the menu item will be shown. Defaults to any view, including those without a viewType.
+
visible {{optional_inline}}
+
boolean. Whether the item is shown in the menu. Defaults to true.
+
+ +

Browser compatibility

+ + + +

{{Compat("webextensions.api.menus.createProperties", 10)}}

+ +

{{WebExtExamples}}

+ +
Acknowledgements + +

This API is based on Chromium's chrome.contextMenus API. This documentation is derived from context_menus.json in the Chromium code.

+
+ + 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 +--- +
{{AddonSidebar}}
+ +

Renvoie l'élément pour un targetElementId donné

+ +

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  info.targetElementId donnée, à condition que l'élément existe toujours dans le document où la méthode est appelée.

+ +

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 targetElementId expire lorsque l'utilisateur ouvre un autre menu contextuel.

+ +
+

Note: menus.getTargetElement 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).

+
+ +


+ Une extension nécessite la permission "menus" pour utiliser cette API

+ +

Syntaxe

+ +
let elem = browser.menus.getTargetElement(targetElementId);
+
+ +

Paramètres

+ +
+
targetElementId
+
La propriété de l'objet {{WebExtAPIRef("menus.OnClickData")}} passé au gestionnaire {{WebExtAPIRef("menus.onClicked")}}ou à l'événement {{WebExtAPIRef("menus.onShown")}}.
+
+ +

Valeur retournée

+ +

L'élément auquel se réfère le paramètre targetElementId. Si le paramètre targetElementId n'est pas valide, La méthode retourne null.

+ +

Exemples

+ +

L'exemple suivant utilise la méthode getTargetElement pour obtenir l'élément auquel se réfère la propriété info.targetElementId puis le supprime.

+ +
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();`,
+    });
+  },
+});
+
+ +

{{WebExtExamples}}

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.menus.getTargetElement")}}

+ +

voir aussi

+ + 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 +--- +
{{AddonSidebar}}
+ +

Ajoutez des éléments au système de menus du navigateur.

+ +

Cette API est modélisée dans l'API "contextMenus" de Chrome, qui permet aux extensions Chrome d'ajouter des éléments au menu contextuel du navigateur. L'API browser.menus ajoute quelques fonctionnalités à l'API de Chrome.

+ +

Avant Firefox 55, cette API s'appelait à l'origine contextMenus, et ce nom a été retenu comme alias. Vous pouvez donc utiliser contextMenus pour écrire du code qui fonctionne dans Firefox et dans d'autres navigateurs.

+ +

Pour utiliser cette API, vous devez avoir la permission des  menus. vous pouvez également utiliser l'alias contextMenus à la place des menus, mais si vous le faites, vous devez accéder aux API sous le nom browser.contextMenus à la place.

+ +

Excepté que menus.getTargetElement(), cette API ne peut pas être utilisée à partir de scripts de contenu.

+ +

Créer des éléments de menu

+ +

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é.

+ +

É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.

+ +

Vous pouvez créer quatre types différents d'élément de menu, en fonction de la valeur de la propriété type que vous fournissez dans les options de create():

+ + + +

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:

+ +

+ +

Icônes

+ +

Si vous avez spécifié des icônes pour votre extension à l'aide de la clé de manifest "icons", 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 :

+ +

+ +

Uniquement pour les éléments d'un sous-menu, vous pouvez spécifier des icônes personnalisées en passant l'option icons à {{WebExtAPIRef("menus.create()")}} :

+ +

+ +

Exemple

+ +

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.

+ +

Vous pouvez créer un sous-menu comme celui-ci en utilisant du code comme :

+ +
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);
+ +

Types

+ +
+
{{WebExtAPIRef("menus.ContextType")}}
+
Les différents contextes dans lesquels un menu peut apparaître.
+
{{WebExtAPIRef("menus.ItemType")}}
+
Le type d'élément de menu : "normal", "checkbox", "radio", "separator".
+
{{WebExtAPIRef("menus.OnClickData")}}
+
Informations envoyées lorsqu'un élément de menu est cliqué.
+
+ +

Propriétés

+ +
+
{{WebExtAPIRef("menus.ACTION_MENU_TOP_LEVEL_LIMIT")}}
+
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".
+
+ +

Functions

+ +
+
{{WebExtAPIRef("menus.create()")}}
+
Crée un nouvel élément de menu.
+
{{WebExtApiRef("menus.getTargetElement()")}}
+
Retourne l'élément pour un info.targetElementId donné
+
{{WebExtApiRef("menus.overrideContext()")}}
+
Masquer tous les éléments de menu par défaut de Firefox en faveur d'une interface utilisateur de menu contextuel personnalisé.
+
{{WebExtAPIRef("menus.refresh()")}}
+
Mettre à jour un menu actuellement affiché.
+
{{WebExtAPIRef("menus.remove()")}}
+
Supprime un élément de menu.
+
{{WebExtAPIRef("menus.removeAll()")}}
+
Supprime tous les éléments de menu ajoutés par cette extension.
+
{{WebExtAPIRef("menus.update()")}}
+
Met à jour un élément de menu précédemment créé.
+
+ +

Evénements

+ +
+
{{WebExtAPIRef("menus.onClicked")}}
+
Lancé lorsqu'un élément de menu est cliqué.
+
{{WebExtAPIRef("menus.onHidden")}}
+
Lancé lorsque le navigateur cache un menu.
+
{{WebExtAPIRef("menus.onShown")}}
+
Lancé lorsque le navigateur affiche un menu.
+
+ +

Compatibilité du navigateur

+ +

{{ Compat("webextensions.api.menus", 1, "true") }}

+ +

{{WebExtExamples("h2")}}

+ +
Remerciements + +

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

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Le type d'élément de menu.

+ +

Type

+ +

Les valeurs de ce type sont des chaînes. Les valeurs possibles sont:

+ +
+
normal
+
Un élément de menu qui affiche simplement une étiquette.
+
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 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.

+
+
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  {{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é.

+
+
separator
+
Une ligne séparant un groupe d'éléments.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.menus.ItemType", 10)}}

+ +

{{WebExtExamples}}

+ +
Remerciements + +

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

+
+ + 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() +--- +
{{AddonSidebar()}}
+ +

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 contextmenu, et s'applique uniquement au menu qui s'ouvre après cet événement.

+ +

Cette API ne peut être appelée que si l'addon dispose de la permission "menus.overrideContext".

+ +

Syntaxe

+ +
browser.menus.overrideContext(
+  contextOptions // object
+)
+
+ +

Paramètres

+ +
+
contextOptions
+
object.Propriétés qui définissent le contexte du menu contextuel.
+
+
+
bookmarkId {{optional_inline}}
+
string Requis lorsque le contexte est un signet. Nécessite la permission  "bookmark" .
+
context {{optional_inline}}
+
string. pour passer outre, pour autoriser les éléments de menu d'autres extensions dans le menu. Actuellement, seuls "bookmark" et "tab" sont supportés. showDefaults ne peut pas être utilisé avec cette option.
+
showDefaults {{optional_inline}}
+
boolean. S'il faut également inclure des éléments de menu par défaut dans le menu.
+
tabId {{optional_inline}}
+
string Requis lorsque le contexte est "tab". Nécessite la permission "tabs" .
+
+
+
+ +

Exemples

+ +

Ouvrez le menu contextuel de l'onglet de votre interface utilisateur personnalisée, dans ce cas :

+ +
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 });
+
+ +

Voir ce billet de blog pour plus de détails.

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 +--- +
{{AddonSidebar()}}
+ +

Informations transmises à l'écouteur d'événement {{WebExtAPIRef("menus.onClicked")}} lorsque vous cliquez sur un élément de menu.

+ +

Type

+ +

Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :

+ +
+
bookmarkId {{optional_inline}}
+
string. L'ID du signet dans lequel le menu contextuel a été cliqué.***
+
button {{optional_inline}}
+
integer. Quel bouton de la souris a été enfoncé. Les valeurs sont les mêmes que pour  MouseEvent.button.
+
checked {{optional_inline}}
+
boolean. Un flag indiquant si une case à cocher ou un élément radio a été vérifié après avoir été cliqué.
+
editable
+
boolean. Un indicateur indiquant si l'élément est modifiable: par exemple, s'il s'agit d'un textarea.
+
frameId {{optional_inline}}
+
integer. 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 tools_menu ou tab context), frameId n'est pas défini.
+
frameUrl {{optional_inline}}
+
string. L'URL du cadre de l'élément sur lequel le menu contextuel a été cliqué, s'il était dans un cadre
+
linkText {{optional_inline}}
+
string. 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.
+
linkUrl {{optional_inline}}
+
string. Si l'élément est un lien, l'URL vers laquelle il pointe.
+
mediaType {{optional_inline}}
+
string. Une de "image", "video", ou "audio" si le menu contextuel a été activé sur l'un de ces types d'éléments.
+
menuItemId
+
integer ou string. ID de l'élément de menu sur lequel vous avez cliqué.
+
modifiers
+
Array destring. 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.
+
pageUrl {{optional_inline}}
+
string. 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.
+
parentMenuItemId {{optional_inline}}
+
integer ou string. L'ID parent, le cas échéant, pour l'élément cliqué.
+
selectionText {{optional_inline}}
+
string. Si du texte a été sélectionné dans la page, il contient le texte sélectionné.
+
srcUrl {{optional_inline}}
+
string. Sera présent pour les éléments avec une URL "src".
+
targetElementId{{optional_inline}}
+
integer. 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 id de l'élément page.
+
viewType {{optional_inline}}
+
{{WebExtAPIRef("extension.ViewType", "ViewType")}}. Le type de vue de l'extension.
+
wasChecked {{optional_inline}}
+
boolean. Un indicateur indiquant si une case à cocher ou un élément radio a été vérifié avant d'avoir cliqué.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.menus.OnClickData", 10)}}

+ +

{{WebExtExamples}}

+ +
Remerciements + +

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

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Lancé lorsqu'un élément de menu est cliqué.

+ +

Pour la compatibilité avec les autres navigateurs, Firefox rend cet événement disponible via l'espace de noms contextMenus ainsi que l'espace de noms des menus.

+ +

Syntaxe

+ +
browser.menus.onClicked.addListener(listener)
+browser.menus.onClicked.removeListener(listener)
+browser.menus.onClicked.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
info
+
{{WebExtAPIRef('menus.OnClickData')}}. Informations sur l'élément cliqué et le contexte dans lequel le clic s'est produit.
+
+ +
+
tab
+
{{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.
+
+
+
+ +

Compatibilté du navigateur

+ + + +

{{Compat("webextensions.api.menus.onClicked", 10)}}

+ +

Exemples

+ +

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 :

+ +
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);
+});
+ +

{{WebExtExamples}}

+ +
Remerciements + +

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

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

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.

+ +

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é.

+ +

Firefox rend cet événement disponible via l'espace de noms contextMenus ainsi que l'espace de nom des menus.

+ +

Syntaxe

+ +
browser.menus.onHidden.addListener(listener)
+browser.menus.onHidden.removeListener(listener)
+browser.menus.onHidden.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(listener)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener  est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il écoute, false sinon.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction sera transmise sans paramètre.

+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.menus.onHidden", 10)}}

+ +

Exemples

+ +

Cet exemple enregistre simplement un message chaque fois qu'un menu est masqué :

+ +
function hidden() {
+  console.log("Menu was hidden");
+}
+
+browser.menus.onHidden.addListener(hidden);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Lancé lorsque le navigateur a montré un menu.

+ +

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 onShown puis appellera {{WebExtAPIRef("menus.refresh()")}} pour mettre à jour le menu lui-même.

+ +

Le gestionnaire peut ajouter, supprimer ou mettre à jour des éléments de menu.

+ +

Par exemple, l'extension d'exemple menu-labelled-open  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 onShown et refresh() 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.

+ +

Notez qu'une extension ne devrait pas prendre trop de temps avant d'appeler refresh(), sinon la mise à jour sera visible par l'utilisateur.

+ +

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 permission de l'hôte.

+ +

Si le gestionnaire onShown 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 :

+ +
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;
+});
+ +

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 :

+ +
browser.menus.onShown.addListener(async function(info, tab) {
+  browser.menus.update(menuId, ...);
+   // Note: Not waiting for returned promise.
+  browser.menus.refresh();
+});
+ +

Toutefois, si vous appelez ces API de manière asynchrone, vous devez effectuer la vérification suivante :

+ +
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();
+});
+ +

Firefox rend cet événement disponible via l'espace de noms contextMenus ainsi que l'espace de nom des menus.

+ +

Syntaxe

+ +
browser.menus.onShown.addListener(listener)
+browser.menus.onShown.removeListener(listener)
+browser.menus.onShown.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(listener)
+
Ajoute un écouteur à cet événement
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si le listener est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
info
+
+

Object. Ceci est juste comme l'objet {{WebExtAPIRef('menus.OnClickData')}}, sauf qu'il contient deux propriétés supplémentaires:

+ +
    +
  • contexts: un tableau de tous les {{WebExtAPIRef("menus.ContextType", "contexts")}} applicables à ce menu.
  • +
  • menuIds: un tableau d'ID de tous les éléments de menu appartenant à cette extension qui sont affichés dans ce menu.
  • +
+ +

En comparaison avec menus.OnClickData, l'objet info omet également les propriétés menuItemId et modifiers, car bien sûr, celles-ci ne sont pas disponibles tant qu'un élément de menu n'a pas été sélectionné.

+ +

Les propriétés contexts, menuIds, frameId, et editable modifiables sont toujours fournis. Toutes les autres propriétés dans info sont uniquement fournies si l'extension a la permission d'hôte pour la page.

+
+
+ +
+
tab
+
{{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.
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.menus.onShown", 10)}}

+ +

Exemples

+ +

Cet exemple permet d'afficher le menu contextuel sur un lien, puis met à jour l'élément de menu openLabelledId avec le nom d'hôte du lien :

+ +
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);
+});
+
+ +

{{WebExtExamples}}

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 +--- +

{{AddonSidebar}}

+ +

Masquer tous les éléments de menu par défaut de Firefox en faveur d'un menu contextuel personnalisé.

+ +

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.

+ +

Pour appeler cette méthode, votre extension doit avoir la permission menus.overrideContext.

+ +

Syntaxe

+ +
browser.menus.overrideContext(
+  contextOptions // object
+)
+ +

Paramètres

+ +
+
contextOptions
+
object. Options sur la façon dont les menus contextuels seront remplacés.
+
+
+
showDefaults {{optional_inline}}
+
boolean. S'il faut également inclure les éléments de menu par défaut dans le menu.
+
context {{optional_inline}}
+
string. Le ContextType à surcharger, pour autoriser les éléments de menu d'autres extensions dans le menu. Actuellement, seuls 'bookmark' et 'tab' sont supportés. showDefaults ne peut pas être utilisé avec cette option.
+
bookmarkId {{optional_inline}}
+
string. Requis lorsque le contexte est  'bookmark'. Nécessite la permission  'bookmark'.
+
tabId {{optional_inline}}
+
integer. Requis lorsque le contexte est 'tab'. Nécessite la permission 'tabs'.
+
+
+
+
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 +--- +
{{AddonSidebar()}}
+ +

Actualise un menu affiché.

+ +

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.

+ +

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.

+ +

Firefox rend cette fonction disponible via l'espace de noms contextMenus ainsi que l'espace de noms des menus.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
browser.menus.refresh()
+
+ +

Paramètres

+ +

Aucun.

+ +

Valeur retournée

+ +

Une Promise qui se réalise sans arguments.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.menus.refresh", 10)}}

+ +

Exemples

+ +

Cet exemple permet d'afficher le menu contextuel sur un lien, puis met à jour l'élément de menu openLabelledId menu item avec le nom d'hôte du lien :

+ +
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);
+});
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Supprime un élément de menu.

+ +

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

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var removing = browser.menus.remove(
+  menuItemId      // integer or string
+)
+
+ +

Parameters

+ +
+
menuItemId
+
integer or string. The ID of the menu item to remove.
+
+ +

Valeur retournée

+ +

Une Promise 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é).

+ +

Exemples

+ +

Cette extension ajoute un élément de menu intitulé "Remove me!". Si vous cliquez sur l'élément, l'extension le supprime.

+ +
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);
+  }
+});
+ +

{{WebExtExamples}}

+ + + +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.menus.remove", 10)}}

+ + + +
Remerciements + +

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

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Supprime tous les éléments de menu ajoutés par l'extension.

+ +

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

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var removing = browser.menus.removeAll()
+
+ +

Paramètres

+ +

None.

+ +

Valeur retournée

+ +

Une Promise qui sera remplie sans argument lorsque tous les éléments ont été supprimés.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.menus.removeAll", 10)}}

+ +

Exemples

+ +

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 removeAll().

+ +
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);
+  }
+});
+ +

{{WebExtExamples}}

+ +
Remerciements + +

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

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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

+ +

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

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

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

Paramètres

+ +
+
id
+
integer ou string. L'ID de l'article à mettre à jour.
+
updateProperties
+
object. Les propriétés à mettre à jour. Identique à l'objet createProperties passé à  {{WebExtAPIRef("menus.create()", "menus.create()")}}, sauf que l'id ne peut être défini. En outre, les icônes ne peuvent être modifiées que dans les commandes de menu, et non dans le menu contextuel de niveau supérieur. L'icône de niveau supérieur correspond à l'icône principale de l'extension telle que déclarée dans le fichier manifeste de l'extension. +
+
checked {{optional_inline}}
+
boolean. L'état initial d'une case à cocher ou d'un élément radio : true fpour sélectionné et false pour non sélectionné. Un seul élément radio peut être sélectionné à la fois dans un groupe donné d'éléments radio.
+
command {{optional_inline}}
+
+

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

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

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

+
+
contexts {{optional_inline}}
+
+

array de {{WebExtAPIRef('menus.ContextType')}}. Tableau des contextes dans lesquels cet élément de menu apparaîtra. Si cette option est omise :

+ +
    +
  • si le parent de l'élément a des contextes définis, alors cet élément héritera des contextes de son parent
  • +
  • sinon, l'élément reçoit un tableau de contexte de ["page"].
  • +
+
+
documentUrlPatterns {{optional_inline}}
+
array de string. Vous permet de limiter l'élément à s'appliquer uniquement aux documents dont l'URL correspond à l'un des éléments motifs de données. Ceci s'applique également aux cadres.
+
enabled {{optional_inline}}
+
boolean. Si cet élément de menu est activé ou désactivé. La valeur par défaut est true.
+
icons {{optional_inline}}
+
+

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

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

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

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

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

+
+
+
id {{optional_inline}}
+
string. L'ID unique à affecter à cet article. Obligatoire pour les pages d'événements. Ne peut pas être le même qu'un autre ID pour cette extension.
+
onclick {{optional_inline}}
+
function. Une fonction qui sera appelée lorsque vous cliquerez sur l'élément de menu. Les pages d'événements ne peuvent pas l'utiliser : elles doivent plutôt enregistrer un auditeur pour {{WebExtAPIRef('menus.onClicked')}}.
+
parentId {{optional_inline}}
+
integer ou string. L'ID d'un élément de menu parent ; ceci fait de l'élément un enfant d'un élément précédemment ajouté. Remarque : Si vous avez créé plus d'un élément de menu, les éléments seront placés dans un sous-menu. Le parent du sous-menu sera étiqueté avec le nom de l'extension.
+
targetUrlPatterns {{optional_inline}}
+
array de string. Similairer à documentUrlPatterns, mais vous permet de filtrer en fonction de la href des balises d'ancre et l'attribut src des balises  img/audio/video. Ce paramètre prend en charge n'importe quel schéma d'URL, même ceux qui ne sont généralement pas autorisés dans un modèle de correspondance.
+
title {{optional_inline}}
+
+

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

+ +

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

+ +

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

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

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

+
+
type {{optional_inline}}
+
{{WebExtAPIRef('menus.ItemType')}}. Le type d'élément de menu : "normal", "checkbox", "radio", "separator". Defaults to "normal".
+
viewTypes {{optional_inline}}
+
{{WebExtAPIRef('extension.ViewType')}}. Liste des types d'affichage où l'élément de menu sera affiché. Par défaut à n'importe quelle vue, y compris celles qui n'ont pas de viewType.
+
visible {{optional_inline}}
+
boolean. Si l'élément est affiché dans le menu. La valeur par défaut est true.
+
+
+
+ +

Valeur retournée

+ +

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

+ +

Exemples

+ +

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

+ +
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);
+  }
+});
+ +

{{WebExtExamples}}

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.menus.update", 10)}}

+ +
Remerciements + +

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

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Efface une notification, compte tenu de son identifiant.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var clearing = browser.notifications.clear(
+  id                            // string
+)
+
+ +

Paramètres

+ +
+
id
+
string. L'ID de la notification à effacer. C'est la même chose que l'ID transmis dans le callback {{WebExtAPIRef('notifications.create()')}}.
+
+ +

Valeur retournée

+ +

Une Promise qui sera remplie avec un booléen : true la notification a été effacée, ou false si ce n'est pas le cas (par exemple, parce que la notification référencée par id  n'existe pas).

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.notifications.clear")}}

+ +

Exemples

+ +

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 :

+ +
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);
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.notifications.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar()}}
+ +

Crée et affiche une notification.

+ +

Passez un {{WebExtAPIRef("notifications.NotificationOptions")}} pour définir le contenu et le comportement de la notification.

+ +

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.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +
+

Si vous appelez notifications.create() plus d'une fois de suite, Firefox peut ne pas afficher de notification pour tout.

+
+ +

Syntaxe

+ +
var creating = browser.notifications.create(
+  id,                   // optional string
+  options               // NotificationOptions
+)
+
+ +

Paramètres

+ +
+
id{{optional_inline}}
+
string. 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.
+
options
+
{{WebExtAPIRef('notifications.NotificationOptions')}}. Définit le contenu et le comportement de la notification.
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.notifications.create")}}

+ +

Exemples

+ +

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.

+ +

Notez que vous aurez besoin de la permission "alarms" pour créer des alarmes (ainsi que de la permission "notifications" pour créer des notifications).

+ +
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");
+  });
+});
+ +

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 :

+ +
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);
+});
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.notifications.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar()}}
+ +

Obtient toutes les notifications actuellement actives créées par l'extension.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var gettingAll = browser.notifications.getAll()
+
+ +

Paramètres

+ +

None.

+ +

Valeur retournée

+ +

Une Promise 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.

+ +

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. 

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.notifications.getAll")}}

+ +

Exemples

+ +

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 :

+ +
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);
+ +

Cet exemple enregistre le titre de toutes les notifications actives :

+ +
function logNotifications(all) {
+  for (let id in all) {
+    console.log(`Title: ${all[id].title}`);
+  }
+}
+
+browser.notifications.getAll().then(logNotifications);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.notifications.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar}}
+ +

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.

+ +

Pour utiliser cette API, vous devez  avoir la permission "notifications".

+ +

La notification est identique sur tous les systèmes d'exploitation de bureau. Quelque chose comme :

+ +

+ +

Types

+ +
+
{{WebExtAPIRef("notifications.NotificationOptions")}}
+
Définit le contenu d'une notification.
+
{{WebExtAPIRef("notifications.TemplateType")}}
+
Le type de notification Par exemple, cela définit si la notification peut contenir une image.
+
+ +

Fonctions

+ +
+
{{WebExtAPIRef("notifications.clear()")}}
+
Effacer une notification spécifique, compte tenu de son identifiant.
+
{{WebExtAPIRef("notifications.create()")}}
+
 Créez et affichez une nouvelle notification.
+
{{WebExtAPIRef("notifications.getAll()")}}
+
Recevez toutes les notifications
+
{{WebExtAPIRef("notifications.update()")}}
+
Mettre à jour une notification
+
+ +

Evénements

+ +
+
{{WebExtAPIRef("notifications.onButtonClicked")}}
+
Lancé lorsque l'utilisateur a cliqué sur un bouton dans la notification.
+
{{WebExtAPIRef("notifications.onClicked")}}
+
Lancé lorsque l'utilisateur a cliqué sur la notification, mais pas sur un bouton.
+
{{WebExtAPIRef("notifications.onClosed")}}
+
Lancé lorsqu'une notification est fermée, soit par le système, soit parce que l'utilisateur l'a rejeté..
+
{{WebExtAPIRef("notifications.onShown")}}
+
Lancé immédiatement après l'affichage d'une notification.
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.notifications")}}

+ +

{{WebExtExamples("h2")}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.notifications.

+
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 +--- +
{{AddonSidebar()}}
+ +

Ce type contient les données nécessaires pour :

+ + + +

Type

+ +

Les valeurs de ce type sont des objets qui contiennent les propriétés listées ci-dessous.

+ +

Les trois premières propriétés - type, title, message - sont obligatoires pour {{WebExtAPIRef("notifications.create()")}}, mais pas avec {{WebExtAPIRef("notifications.update()")}}. Firefox ne supporte que les propriétés type, title, message, et iconUrl pour le moment, et le seul type disponible est 'basic'.

+ +
+
type
+
{{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.
+
message
+
string. Le contenu de la notification
+
title
+
string. Le titre de la notification
+
iconUrl{{optional_inline}}
+
string. 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 l'URL relative d'un fichier de l'extension.
+
contextMessage{{optional_inline}}
+
string. Du texte supplémentaire à afficher.
+
priority{{optional_inline}}
+
number. La priorité de cette notification. Ça peut être 0, 1, or 2. La valeur par défaut est 0.
+
eventTime{{optional_inline}}
+
number. Un timestamp en millisecondes pour cette notification depuis le timestamp 0.
+
buttons{{optional_inline}}
+
array de button. 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 :
+
+
+
title
+
string. Le texte du bouton.
+
iconUrl{{optional_inline}}
+
string. Une URL pointant vers l'icône de ce bouton.
+
+
+
imageUrl
+
+

string. 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 l'URL relative d'un fichier de l'extension.

+ +

Cette propriété est utilisable seuleument si le type de la notification est 'image'. Dans ce cas, cette propriété sera obligatoire si l'objet NotificationOptions est utilisé avec {{WebExtAPIRef("notifications.create()")}}, mais optionel avec {{WebExtAPIRef("notifications.update()")}}.

+
+
items
+
array of item. 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 :
+
+
+
title
+
string. Le titre de cet élément.
+
message
+
string. Le message à afficher pour cet élément.
+
+ Cette propriété est utilisable seuleument si le type de la notification est 'list'. Dans ce cas, cette propriété sera obligatoire si l'objet NotificationOptions est utilisé avec {{WebExtAPIRef("notifications.create()")}}, mais optionel avec {{WebExtAPIRef("notifications.update()")}}.
+
progress
+
integer. Une valeur entre 0 et 100, qui représente l'avancée actuelle d'un indicateur de progression.
+
Cette propriété est utilisable seuleument si le type de la notification est 'progress'. Dans ce cas, cette propriété sera obligatoire si l'objet NotificationOptions est utilisé avec {{WebExtAPIRef("notifications.create()")}}, mais optionel avec {{WebExtAPIRef("notifications.update()")}}.
+
+ +

Notez que les propriétés appIconMaskUrl et isClickable ne sont pas supportées.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.notifications.NotificationOptions")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API chromium chrome.notifications.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar()}}
+ +

Lancé lorsque l'utilisateur clique sur l'un des boutons de la notification.

+ +

Syntaxe

+ +
browser.notifications.onButtonClicked.addListener(listener)
+browser.notifications.onButtonClicked.removeListener(listener)
+browser.notifications.onButtonClicked.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument de listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Parameters

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
notificationId
+
string. ID de la notification sur laquelle le bouton a été cliqué.
+
buttonIndex
+
integer. L'index zero-based du bouton sur lequel vous avez cliqué.
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.notifications.onButtonClicked")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.notifications.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar()}}
+ +

Lancé lorsque l'utilisateur clique sur une notification, mais pas sur l'un des boutons de la notification (pour cela, voir {{WebExtAPIRef("notifications.onButtonClicked")}}).

+ +

Syntaxe

+ +
browser.notifications.onClicked.addListener(listener)
+browser.notifications.onClicked.removeListener(listener)
+browser.notifications.onClicked.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
notificationId
+
string. ID de la notification sur laquelle l'utilisateur a cliqué.
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.notifications.onClicked")}}

+ +

Exemples

+ +

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.

+ +
browser.notifications.onClicked.addListener(function(notificationId) {
+  console.log('Notification ' + notificationId + ' was clicked by the user');
+});
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.notifications.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar()}}
+ +

Lancé lorsqu'une notification est fermée, soit par le système, soit par l'utilisateur.

+ +

Syntaxe

+ +
browser.notifications.onClosed.addListener(listener)
+browser.notifications.onClosed.removeListener(listener)
+browser.notifications.onClosed.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener st l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener st enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Parameters

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
notificationId
+
string. ID de la notification fermée.
+
byUser
+
boolean. true si la notification a été fermée par l'utilisateur, ou falsesi elle a été fermée par le système. Cet argument n'est pas supporté dans Firefox.
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.notifications.onClosed")}}

+ +

Exemples

+ +

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.

+ +
browser.notifications.onClosed.addListener(function(notificationId) {
+  console.log('Notification ' + notificationId + ' has closed.');
+});
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.notifications.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar()}}
+ +

Lancé immédiatement après l'affichage d'une notification.

+ +

Syntaxe

+ +
browser.notifications.onShown.addListener(listener)
+browser.notifications.onShown.removeListener(listener)
+browser.notifications.onShown.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie trues'il écoute, sinon false.
+
+ +

syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
notificationId
+
string. ID de la notification qui a été affichée.
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.notifications.onShown")}}

+ +

Exemples

+ +

Ajoutez un écouteur à l'événement {{WebExtAPIRef("notifications.onShown")}} et consignez ses détails :

+ +
function logShown(itemId) {
+  console.log(`shown: ${itemId}`);
+  browser.notifications.getAll().then((all) => {
+    console.log(all[itemId]);
+  })
+}
+
+browser.notifications.onShown.addListener(logShown);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.notifications.

+
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 +--- +
{{AddonSidebar()}}
+ +

Ceci est une chaîne et représente le type de notification à créer. Il existe quatre types de notification : "basic", "image", "list", "progress".

+ +

Ceci est passé dans {{WebExtAPIRef("notifications.create()")}} et {{WebExtAPIRef("notifications.update()")}} comme propriété de type {{WebExtAPIRef("notifications.NotificationOptions", "NotificationOptions")}}.

+ +

Type

+ +

Les valeurs de ce type sont des chaînes. Les valeurs possibles sont :

+ + + +

Actuellement Firefox ne supporte que "basic" ici.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.notifications.TemplateType")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.notifications.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar()}}
+ +

Met à jour une notification, compte tenu de son identifiant

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var updating = browser.notifications.update(
+  id,                            // string
+  options                        // NotificationOptions
+)
+
+ +

Paramètres

+ +
+
id
+
string. L'ID de la notification à mettre à jour. C'est la même chose que l'ID transmis dans le callback {{WebExtAPIRef('notifications.create()')}}.
+
options
+
{{WebExtAPIRef('notifications.NotificationOptions')}}. Définit le nouveau contenu et le nouveau comportement de la notification.
+
+ +

Valeur retournée

+ +

Une Promise qui sera remplie avec un booléen : true si la notification a été mise à jour, ou false si ce n'est pas le cas (par exemple, parce que la notification référencée par id n'existe pas).

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.notifications.update")}}

+ +

Exemples

+ +

Cet exemple utilise update() 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.

+ +

Notez que vous aurez besoin de la permission "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 progress.

+ +
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}
+    );
+  });
+});
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.notifications.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar}}
+ +

Permet aux extensions d'implémenter un comportement personnalisé lorsque l'utilisateur tape dans la barre d'adresse du navigateur.

+ +

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.

+ +

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:...

+ +
    +
  1. Tout d'abord, l'extension doit inclure une clé "omnibox" dans le fichier manifest.json qui définit un mot-clé.
  2. +
  3. 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")}}.
  4. +
  5. 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.
  6. +
  7. 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.
  8. +
  9. 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.
  10. +
  11. Si l'utilisateur supprime la liste déroulante, l'extension recevra un événement {{WebExtAPIRef("omnibox.onInputCancelled")}}.
  12. +
+ +

Types

+ +
+
{{WebExtAPIRef("omnibox.OnInputEnteredDisposition")}}
+
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.
+
{{WebExtAPIRef("omnibox.SuggestResult")}}
+
Objet représentant une suggestion à ajouter à la liste déroulante de la barre.
+
+ +

Fonctions

+ +
+
{{WebExtAPIRef("omnibox.setDefaultSuggestion()")}}
+
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.
+
+ +

Evénements

+ +
+
{{WebExtAPIRef("omnibox.onInputStarted")}}
+
Lancé lorsque l'utilisateur met la barre d'adresse en surbrillance et tape le mot clé omnibox de votre extension, suivi d'un espace.
+
{{WebExtAPIRef("omnibox.onInputChanged")}}
+
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.
+
{{WebExtAPIRef("omnibox.onInputEntered")}}
+
Lancé lorsque l'utilisateur accepte l'une des suggestions de votre extension.
+
{{WebExtAPIRef("omnibox.onInputCancelled")}}
+
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.
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.omnibox")}}

+ +

{{WebExtExamples("h2")}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.omnibox.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar()}}
+ +

Lancé lorsque l'utilisateur a annulé son interaction avec votre poste (par exemple, en cliquant en dehors de la barre d'adresse).

+ +

Syntaxe

+ +
browser.omnibox.onInputCancelled.addListener(listener)
+browser.omnibox.onInputCancelled.removeListener(listener)
+browser.omnibox.onInputCancelled.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(listener)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

La fonction d'écouteur n'a pas de paramètres.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.omnibox.onInputCancelled")}}

+ +

Exemples

+ +
browser.omnibox.onInputCancelled.addListener(() => {
+  console.log("The user cancelled the session.");
+});
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.omnibox.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

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 :

+ + + +

Syntaxe

+ +
browser.omnibox.onInputChanged.addListener(listener)
+browser.omnibox.onInputChanged.removeListener(listener)
+browser.omnibox.onInputChanged.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(listener)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie trues'il écoute, sinon  false.
+
+ +

syntaxe addListener

+ +

The listener function will be passed two parameters: a string text, and a callback function suggest.

+ +

Parameters

+ +
+
text
+
+

String. 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.

+
+
suggest
+
+

Function. 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.

+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.omnibox.onInputStarted")}}

+ +

Exemples

+ +

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 description SuggestResult est le nom complet de la propriété et le contenu est la page MDN de cette propriété.

+ +

L'exemple écoute également {{WebExtAPIRef("omnibox.onInputEntered")}}, et ouvre la page MDN correspondant à la sélection, conformément à l'argument   {{WebExtAPIRef("omnibox.OnInputEnteredDisposition")}}.

+ +
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;
+  }
+});
+
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.omnibox.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

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:

+ + + +

Syntaxe

+ +
browser.omnibox.onInputEntered.addListener(listener)
+browser.omnibox.onInputEntered.removeListener(listener)
+browser.omnibox.onInputEntered.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(listener)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

La fonction d'écouteur recevra deux paramètres: une chaine de text, et un  {{WebExtAPIRef("omnibox.OnInputEnteredDisposition")}}.

+ +

Paramètres

+ +
+
text
+
+

String. C'est la valeur de la propriété content de l'objet {{WebExtAPIRef("omnibox.SuggestResult")}} que l'utilisateur a sélectionné.

+
+
disposition
+
+

{{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.

+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.omnibox.onInputEntered")}}

+ +

Exemples

+ +

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 description SuggestResult est le nom complet de la propriété et le contenu est la page MDN de cette propriété.

+ +

L'exemple écoute également {{WebExtAPIRef("omnibox.onInputEntered")}}, et ouvre la page MDN correspondant à la sélection, conformément à l'argument   {{WebExtAPIRef("omnibox.OnInputEnteredDisposition")}}.

+ +
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;
+  }
+});
+
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.omnibox.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar()}}
+ +

Le type omnibox.OnInputEnteredDisposition 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.

+ +

Il est passé dans l'écouteur {{WebExtAPIRef("omnibox.onInputEntered")}} avec la sélection elle-même.

+ +

Type

+ +

Les valeurs de ce type sont des chaînes. Ils peuvent prendre l'une des valeurs suivantes :

+ +
+
"currentTab"
+
Ouvrez la sélection dans l'onglet actuel.
+
"newForegroundTab"
+
Ouvrez la sélection dans un nouvel onglet et placez ce nouvel onglet au premier plan.
+
"newBackgroundTab"
+
Ouvrez la sélection dans un nouvel onglet d'arrière-plan, en conservant l'onglet en cours au premier plan.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.omnibox.OnInputEnteredDisposition")}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.omnibox.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Cela sera envoyé avant tout événement {{WebExtAPIRef("omnibox.onInputChanged")}} events.

+ +

Syntaxe

+ +
browser.omnibox.onInputStarted.addListener(listener)
+browser.omnibox.onInputStarted.removeListener(listener)
+browser.omnibox.onInputStarted.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction sera passée sans arguments.

+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.omnibox.onInputStarted")}}

+ +

Exemples

+ +
browser.omnibox.onInputStarted.addListener(() => {
+  console.log("User has started interacting with me.")
+});
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.omnibox.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

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.

+ +

Syntaxe

+ +
browser.omnibox.setDefaultSuggestion(
+  suggestion            // object
+)
+
+ +

Paramètres

+ +
+
suggestion
+
object. Un objet contenant une description 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.
+
+ +

Valeur retournée

+ +

None.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.omnibox.setDefaultSuggestion")}}

+ +

Exemples

+ +
browser.omnibox.setDefaultSuggestion({
+  description: "Type the name of a CSS property"
+});
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.omnibox.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar()}}
+ +

Le type omnibox.SuggestResult définit une suggestion unique que l'extension peut ajouter à la liste déroulante de la barre d'adresse.

+ +

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 omnibox.SuggestResult dans ce rappel.

+ +

Type

+ +

Les valeurs de ce type sont des objets. Ils ont les propriétés suivantes :

+ +
+
content
+
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.
+
description
+
C'est la chaîne qui est affichée dans la liste déroulante de la barre d'adresse.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.omnibox.SuggestResult")}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.omnibox.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar()}}
+ +

Obtient l'URL d'un document HTML en tant que popup pour cette action de page.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var gettingPopup = browser.pageAction.getPopup(
+  details               // object
+)
+
+ +

Paramètres

+ +
+
details
+
object.
+
+
+
tabId
+
integer. ID de l'onglet dont vous souhaitez obtenir la fenêtre contextuelle.
+
+
+
+ +

Valeur retournée

+ +

Une Promise qui sera accompli avec une chaîne contenant l'URL du popup.

+ +

Compatibilité du navigateur

+ + + + + +

{{Compat("webextensions.api.pageAction.getPopup")}}

+ + + +

Exemples

+ +

Ajoutez un élément de menu contextuel qui enregistre l'URL contextuelle de l'onglet en cours. Notez que vous aurez besoin de la  permission contextMenus dans votre manifest pour créer des éléments de menu contextuel.

+ +
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);
+  }
+});
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.pageAction. Cette documentation est dérivée de page_action.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Obtient le titre de la page action.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var gettingTitle = browser.pageAction.getTitle(
+  details // object
+)
+
+ +

Paramètres

+ +
+
details
+
object.
+
+
+
tabId
+
integer. L'ID de l'onglet contenant l'action page dont vous voulez obtenir le titre.
+
+
+
+ +

Valeur retournée

+ +

Une Promise qui sera accomplie  avec une chaîne contenant le titre de l'action de la page.

+ +

Compatibilité du navigateur

+ + + + + +

{{Compat("webextensions.api.pageAction.getTitle")}}

+ + + +

Exemples

+ +

Cet exemple enregistre le titre de l'action de la page lorsque l'utilisateur clique sur son icône :

+ +
function gotTitle(title) {
+  console.log(`Title ${title}`);
+}
+
+browser.pageAction.onClicked.addListener((tab) => {
+  var gettingTitle = browser.pageAction.getTitle({
+    tabId: tab.id
+  });
+  gettingTitle.then(gotTitle);
+});
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.pageAction. Cette documentation est dérivée de page_action.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Masque l'action de page pour un onglet donné.

+ +

hide() 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 à show_matches.

+ +

Syntaxe

+ +
browser.pageAction.hide(
+  tabId // integer
+)
+
+ +

Paramètres

+ +
+
tabId
+
integer. L'ID de l'onglet pour lequel vous souhaitez masquer l'action de la page.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.pageAction.hide")}}

+ +

Exemples

+ +

Masquez l'action de la page pour l'onglet en cours lorsque l'utilisateur clique dessus :

+ +
browser.pageAction.onClicked.addListener((tab) => {
+  browser.pageAction.hide(tab.id);
+});
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.pageAction. Cette documentation est dérivée de page_action.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Données en pixel pour une image.

+ +

Type

+ +

Un objet ImageData , par exemple à partir d'un élément {{htmlelement("canvas")}}.

+ +

Browser compatibility

+ + + +

{{Compat("webextensions.api.pageAction.ImageDataType")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.pageAction. Cette documentation est dérivée de page_action.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar}}
+ +

Une action de page est une icône cliquable dans la barre d'adresse du navigateur.

+ +

+ +

Vous pouvez écouter les clics sur l'icône, ou spécifié une fenêtre contextuelle qui s'ouvre  lorsque l'icone est cliquée.

+ +

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.

+ +

Vous pouvez définir la plupart des propriétés d'une action de page de manière déclarative à l'aide de la  clef page_action dans votre manifest.json, mais également les redéfinir par programmation en utilisant cette API.

+ +

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.

+ +

Types

+ +
+
{{WebExtAPIRef("pageAction.ImageDataType")}}
+
Données en pixel pour une image.
+
+ +

Fonctions

+ +
+
{{WebExtAPIRef("pageAction.show()")}}
+
Affiche l'action de la page pour un onglet donné.
+
{{WebExtAPIRef("pageAction.hide()")}}
+
Caches l'action de la page pour un onglet donné.
+
{{WebExtAPIRef("pageAction.isShown()")}}
+
Vérifie si l'action de la page est affichée ou non.
+
{{WebExtAPIRef("pageAction.setTitle()")}}
+
Définit le titre de l'action de la page. Ceci est affiché dans une info-bulle sur l'action de la page.
+
{{WebExtAPIRef("pageAction.getTitle()")}}
+
Obtient le titre de l'action de la page
+
{{WebExtAPIRef("pageAction.setIcon()")}}
+
Définit l'icône de l'action de la page.
+
{{WebExtAPIRef("pageAction.setPopup()")}}
+
Définit l'URL de la fenêtre contextuelle de l'action de la page.
+
{{WebExtAPIRef("pageAction.getPopup()")}}
+
Obtient l'URL de la fenêtre d'action de la page.
+
{{WebExtAPIRef("pageAction.openPopup()")}}
+
Ouvre la fenêtre contextuelle de l'action de la page.
+
+ +

Evénements

+ +
+
{{WebExtAPIRef("pageAction.onClicked")}}
+
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.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.pageAction")}}

+ + + +

{{WebExtExamples("h2")}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.pageAction. Cette documentation est dérivée de page_action.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Renvoie true si l'action de la page est affichée pour l'onglet donné..

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
let gettingIsShown = browser.pageAction.isShown(
+  details // object
+)
+
+ +

Paramètres

+ +
+
details
+
object. Un objet contenant le tabId à vérifier.
+
+
+
tabId
+
integer. ID de l'onglet à vérifier.
+
+
+
+ +
+
+
+
+
+
+ +

Valeur retournée

+ +

Une Promise qui sera remplie avec true si l'action de page de l'extension est affichée pour l'onglet donné, et false dans le cas contraire.

+ +

Compatibilité du navigateur

+ + + + + +

{{Compat("webextensions.api.pageAction.isShown")}}

+ + + +

Exemples

+ +

Vérifiez l'état de l'onglet actuellement actif :

+ +
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);
+}
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar}}
+ +

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.

+ +

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')}}.

+ +

Syntaxe

+ +
browser.pageAction.onClicked.addListener(listener)
+browser.pageAction.onClicked.removeListener(listener)
+browser.pageAction.onClicked.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez l'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifie si un listener est enregistré pour cet événement. Retourne true s'il écoute, false sinon.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Une fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
tab
+
Un objet {{WebExtAPIRef('tabs.Tab')}} représentant l'onglet dont l'action de la page a été cliquée.
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.pageAction.onClicked")}}

+ +

Exemples

+ +

Lorsque l'utilisateur clique sur l'action de la page, masquez-là et naviguez dans l'onglet actif pour "http://chilloutandwatchsomecatgifs.com/" :

+ +
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 () {
+});
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.pageAction. Cette documentation est dérivée de page_action.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +
Ouvrez le menu contextuel de l'action de la page.
+ +
+ +
+

Vous pouvez uniquement appeler cette fonction à partir du gestionnaire pour une action utilisateur.

+
+ +

Syntaxe

+ +
browser.pageAction.openPopup()
+
+ +

Paramètres

+ +

None.

+ +

Valeur retourné

+ +

Une Promise qui est résolue sans arguments.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.pageAction.openPopup", 10)}}

+ +

Exemples

+ +

Ouvrez la fenêtre contextuelle lorsque l'utilisateur sélectionne un élément de menu contextuel :

+ +
browser.menus.create({
+  id: "open-popup",
+  title: "open popup",
+  contexts: ["all"]
+});
+
+browser.menus.onClicked.addListener(() => {
+  browser.pageAction.openPopup();
+});
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Définit l'icône de l'action de la page

+ +

Vous pouvez spécifié un seule icône comme chemin d'accès à un fichier image ou un objet {{WebExtAPIRef('pageAction.ImageDataType')}}.

+ +

Vous pouvez spécifier plusieurs icônes de différentes tailles en fournissant un dictionnaire contenant plusieurs chemins ou objets ImageData. 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.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var settingIcon = browser.pageAction.setIcon(
+  details         // object
+)
+
+ +

Paramètres

+ +
+
details
+
object. Un objet contenant les propriétés imageData ou path , et éventuellement une propriété tabId.
+
+
+
imageData{{optional_inline}}
+
+

{{WebExtAPIRef('pageAction.ImageDataType')}} ou object. C'est un objet ImageData unique ou un dictionnaire d'objets.

+ +

Utilisation un dictionnaire d'objets pour spécifier de multiple objets ImageData 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 imageData est un dictionnaire, la valeur  de chaque propriété est un objet ImageData , et le nom est sa taille, comme ceci :

+ +
{
+  16: image16,
+  32: image32
+}
+ +

Le navigateur choisira l'image à utiliser en fonction de la densité de pixels de l'écran. Voir Choisir les tailles d'icônes pour plus d'informations à ce sujet.

+
+
path{{optional_inline}}
+
+

string ou object. C'est soit un chemin relatif vers un fichier icône  ou objet dictionnaire. 

+ +

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 path est un dictionnaire, la valeur de chaque propriété est un chemin relatif, et son nom est sa taille, comme ceci :

+ +
{
+  16: "path/to/image16.jpg",
+  32: "path/to/image32.jpg"
+}
+ +

Le navigateur choisira l'image à utiliser en fonction de la densité de pixels de l'écran. Voir Choisir les tailles d'icônes pour plus d'informations à ce sujet.

+
+
tabId
+
integer. L'ID de l'onglet dont vous voulez définir l'icône.
+
+ +

Valeur retournée

+ +

Une Promise qui sera accompli sans arguments une fois l'icône définie.

+
+
+

Compatibilité du navigateur

+ + + {{Compat("webextensions.api.pageAction.setIcon")}} + +

Exemples

+ +

Définissez l'icône de l'action de la page lorsque l'utilisateur clique dessus :

+ +
browser.pageAction.onClicked.addListener((tab) => {
+  browser.pageAction.setIcon({
+    tabId: tab.id, path: "icons/icon-48.png"
+  });
+});
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.pageAction. Cette documentation est dérivée de page_action.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + +
+
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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Syntaxe

+ +
browser.pageAction.setPopup(
+  details // object
+)
+
+ +

Paramètres

+ +
+
details
+
object.
+
+
+
tabId
+
integer.  L'ID de l'onglet pour lequel vous souhaitez définir la fenêtre contextuelle.
+
popup
+
string. 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..
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.pageAction.setPopup")}}

+ +

Exemples

+ +

Ecoutez les événements {{WebExtAPIRef("tabs.onUpdated")}} et basculez le popup si le statut de chargement change :

+ +
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"
+      });
+    }
+  }
+});
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.pageAction. Cette documentation est dérivée de page_action.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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

+ +

Syntaxe

+ +
browser.pageAction.setTitle(
+  details // object
+)
+
+ +

Paramètres

+ +
+
details
+
object.
+
+
+
tabId
+
integer. L'ID de l'onglet dont vous voulez définir le titre.
+
title
+
string. Le texte de l'info-bulle.
+
+
+
+ +

Compatibilité du navigateur

+ + + + + +

{{Compat("webextensions.api.pageAction.setTitle")}}

+ + + +

Exemples

+ +

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 :

+ +
browser.tabs.onUpdated.addListener((tabId, changeInfo, tabInfo) => {
+  browser.pageAction.show(tabId);
+  browser.pageAction.setTitle({
+    tabId: tabId,
+    title: "Tab ID: " + tabId
+  });
+});
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.pageAction. Cette documentation est dérivée de page_action.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

show() remplace la correspondance de motifs, de sorte que l'action page sera affichée dans l'onglet spécifié même si show_matches e correspond pas à l'URL ou si hide_matches ne correspond pas.

+ +

Notez que l'appel à show() n'a aucun effet sur un onglet sans contenu chargé.

+ +

Syntaxe

+ +
browser.pageAction.show(
+  tabId // integer
+)
+
+ +

Paramètres

+ +
+
tabId
+
integer. L'ID de l'onglet pour lequel vous souhaitez afficher l'action de la page.
+
+

Valeur renvoyée

+ +

Une Promise qui sera remplie avec  undefined.

+
+
+ +

Compatibilité du navigateur

+ + + + + +

{{Compat("webextensions.api.pageAction.show")}}

+ + + +

Exemples

+ +

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 permission contextMenus  dans votre manifest pour créer des éléments de menu contextuel.

+ +
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);
+  }
+});
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.pageAction. Cette documentation est dérivée de page_action.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Vérifiez si l'extension a les permissions listées dans l'objet  {{WebExtAPIRef("permissions.Permissions")}}.

+ +

L'argument Permissions peut contenir une propriété origine, qui est un tableau de permissions hôtes, ou une propriété  permissions , qui est un tableau de permissions API, ou les deux.

+ +

Il s'agit d'une fonction asynchrone qui renvoie une Promesse. 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 pattern-match the permissions listed in origins, then they are considered to match.

+ +

Syntaxe

+ +
var getContains = browser.permissions.contains(
+  permissions                // Permissions object
+)
+
+ +

Paramètres

+ +
+
permissions
+
Un objet {{WebExtAPIRef("permissions.Permissions")}} .
+
+ +

Valeur renvoyée

+ +

Une Promesse qui sera remplie avec  true si l'extension possède déjà toutes les permissions listées dans l'argument des permissions , ou false dans le cas contraire.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.permissions.contains")}}

+ +

Exemples

+ +
// 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
+
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.permissions.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar()}}
+ +

Récupère un objet {{WebExtAPIRef("permissions.Permissions")}} contenant toutes les permissions actuellement acccordées à l'extension.

+ +

Il s'agit d'une fonction asynchrone qui retourne une Promise.

+ +

Syntaxe

+ +
var gettingAll = browser.permissions.getAll()
+
+ +

Paramètres

+ +

None.

+ +

Valeur renvoyée

+ +

Une Promise 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  permissions , et toutes les permissions répertoriées dans  optional_permissions que l'extension a été accordée en appelant  {{WebExtAPIRef("permissions.request()")}}.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.permissions.getAll")}}

+ +

Exemples

+ +
// Extension permissions are:
+// "webRequest", "tabs", "*://*.mozilla.org/*"
+
+browser.permissions.getAll().then((result) => {
+  console.log(result.permissions); // [ "webRequest", "tabs" ]
+  console.log(result.origins)      // [ "*://*.mozilla.org/*" ]
+});
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.permissions.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar}}
+ +
Permet aux extensions de demander des permissions supplémentaires lors de l'exécution, après leur installation.
+ +
 
+ +

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 permissions. Les principaux avantages de demander des permissions au moment de l'installation sont les suivants:

+ + + +

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.

+ +

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é optional_permissions du manifest.json. Notez que certaines permissions ne sont pas autorisées dans optional_permissions. Les principaux avantages de ceci sont :

+ + + +
Pour utiliser l'API de permissions, déterminez les permissions que votre extension peut demander lors de l'exécution, et indiquez-les dans optional_permissions. Après cela, vous pouvez demander toutes les permissions incluses dans  optional_permissions. Les demandes peuvent uniquement être effectuées dans le gestionnaire pour une action de l'utilisateur (par exemple, un gestionnaire de clics).
+ +
 
+ +
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 Demande de permissions à exécuter
+ +

Types

+ +
+
{{WebExtAPIRef("permissions.Permissions")}}
+
Représente un ensemble de permissions.
+
+ +

Méthodes

+ +
+
{{WebExtAPIRef("permissions.contains()")}}
+
Découvrez si l'extensions a le jeu de permissions donné.
+
{{WebExtAPIRef("permissions.getAll()")}}
+
Obtenez toutes les permissions que cette extension a actuellement.
+
{{WebExtAPIRef("permissions.remove()")}}
+
Renoncer à un ensemble de permissions.
+
{{WebExtAPIRef("permissions.request()")}}
+
Demander un ensemble de permissions.
+
+ +

Event handlers

+ +
+
{{WebExtAPIRef("permissions.onAdded")}}
+
Activé lorsqu'une nouvelle permission est accordée.
+
{{WebExtAPIRef("permissions.onRemoved")}}
+
Déclenché lorsque une permission est supprimée.
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.permissions")}}

+ +

{{WebExtExamples("h2")}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.permissions.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar()}}
+ +

Activé lorsque l'extension a accordé de nouvelles permissions.

+ +

Syntaxe

+ +
browser.permissions.onAdded.addListener(listener)
+browser.permissions.onAdded.removeListener(listener)
+browser.permissions.onAdded.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute une écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifier si le listener est enregistré pour cet événement. Retourne true s'il écoute, sinon  false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produira. La fonction passera les arguments suivants :

+ +
+
permissions
+
Objet {{WebExtAPIRef("permissions.Permissions")}} contenant les permissions qui ont été accordées.
+
+
+
+ +

Compatibilité du navigateur

+ + + +
{{Compat("webextensions.api.permissions.onAdded")}}
+ +

Exemples

+ +
function handleAdded(permissions) {
+  console.log(`New API permissions: ${permissions.permissions}`);
+  console.log(`New host permissions: ${permissions.origins}`);
+}
+
+browser.permissions.onAdded.addListener(handleAdded);
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.permissions.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar()}}
+ +

Activé lorsque certaines permissions sont supprimés de l'extension.

+ +

Syntaxe

+ +
browser.permissions.onRemoved.addListener(listener)
+browser.permissions.onRemoved.removeListener(listener)
+browser.permissions.onRemoved.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur a supprimée.
+
hasListener(listener)
+
Vérifiez si listener est enregistré dans l'événement. Retourne true s'il écoute, sinon  false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui ne sera appelée lorsque cet événement se produira. La fonction sera passée avec les arguments suivants :

+ +
+
permissions
+
L'objet {{WebExtAPIRef("permissions.Permissions")}} contenant les permissions qui ont été supprimées.
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.permissions.onRemoved")}}

+ +

Exemples

+ +
function handleRemoved(permissions) {
+  console.log(`Removed API permissions: ${permissions.permissions}`);
+  console.log(`Removed host permissions: ${permissions.origins}`);
+}
+
+browser.permissions.onRemoved.addListener(handleRemoved);
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.permissions.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar()}}
+ +

Un objet Permissions représente une collection de permissions.

+ +

Type

+ +

Un {{jsxref("object")}} avec les propriétés suivantes :

+ +
+
origins{{optional_inline}}
+
Un tableau de modèles de correspondance, représentant les permissions de l'hôte.
+
permissions{{optional_inline}}
+
Un tableau de permissions nommées, y compris les permissions d'API  et les permissions du presse-papiers.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.permissions.Permissions")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.permissions.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar()}}
+ +

Demander d'abandonner les permissions listées dans l'objet {{WebExtAPIRef("permissions.Permissions")}}.

+ +

L'argument Permissions peut contenir soit une propriété  origins ,qui est un tableau de permissions d'hôte , ou une propriété permissions, qui est un tableau de permissions d'API, ou les deux. Les permissions  doivent provenir de l'ensemble des permissions définies dans la clé optional_permissions du manifest.json.

+ +

Il s'agit d'une fonction asynchrone qui renvoie une Promesse.

+ +

Syntaxe

+ +
var removing = browser.permissions.remove(
+  permissions                // Permissions object
+)
+
+ +

Paramètres

+ +
+
permissions
+
Un objet {{WebExtAPIRef("permissions.Permissions")}}.
+
+ +

Valeur retournée

+ +

Une Promesse qui sera remplie avec true si les permissions répertoriées dans l'argument permissions ont été supprimées, ou false dans le cas contraire.

+ +

Browser compatibility

+ + + +

{{Compat("webextensions.api.permissions.remove")}}

+ +

Exemples

+ +

Ce code ajoute un gestionnaire de clic qui supprime une permission donnée.

+ +
const permissionToRemove = {
+  permissions: ["history"]
+}
+
+function remove() {
+  console.log("removing");
+  browser.permissions.remove(permissionToRemove).then(result => {
+    console.log(result);
+  });
+}
+
+document.querySelector("#remove").addEventListener("click", remove);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.permissions.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar()}}
+ +

Demandez l'ensemble des permissions répertoriées dans l'objet {{WebExtAPIRef("permissions.Permissions")}}.

+ +

L'argument Permissions peut contenir soit une propriété  origins , qui est un tableau de permissions d'hôte, soit une propriété permissions , qui est un tableau de permissions d'API, ou les deux. Les permissions doivent provenir de l'ensemble des permissions définies dans la clé  optional_permissions du manifest.json. La propriété origins qui correspondent à un sous-ensemble des hôtes correspondant à une  permission facultative : par exemple, si optional_permissions inclut "*://mozilla.org/", alors  permissions.origins peut inclure  "https://developer.mozilla.org/".

+ +

La demande ne peut être faite qu'à l'intérieur du gestionnaire pour une action utilisateur.

+ +

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.

+ +

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.

+ +

Il s'agit d'une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var requesting = browser.permissions.request(
+  permissions                // Permissions object
+)
+
+ +

Paramètres

+ +
+
permissions
+
Un objet {{WebExtAPIRef("permissions.Permissions")}}
+
+ +

Return value

+ +

Une Promise qui sera remplie avec true si l'extension a reçu toutes les permissions répertoriées dans l'argument des permissions , ou false dans le cas contraire.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.permissions.request")}}

+ +

Exemples

+ +

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.

+ +
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);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Actuellement un bug avec la demande d'origines et la demande des permissions sur la page about:addons.

+ +

Cette API est basée sur l'API Chromium chrome.permissions.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Vous ne pouvez appeler cela que pour un module installé dans Firefox

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var getting = browser.pkcs11.getModuleSlots(
+  name              // string
+)
+
+ +

Paramètres

+ +
+
name
+
string. Nom du module. Cela doit correspondre à la propriété name dans le manifest PKCS #11 pour le module.
+
+ +

Valeur retournée

+ +

Une Promise 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 :

+ + + +

Token Les objets ont les propriétés suivantes :

+ +
+
name
+
string. Nom du jeton.
+
manufacturer
+
string. Nom du jeton fabriqué.
+
HWVersion
+
string. 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".
+
FWVersion
+
string. Version du micrologiciel, en tant que numéro de version PKCS #11 (deux 32-bit séparés par un point, comme "1.0".
+
serial
+
string. Numéro de série, dont le format est défini par la spécification de jeton.
+
isLoggedIn
+
boolean: true si le jeton est déjà connecté, false sinon.
+
+ +

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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.pkcs11.getModuleSlots")}}

+ +

Exemples

+ +

Installe un module, puis dresse la liste de ses emplacements et liste des jetons qu'ils contiennent :

+ +
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);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar}}
+ +

L'API pkcs11 permet à une extension d'énumérer les modules de sécurité PKCS #11, et de rendre accessibles au navigateur en tant que sources clés et de certificats.

+ +

Pour utiliser cette API, vous devez avoir la permission "pkcs11".

+ +

Utilisation de la boîte de dialogue Préférences Firefox pour installer les modules PKCS #11

+ +

Effectuez les étapes suivantes :

+ +
    +
  1. +

    Sauvegardez le module PKCS #11 dans un emplacement permanent sur votre ordinateur local

    +
  2. +
  3. +

    Sélectonnez Outils > Options ou sélectionnez le menu Firefox puis Options

    +
  4. +
  5. +

    Une fois la page Options ouverte, sélectionnez Vie privée & Sécurité

    +
  6. +
  7. +

    Faites défiler vers le bas de la page et sous Certificats ou tapez sur Dispositifs de sécurité...
    +

    +
  8. +
  9. +

    Cliquez ou appuyez sur le bouton Charger
    +

    +
  10. +
  11. +

    Entrez un nom pour le module de sécurité, tel que "Ma Base de données Client"

    + +
    +

    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.

    +
    +
  12. +
  13. +

    Choisir Parcourir... pour trouver l'emplacement du module PKCS #11 sur votre ordinateur local, puis cliquez ou appuyez sur OK pour confirmer.

    +
  14. +
+ +
    +
+ +

Provisionnement des modules PKCS #11

+ +
+

Note: A partir de Firefox 58, les extensions peuvent utiliser l'API pkcs11 pour énumérer les modules PKCS #11 et les rendre accessibles au navigateur comme sources de clés et certificats.

+
+ +

Il y a 2 pré-requis pour pouvoir utiliser cette API:

+ + + +

Très probablement, l'utilisateur ou l'administrateur du périphérique installerait le module PKCS #11, et son installateur installerait le fichier de manifeste natif en même temps.

+ +

Cependant, le module et le manifeste ne peuvent pas être installés dans le cadre du processus d'installation de l'extension.

+ +

Pour plus de détails sur le contenu et l'emplacement du fichier de manifeste, voir Manifest natifs.

+ +

Fonctions

+ +
+
{{WebExtAPIRef("pkcs11.getModuleSlots()")}}
+
Pour chaque emplacement dans un module, obtenez son nom et s'il contient un jeton.
+
{{WebExtAPIRef("pkcs11.installModule()")}}
+
Installe le module PKCS # 11 nommé
+
{{WebExtAPIRef("pkcs11.isModuleInstalled()")}}
+
Vérifie si le module PKCS # 11 nommé est installé.
+
{{WebExtAPIRef("pkcs11.uninstallModule()")}}
+
Désinstalle le module PKCS # 11 nommé.
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.pkcs11", 1, 1)}} {{WebExtExamples("h2")}}

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 +--- +
{{AddonSidebar()}}
+ +

Installe le module PKCS # 11 nommé, le rendant disponible pour Firefox

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var installing = browser.pkcs11.installModule(
+  name,              // string
+  flags              // integer
+)
+
+ +

Paramètres

+ +
+
name
+
string. Nom du module à installer. Cela doit correspondre à la propriété name property dans le manifest PKCS #11 pour le module.
+
flags{{optional_inline}}
+
integer. Drapeaux à transmettre au module.
+
+ +

Valeur retournée

+ +

Une Promise qui sera accompli sans arguments une fois le module installé.

+ +

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.

+ +

Browser compatibility

+ + + +

{{Compat("webextensions.api.pkcs11.installModule", 10)}}

+ +

Exemples

+ +

Installe un module, puis dresse la liste de ses emplacements et liste les jetons qu'ils contiennent :

+ +
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);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Vérifie si le module PKCS #11 nommé est actuellement installé dans Firefox.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var checking = browser.pkcs11.isModuleInstalled(
+  name              // string
+)
+
+ +

Paramètres

+ +
+
name
+
string. Nom du module à vérifier.
+
+ +

valeur retournée

+ +

Une Promise qui sera remplie avec true si le module est installé, false sinon.

+ +

Si une erreur se produit dans le module, la promise sera rejetée avec un message d'erreur.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.pkcs11.isModuleInstalled", 10)}}

+ +

Exemples

+ +

Vérifie sir le module nommée "pkcs11_module" est installé :

+ +
function logIsInstalled(isInstalled) {
+  console.log(`Module is installed: ${isInstalled}`);
+}
+
+browser.pkcs11.isModuleInstalled("pkcs11_module").then(logIsInstalled);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Désinstalle le module PKCS #11 nommé de Firefox.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var uninstalling = browser.pkcs11.uninstallModule(
+  name              // string
+)
+
+ +

Paramètres

+ +
+
name
+
string. Nom du module à désinstaller. Cela doit correspondre à la propriété name dans le manifest PKCS #11 pour le module.
+
+ +

Return value

+ +

Une Promise qui sera accompli sans arguments une fois le module désinstallée.

+ +

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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.pkcs11.uninstallModule", 10)}}

+ +

Exemples

+ +

Désinstalle le module nommé "pkcs11_module" :

+ +
browser.pkcs11.uninstallModule("pkcs11_module");
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar}}
+ +

Accédez et modifiez les différents paramètres du navigateur liés à la vie privée.

+ +

Pour utiliser l'API de confidentialité, vous devez avoir l'autorisation de l'API "privacy".

+ +

Propriétés

+ +
+
{{WebExtAPIRef("privacy.network")}}
+
Accès et modification des paramètres de confidentialité relatifs au réseau.
+
{{WebExtAPIRef("privacy.services")}}
+
Accès et modification des paramètres de confidentialité relatifs aux services fournis par le navigateur ou les tiers.
+
{{WebExtAPIRef("privacy.websites")}}
+
Accès et modification des paramètres de confidentialité relatifs aux comportements des sites Web.
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.privacy", 10, 1)}}

+ +

{{WebExtExamples("h2")}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.privacy.

+
+ + 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 +--- +
{{AddonSidebar}} +

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")}}.

+ +

Les valeurs par défaut de ces propriétés peuvent varier selon les navigateurs.

+ +

Propriétés

+ +
+
networkPredictionEnabled
+
Un objet {{WebExtAPIRef("types.BrowserSetting")}} dont la valeur contenue est un booléen. Si il est défini à true, 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, <link rel='prefetch' ...>), et en ouvrant de manière préemptive les connexions TCP et SSL aux serveurs.
+
peerConnectionEnabled
+
Un objet {{WebExtAPIRef("types.BrowserSetting")}} dont la valeur contenue est un booléen. Si il est défini à false, l'interfaceRTCPeerConnection est désactivée. Notez que  getUserMedia() n'est pas affectée par ce paramètre.
+
webRTCIPHandlingPolicy
+
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 :
+ "default"
+ "default_public_and_private_interfaces"
+ "default_public_interface_only"
+ "disable_non_proxied_udp"
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.privacy.network")}}

+ + + +

Exemples

+ +

Définissez la propriété webRTCIPHandlingPolicy :

+ +
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");
+    }
+  });
+
+});
+
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + +
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 +--- +
{{AddonSidebar}} +

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")}}.

+ +

Propriétés

+ +
+
passwordSavingEnabled
+
Un objet {{WebExtAPIRef("types.BrowserSetting")}} dont la valeur contenue est un booléen. Si il est défini à true, 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 : true.
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.privacy.services", 10)}}

+ +

Exemples

+ +

Désactivation, si possible, du gestionnaire de mot de passe.

+ +
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");
+    }
+  });
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.privacy.

+
+
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 +--- +
{{AddonSidebar}} +

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")}}.

+ +

Les valeurs par défaut  de ces propriétés ont tendance à varier selon les navigateurs.

+ +

Propriétés

+ +
+
cookieConfig
+
+

Un objet {{WebExtAPIRef("types.BrowserSetting")}} dont la valeur sous-jacente est un objet.

+ +

L'objet a deux propriétés :

+ +
    +
  • behavior: une chaîne qui peut prendre l'une des valeurs suivantes: + +
      +
    • "allow_all": accepte tous les cookies
    • +
    • "reject_all": rejeter tous les cookies
    • +
    • "reject_third_party": rejeter tous les cookies tiers
    • +
    • "allow_visited" : accepte un cookie tiers uniquement si le domaine de premier niveau du cookie contient déjà au moins un cookie.
    • +
    • "reject_trackers": rejeter les cookies de suivi
    • +
    +
  • +
  • nonPersistentCookies: un booléen. Si la valeur est true, tous les cookies seront traités comme des cookies de session.
  • +
+
+
firstPartyIsolate
+
+

Un objet {{WebExtAPIRef("types.BrowserSetting")}} dont la valeur sous-jacente est un booléen.

+ +

SI true, la préférence firstPartyIsolate 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).

+ +

Par défaut à false.

+
+
hyperlinkAuditingEnabled
+
Un objet {{WebExtAPIRef("types.BrowserSetting")}} dont la valeur sous-jacente est un booléen. Si true, le navigateur envoie des pings d'audit lorsqu'un site web utilise l'attribut ping pour les demander.
+
protectedContentEnabled
+
Un objet {{WebExtAPIRef("types.BrowserSetting")}} dont la valeur sous-jacente est un booléen. Disponible uniquement sur Windows. Sitrue, le navigateur fournit un ID unique aux plugins afin d'exécuter le contenu protégé.
+
referrersEnabled
+
Un objet {{WebExtAPIRef("types.BrowserSetting")}} dont la valeur  sous-jacente est un booléen. Si activé, le navigateur envoie les en-têtes de référence avec vos demandes.
+
resistFingerprinting
+
+

Un objet {{WebExtAPIRef("types.BrowserSetting")}} dont la valeur sous-jacente est un booléen.

+ +

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.

+ +

Si true, la préférence resistFingerprinting 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.

+ +

Par défaut à false.

+
+
thirdPartyCookiesAllowed
+
Un objet {{WebExtAPIRef("types.BrowserSetting")}} dont la valeur sous-jacente est un booléen. Si false, le navigateur bloque les cookies tiers.
+
trackingProtectionMode
+
+

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 :

+ +
    +
  • "always": La protection de suivi est activée.
  • +
  • "never": La protection de suivi est désactivée.
  • +
  • "private_browsing": La protection de suivi est activée uniquement dans les fenêtres de navigation privée.
  • +
+
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.privacy.websites")}}

+ + + +

Exemples

+ +

Définissez la propriété hyperlinkAuditingEnabled .

+ +
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");
+    }
+  });
+
+});
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + +
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 +--- +
{{AddonSidebar}}
+ +
+

Avertissement
+ Vous ne devez pas utiliser la fonction {{WebExtAPIRef("proxy.register()")}} ou la fonction {{WebExtAPIRef("proxy.unregister()")}} pour enregistrer et supprimer le fichier Proxy Auto-Configuration (PAC).  Cette API était dépréciée dans Firefox 68 et sera supprimée de Firefox 71.

+
+ +

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.

+ +

L'avantage de l'approche proxy.onRequest 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 stockage et au réseau de votre extension APIs comme dns).

+ +

En dehors de cette API, les extensions peuvent également utiliser la propriété  browserSettings.proxyConfig pour configurer les paramètres proxy globaux.

+ +

Google Chrome fournit une API d'extension également appelée "proxy" 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 proxy Chrome, cette API est uniquement disponible via l'espace de noms du navigateur.

+ +

Pour utiliser cette API, vous devez disposer de la permission "proxy". De plus, lorsque vous voulez intercepter des requêtes, vous avez également besoin de la permission de l'hôte pour les URL des requêtes interceptées

+ +

Types

+ +
+
{{WebExtAPIRef("proxy.ProxyInfo")}}
+
Décrit un proxy.
+
{{WebExtAPIRef("proxy.RequestDetails")}}
+
+

Contient des informations sur une requête Web que le navigateur est sur le point de faire.

+
+
+ +

Properties

+ +
+
{{WebExtAPIRef("proxy.settings")}}
+
Obtenir et définir les paramètres de proxy.
+
+ +

Functions

+ +
+
{{WebExtAPIRef("proxy.register()")}}
+
Enregistre le script proxy donné.
+
{{WebExtAPIRef("proxy.unregister()")}}
+
Annule l'inscription du script proxy.
+
+ +

Events

+ +
+
{{WebExtAPIRef("proxy.onError")}}
+
Lancé lorsque le système rencontre une erreur lors de l'exécution du script PAC ou de l'écouteur onRequest.
+
{{WebExtAPIRef("proxy.onRequest")}}
+
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.
+
+ +

{{WebExtExamples("h2")}}

+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.proxy")}}

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 +--- +
{{AddonSidebar()}}
+ +

Lancé en cas d'erreur lors de l'évaluation du fichier PAC ou l'écouteur onRequest.

+ +

L'erreur peut être déclenchée en lançant ou renvoyant une valeur invalide dans le gestionnaire d'événements proxy.onRequest.

+ +

Syntaxe

+ +
browser.proxy.onError.addListener(listener)
+browser.proxy.onError.removeListener(listener)
+browser.proxy.onError.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(listener)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si l'écouteur est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
newState
+
Object. Un objet Error représentant l'erreur.
+
+
+
+ +

{{WebExtExamples}}

+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.proxy.onError")}}

+ + 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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Cet événement est étroitement modélisé sur les événements définis dans l'API  webRequest Comme ces événements, sa fonction addListener() prend trois arguments :

+ + + +

L'événement est déclenché avant l'un des événements webRequest pour la même demande.

+ +

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).

+ +

Pour utiliser proxy.onRequest, une extension doit avoir la permission API "proxy" , ainsi que la permission d'hôte pour les URL des requêtes qu'elle intercepte - ela signifie essentiellement que les modèles de correspondance de l'argument filter doivent être un sous-ensemble de l'extension autorisations de l'hôte.

+ +

Syntaxe

+ +
browser.proxy.onRequest.addListener(
+  listener,             //  function
+  filter,               //  object
+  extraInfoSpec         //  optional array of strings
+)
+browser.proxy.onRequest.removeListener(listener)
+browser.proxy.onRequest.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(listener, filter, extraInfoSpec)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
listener
+
+

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.

+ +

L'écouteur peut renvoyer l'un des éléments suivants:

+ +
    +
  • un objet {{WebExtAPIRef("proxy.ProxyInfo")}}
  • +
  • un tableau d'objets proxy.ProxyInfo
  • +
  • Une Promise qui se résout en un objet ProxyInfo
  • +
  • Une Promise qui résout en un tableau d'objets ProxyInfo.
  • +
+ +

Si l'écouteur renvoie un tableau, ou une Promesse qui se résout en un tableau, alors tous les objetsProxyInfo après le premier représentent les basculements: si le proxy à la position N dans le tableau n'est pas accessible quand son ProxyInfo.failoverTimeout alors le navigateur essayez le proxy à la position N+1.

+ +

S'il y a une erreur spécifiant les objets proxy.ProxyInfo objects, alors {{WebExtAPIRef("proxy.onError")}} sera appelé.

+
+
filter
+
{{WebExtAPIRef('webRequest.RequestFilter')}}. Un ensemble de filtres qui limite les événements qui seront envoyés à cet écouteur.
+
extraInfoSpec {{optional_inline}}
+
array de string. Options supplémentaires pour l'événement. Vous pouvez passer une seule valeur, "requestHeaders", pour inclure les en-têtes de demande dans l'objet de details transmis à l'écouteur.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.proxy.onRequest", 10)}}

+ +

Exemples

+ +

Ce code intercepte les requêtes à <all_urls>, et les envoie par procuration si elles ne sont pas destinées à un cadre de premier niveau.

+ +
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>"]});
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Type

+ +

Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :

+ +
+
type
+
+

string. 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 :

+ +
    +
  • "direct": 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.
  • +
  • "http": HTTP proxy (ou SSL CONNECT pour HTTPS)
  • +
  • "https": HTTP proxying via TLS connection au proxy
  • +
  • "socks": proxy SOCKS v5
  • +
  • "socks4": proxy SOCKS v4
  • +
+
+
host
+
string. Le nom d'hôte du serveur proxy. Obligatoire sauf si le type est "direct".
+
port
+
string. e numéro de port du serveur proxy. Obligatoire sauf si le type est  "direct".
+
username
+
string. Nom d'utilisateur pour le service proxy. Ceci est utilisable avec "socks".  Pour les autorisations de proxy HTTP, utilisez webRequest.onAuthRequired.
+
password
+
string. Mot de passe pour le service proxy. Ceci est utilisable avec "socks". FPour les autorisations de proxy HTTP, utilisez webRequest.onAuthRequired.
+
proxyDNS
+
boolean. Si vrai, le serveur proxy est utilisé pour résoudre certaines requêtes DNS (uniquement utilisable avec "socks4" et "socks").  Par défaut à false.
+
failoverTimeout
+
number:  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 proxy.onRequest sera utilisé.
+
+ +
+
proxyAuthorizationHeader
+
string. 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).
+
+ Par exemple, si vous voulez envoyer "nom d'utilisateur" et "mot de passe" pour l'authentification "basique", vous pouvez définir la propriété proxyAuthorizationHeader à Basic dXNlcm5hbWU6cGFzc3dvcmQ=
+
connectionIsolationKey {{optional_inline}}
+
string. Une clé optionnelle utilisée pour l'isolation supplémentaire de cette connexion proxy.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.proxy.ProxyInfo")}}

+ +

{{WebExtExamples}}

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 +--- +

{{AddonSidebar()}} {{deprecated_header}}

+ +

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 :

+ +

+ +

Enregistre un fichier PAC (Proxy Auto-Configuration). Le fichier est exécuté immédiatement, et sa fonction FindProxyForURL() sera appelée pour toutes les demandes HTTP, HTTPS ou FTP.

+ +

Si les fichiers PAC sont enregistrés par plusieurs extensions, les demandes seront initialement transmises à celle qui a été enregistrée en premier.

+ + + +

Chaque extension ne peut enregistrer qu'un seul fichier PAC : si vous appelez  register() deux fois, le second fichier PACremplacera le premier.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Communiquez avec les fichiers PAC

+ +

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 runtime.sendMessage() et runtime.onMessage.

+ +

Pour envoyer un message au fichier PAC, vous devez définir l'option toProxyScript :

+ +
// 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});
+ +
// pac.js
+
+browser.runtime.onMessage.addListener((message) => {
+  if (message.enabled) {
+    browser.runtime.sendMessage("I'm enabled!");
+  }
+});
+ +

Spécification de fichier PAC

+ +

La syntaxe de base du fichier PAC est décrite dans la documentation PAC, 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.

+ +

Valeur retournée FindProxyForURL()

+ +

La norme FindProxyForURL() renvoie une chaîne. Dans Firefox 55 et 56, le fichier PAC utilisé avec l'API proxy renvoie également une chaîne. Dans Firefox 55 seulement, vous devez passer un argument à la valeur de retour "DIRECT", même s'il n'a pas besoin d'argument.

+ +

À partir de Firefox 57, FindProxyForURL() peut toujours renvoyer une chaîne, mais peut également (et de préférence) renvoyer un tableau d'objets  {{WebExtAPIRef("proxy.ProxyInfo")}}.

+ +

Si le tableau contient plus d'un objet, alors tous les objets ProxyInfo après le premier représentent les basculements : si le proxy à la position N dans le tableau n'est pas accessible quand son ProxyInfo.failoverTimeout expire, alors le navigateur essaiera le proxy à la position N + 1.

+ +

Par exemple :

+ +
const proxySpecification = [
+  {
+    type: "socks",
+    host: "foo.com",
+    port: 1080,
+    proxyDNS: true,
+    failoverTimeout: 5
+  },
+  {
+    type: "socks",
+    host: "bar.com",
+    port: 1060,
+  }
+];
+ +

Le premier proxy dans le tableau sera essayé en premier. S'il ne répond pas dans failoverTimeout secondes, le prochain sera essayé, jusqu'à ce que la fin du tableau est atteint.

+ +

Environnement du fichier PAC

+ +

Les fonctions globales d'assistance généralement disponibles pour les fichiers PAC  (isPlainHostName(), dnsDomainIs(), etc) ne sont pas disponibles.

+ +

Le code qui s'exécute dans le fichier PAC n'a pas accès à :

+ + + +
//  pac.js
+
+// send the log message to the background script
+browser.runtime.sendMessage(`Proxy-blocker: blocked ${url}`);
+ +
// 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);
+ +

Syntaxe

+ +
var registering = browser.proxy.register(
+  url   // string
+)
+
+ +

Paramètres

+ +
+
url
+
String. URL pointant vers le fichier PAC à charger. Les fichiers PAC doivent être groupés avec l'extension, et l'url doit être relative au fichier manifest.json de l'extension.
+
+ +

Valeur retournée

+ +

Une Promise qui sera remplie sans argument lorsque le fichier PAC a été enregistré ou rejetée en cas d'erreur.

+ +

Exemples

+ +
const proxyScriptURL = "proxy/proxy-script.js";
+
+browser.proxy.register(proxyScriptURL);
+ +

{{WebExtExamples}}

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.proxy.register")}}

+ +
Remerciements : + +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar()}}
+ +

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")}}.

+ +

Type

+ +

Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :

+ +
+
cookieStoreId
+
string. L'ID de magasin de cookies du contexte actuel.
+
documentUrl
+
string. URL de la page dans laquelle la ressource demandée sera chargée.
+
frameId
+
integer. 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é (type est main_frame ou sub_frame), frameId indique l'ID de cette trame, pas l'ID de la trame externe. Les ID de cadre sont uniques dans un onglet.
+
fromCache
+
boolean. Indique si cette réponse sera récupérée du cache disque.
+
incognito
+
boolean true pour les demandes de navigation privées
+
ip
+
L'adresse IP du serveur à laquelle la demande sera envoyée. Notez qu'il peut s'agir d'une adresse IPv6 littérale.
+
method
+
string. Méthode HTTP standard: par exemple, "GET" ou "POST".
+
originUrl
+
string. 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'attribut cible d'un lien, ou d'un document CSS inclut une image utilisant la  notation fonctionnelle url(), alors ce sera l'URL du document original ou du  document CSS, respectivement.
+
parentFrameId
+
integer. ID de l'image qui contient l'image qui a envoyé la demande. Défini sur -1 si aucun cadre parent n'existe.
+
requestId
+
string. 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.
+
requestHeaders{{optional_inline}}
+
{{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  "requestHeaders" a été passée dans addListener().
+
tabId
+
integer. 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.
+
timeStamp
+
number. L'heure à laquelle cet événement s'est déclenché, en millisecondes depuis l'époque.
+
type
+
{{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandé : par exemple, "image", "script", "stylesheet".
+
url
+
string. Cible de la demande.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.proxy.RequestDetails")}}

+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +
{{deprecated_header}}
+ +

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:

+ +

+ +

Annule l'inscription d'un fichier Proxy Auto-Configuration (PAC). Cela a été enregistré par un appel précédent à {{WebExtAPIRef("proxy.register()")}}.

+ +

C'est une fonction asynchrome qui renvoie une Promise.

+ +

Syntaxe

+ +
var unregistering = browser.proxy.unregister()
+
+ +

Paramètres

+ +

None.

+ +

Valeur retournée

+ +

Une Promise qui sera remplie  sans arguments lorsque le fichier PAC a été désinscrit.

+ +

Exemples

+ +
browser.proxy.unregister();
+ +

{{WebExtExamples}}

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.proxy.unregister")}}

+ +
Remerciements : + +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar()}}
+ +
+ +

Créer une connexion pour plusieurs cas d'utilisation pout votre extension.

+ +

Vous pouvez utiliser cette facilité dans les situations suivantes:

+ + + +

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()')}}.

+ +

Syntaxe

+ +
var port = browser.runtime.connect(
+  extensionId, // optional string
+  connectInfo  // optional object
+)
+
+ +

Paramètres

+ +
+
extensionId{{optional_inline}}
+
string. L'ID de l'extension à laquelle se connecter. Si la cible à défini un ID dans la clé applications du fichier manifest.json, alors extensionId doit avoir cette valeur. Autrement, il doit avoir l'ID qui a été généré pour la cible.
+
connectInfo{{optional_inline}}
+
object. Détails de la connexion:
+
+
+
name{{optional_inline}}
+
string. Sera passé dans {{WebExtAPIRef("runtime.onConnect")}} pour les processus qui écoutent un évènement de type connexion.
+
includeTlsChannelId{{optional_inline}}
+
boolean. indique si l'ID du canal TLS sera transmis à  {{WebExtAPIRef("runtime.onConnectExternal")}} pour le processus qui écoutent l'événement de connexion.
+
+
+
+ +

Valeur retournée

+ +

{{WebExtAPIRef('runtime.Port')}}. Port à travers lequel les messages peuvent être envoyés et reçus. L'événement onDisconnect du port est déclenché si l'extension n'existe pas.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.runtime.connect")}}

+ +

Exemples

+ +

Le script de contenu :

+ + + +
// content-script.js
+
+var myPort = browser.runtime.connect({name:"port-from-cs"});
+myPort.postMessage({greeting: "hello from content script"});
+
+myPort.onMessage.addListener(function(m) {
+  console.log("In content script, received message from background script: ");
+  console.log(m.greeting);
+});
+
+document.body.addEventListener("click", function() {
+  myPort.postMessage({greeting: "they clicked the page!"});
+});
+ +

Les scripts d'arrière plan correspondant :

+ + + +
// background-script.js
+
+var portFromCS;
+
+function connected(p) {
+  portFromCS = p;
+  portFromCS.postMessage({greeting: "hi there content script!"});
+  portFromCS.onMessage.addListener(function(m) {
+    console.log("In background script, received message from content script")
+    console.log(m.greeting);
+  });
+}
+
+browser.runtime.onConnect.addListener(connected);
+
+browser.browserAction.onClicked.addListener(function() {
+  portFromCS.postMessage({greeting: "they clicked the button!"});
+});
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +
Connecte l'extension à une appplication native sur l'ordinateur de l'utilisateur.
+ +
+ +
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.
+ +
+ +
L'appelant peut utiliser le Port pour échanger des messages avec l'application native utilisant Port.postMessage() et port.onMessage.
+ +
+ +
L'application native s'exécute jusqu'à ce qu'elle se termine, ou l'appelant appelle Port.disconnect(), ou la page qui a créé le Port est détruite. Une fois le Port 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é.
+ +
+ +

Pour plus d'informations, voir messagerie native.

+ +

Syntaxe

+ +
var port = browser.runtime.connectNative(
+  application // string
+)
+
+ +

Paramètres

+ +
+
application
+
string. Le nom de l'application native à laquelle se connecter. Cela doit correspondre à la propriété "name" dans le fichier manifest de l'application native.
+
+ +

Valeur retournée

+ +

Un objet {{WebExtAPIRef('runtime.Port')}}. Le port que l'appelant peut utiliser pour échanger des messages avec l'application native.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.runtime.connectNative")}}

+ +

Exemples

+ +

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 :

+ +
/*
+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");
+});
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Récupère l'objet Window pour la page d'arrière-plan qui s'exécute dans l'extension en cours.

+ +

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  pages d'options, ou les scripts s'exécutant dans les fenêtres d'action du navigateur ou d'action page, mais n'inclut pas les scripts de contenu.

+ +

Notez que les variables déclarées à l'aide de const ou let n'apparaissaient pas dans l'objet window retourné par cette fonction.

+ +

Notez également que cette méthode ne peut pas être utilisée dans une fenêtre privée dans Firefox—Elle renvoie toujours null. Pour plus d'informations voir le bug lié à bugzilla.

+ +

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.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var gettingPage = browser.runtime.getBackgroundPage()
+
+ +

Paramètres

+ +

None.

+ +

Valeur retournée

+ +

Une Promise qui sera remplie avec l'objet Window 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.runtime.getBackgroundPage")}}

+ +

Exemples

+ +

Supposons un script d'arrière-plan définisse une fonction foo():

+ +
// background.js
+
+function foo() {
+  console.log("I'm defined in background.js");
+}
+ +

Un script exécuté dans un popup peut appeler cette fonction directement comme ceci :

+ +
// popup.js
+
+function onGot(page) {
+  page.foo();
+}
+
+function onError(error) {
+  console.log(`Error: ${error}`);
+}
+
+var getting = browser.runtime.getBackgroundPage();
+getting.then(onGot, onError);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+ + +
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 +--- +
{{AddonSidebar}}
+ +

Renvoie les informations sur le navigateur dans lequel l'extension est installée.

+ +

Il s'agit d'une fonction asynchrone qui renvoie une {{JSxRef("Promise")}}.

+ +

Syntaxe

+ +
var gettingInfo = browser.runtime.getBrowserInfo()
+
+ +

Paramètres

+ +

None.

+ +

valeur retournée

+ +

Une Promise qui sera remplie avec un objet qui a les propriétés suivantes :

+ + + +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.runtime.getBrowserInfo")}}

+ +

Exemples

+ +

Obtenir et enregistrer le nom du navigateur :

+ +
function gotBrowserInfo(info) {
+  console.log(info.name);
+}
+
+var gettingInfo = browser.runtime.getBrowserInfo();
+gettingInfo.then(gotBrowserInfo);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar()}}
+ +
Obtenez le fichier manifest.json complet, sérialisé à un objet JSON.
+ +
+ +

Syntaxe

+ +
browser.runtime.getManifest()
+
+ +

Paramètres

+ +

None.

+ +

Valeur retournée

+ +

Un object JSON représentant le manifest.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.runtime.getManifest")}}

+ +

Exemples

+ +

Récupère le manifest et consignez la propriété "name" :

+ +
var manifest = browser.runtime.getManifest();
+console.log(manifest.name);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Renvoie un objet DirectoryEntry représentant le répertoire du package.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var gettingEntry = browser.runtime.getPackageDirectoryEntry()
+
+ +

Paramètres

+ +

None.

+ +

Valeur retournée

+ +

Une Promise qui sera remplie avec un objet DirectoryEntry représentant le répertoire du package.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.runtime.getPackageDirectoryEntry")}}

+ +

Exemples

+ +
function gotDirectoryEntry(directoryEntry) {
+  console.log(directoryEntry);
+}
+
+var gettingEntry = browser.runtime.getPackageDirectoryEntry();
+gettingEntry.then(gotDirectoryEntry);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Renvoies des informations sur la plate-forme actuelle. Ceci ne peut être appelé que dans le contexte du script d'arrière-plan.

+ +

Il s'agit d'une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var getting = browser.runtime.getPlatformInfo()
+
+ +

Paramètres

+ +

None.

+ +

Valeur rentournée

+ +

Une Promise qui sera remplie avec une valeur {{WebExtAPIRef('runtime.PlatformInfo')}} représentant la plate-forme actuelle.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.runtime.getPlatformInfo")}}

+ +

Exemples

+ +

Obtenez et consignez le système d'exploitation de la plateforme :

+ +
function gotPlatformInfo(info) {
+  console.log(info.os);
+}
+
+var gettingInfo = browser.runtime.getPlatformInfo();
+gettingInfo.then(gotPlatformInfo);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +
Etant donné un chemin relatif de manifest.json à une ressource empaquetée avec l'extension, renvoyez une URL complète.
+ +
+ +
Cette fonction ne vérifie pas que la ressource existe réellement à cette URL.
+ +
+ +

Syntaxe

+ +
browser.runtime.getURL(
+  path // string
+)
+
+ +

Paramètres

+ +
+
path
+
string. Un chemin relatif de manifest.json à une ressource empaquetée avec l'extension.
+
+ +

Valeur retournée

+ +

string. L'URL complète de la ressource.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.runtime.getURL")}}

+ +

Exemples

+ +

Etant donné un fichier empaqueté avec l'extension "beasts/frog.html", obtenez l'URL complète comme ceci :

+ +
var fullURL = browser.runtime.getURL("beasts/frog.html");
+console.log(fullURL);
+// Returns something like:
+// moz-extension://2c127fa4-62c7-7e4f-90e5-472b45eecfdc/beasts/frog.html
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

L'ID de l'extension

+ +

Syntaxe

+ +
var myAddonId = browser.runtime.id;
+ +

Value

+ +

Une chaîne représentant l'ID du module complémentaire. Si l'extension a spécifié un ID dans la clé manifest.json de ses applications, runtime.id contiendra la valeur. SInon runtime.id contiendra l'ID généré pour l'extension.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.runtime.id")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+
+ + 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 +--- +
{{AddonSidebar}}
+ +

Ce module fournit des informations sur votre extension et l'environnement dans lequel elle fonctionne.

+ +

Il fournit également des API de messagerie vous permettant de:

+ + + +

Types

+ +
+
{{WebExtAPIRef("runtime.Port")}}
+
Représente une extrémité d'une connexion entre deux contextes spécifiques, qui peut être utilisée pour échanger des messages.
+
{{WebExtAPIRef("runtime.MessageSender")}}
+
+

Contient des informations sur l'expéditeur d'un message ou d'une demande de connexion.

+
+
{{WebExtAPIRef("runtime.PlatformOs")}}
+
Identifie le système d'exploitation du navigateur.
+
{{WebExtAPIRef("runtime.PlatformArch")}}
+
Identifie l'architecture du processeur du navigateur.
+
{{WebExtAPIRef("runtime.PlatformInfo")}}
+
Contient des informations sur la plate-forme utilisée par le navigateur.
+
{{WebExtAPIRef("runtime.RequestUpdateCheckStatus")}}
+
Résultat d'un appel à {{WebExtAPIRef("runtime.requestUpdateCheck()")}}.
+
{{WebExtAPIRef("runtime.OnInstalledReason")}}
+
La raison pour laquelle l'événement {{WebExtAPIRef("runtime.onInstalled")}} est en cours d'envoi.
+
{{WebExtAPIRef("runtime.OnRestartRequiredReason")}}
+
La raison pour laquelle l'événement {{WebExtAPIRef("runtime.onRestartRequired")}} est en cours d'expédition.
+
+ +

Propriétés

+ +
+
{{WebExtAPIRef("runtime.lastError")}}
+
Cette valeur est définie lorsqu'une fonction asynchrone a une condition d'erreur qu'elle doit signaler à son appelant
+
{{WebExtAPIRef("runtime.id")}}
+
L'ID de l'extension
+
+ +

Fonctions

+ +
+
{{WebExtAPIRef("runtime.getBackgroundPage()")}}
+
Récupère l'objet Window pour la page d'arrière-plan qui s'exécute dans l'extension en cours.
+
{{WebExtAPIRef("runtime.openOptionsPage()")}}
+
+

Ouvre une page d'options de votre extension.

+
+
{{WebExtAPIRef("runtime.getManifest()")}}
+
Obtient le fichier manifest.json complet,  sérialisé en tant qu'objet.
+
{{WebExtAPIRef("runtime.getURL()")}}
+
Etant donné un chemin relatif de manifest.json à une ressource empaquetée avec l'extension, renvoie une URL entièrement qualifiée.
+
{{WebExtAPIRef("runtime.setUninstallURL()")}}
+
Définit une URL à visiter lorsque l'extension est désinstallée.
+
{{WebExtAPIRef("runtime.reload()")}}
+
Recharge l'extension.
+
{{WebExtAPIRef("runtime.requestUpdateCheck()")}}
+
Vérifie les mises à jour de cette extension.
+
{{WebExtAPIRef("runtime.connect()")}}
+
Établit une connexion d'un script de contenu au processus d'extension principal ou d'une extension à une extension différente.
+
{{WebExtAPIRef("runtime.connectNative()")}}
+
+
Connecte l'extension à une application native sur l'ordinateur de l'utilisateur.
+
+
{{WebExtAPIRef("runtime.sendMessage()")}}
+
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.
+
{{WebExtAPIRef("runtime.sendNativeMessage()")}}
+
Envoie un seul message d'une extension à une application native.
+
{{WebExtAPIRef("runtime.getPlatformInfo()")}}
+
Renvoie des informations sur la plate-forme actuelle.
+
{{WebExtAPIRef("runtime.getBrowserInfo()")}}
+
Renvoie des informations sur le navigateur dans lequel cette extension est installée.
+
{{WebExtAPIRef("runtime.getPackageDirectoryEntry()")}}
+
Renvoie un DirectoryEntry pour le répertoire du package.
+
+ +

Evénements

+ +
+
{{WebExtAPIRef("runtime.onStartup")}}
+
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é.
+
{{WebExtAPIRef("runtime.onInstalled")}}
+
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.
+
{{WebExtAPIRef("runtime.onSuspend")}}
+
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.
+
{{WebExtAPIRef("runtime.onSuspendCanceled")}}
+
Envoyé après {{WebExtAPIRef("runtime.onSuspend")}} pour indiquer que l'extension ne sera pas déchargée après tout.
+
{{WebExtAPIRef("runtime.onUpdateAvailable")}}
+
Lancé lorsqu'une mise à jour est disponible, mais n'est pas installé immédiatement car l'extension est en cours d'exécution.
+
{{WebExtAPIRef("runtime.onBrowserUpdateAvailable")}} {{deprecated_inline}}
+
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.
+
{{WebExtAPIRef("runtime.onConnect")}}
+
Lancé lorsqu'une connexion est établie avec un processus d'extension ou un script de contenu.
+
{{WebExtAPIRef("runtime.onConnectExternal")}}
+
Lancé lorsqu'une connexion est établie avec une autre extension.
+
{{WebExtAPIRef("runtime.onMessage")}}
+
Lancé lorsqu'un message est envoyé par un processus d'extension ou un script de contenu.
+
{{WebExtAPIRef("runtime.onMessageExternal")}}
+
Lancé lorsqu'un message est envoyé depuis un autre poste. Ne peut pas être utilisé dans un script de contenu.
+
{{WebExtAPIRef("runtime.onRestartRequired")}}
+
Lancé lorsque le périphérique doit être redémarré.
+
+ +

Compatibilité du navigateur

+ +
+ + +

{{Compat("webextensions.api.runtime")}}

+ +
{{WebExtExamples("h2")}}
+ +
+
+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +
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.
+ +
+ +
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 :
+ +
+ +
var gettingCookies = browser.cookies.getAll();
+gettingCookies.then(onGot, onError);
+ +

La propriété runtime.lastError est définie lorsqu'une fonction asynchrone a une condition  d'erreur qu'elle doit signaler à son appelant.

+ +
Si vous applez une fonction asynchrone qui veut définir lastError, vous devez vérifier l'erreur lorsque vous gérez le résultat de la fonction. Si  lastError a été défini et que vous ne cochez pas dans la fonction de rappel, une erreur sera générée.
+ +
+ +

Syntaxe

+ +
var myError = browser.runtime.lastError;  // null or Error object
+ +

Valeur

+ +

Un objet Error représentant une erreur. La propriété message est un string avec une description lisible par l'utilisateur de l'erreur. Si  lastError n'a pas été défini, la valeur est null.

+ +

Examples

+ +

Définir un cookie, utiliser pour enregistrer le nouveau cookie ou signaler une erreur :

+ +
function logCookie(c) {
+  if (browser.runtime.lastError) {
+    console.error(browser.runtime.lastError);
+  } else {
+    console.log(c);
+  }
+}
+
+browser.cookies.set(
+  {url: "https://developer.mozilla.org/"},
+  logCookie
+);
+ +

La même chose, mais en utilisant une promesse de gérer le résultat de setCookie():

+ +
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);
+ +
+

Note: runtime.lastError est un alias pour  {{WebExtAPIRef("extension.lastError")}}: Ils sont ensemble, et la vérification de l'un fonctionnera.

+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.runtime.lastError")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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()")}}.

+ +

C'est aussi une propriété de {{WebExtAPIRef("runtime.Port")}}, mais seulement dans l'instance de Port passée dans les écouteurs {{WebExtAPIRef("runtime.onConnect()")}} ou {{WebExtAPIRef("runtime.onConnectExternal()")}}.

+ +

Type

+ +

Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :

+ +
+
tab{{optional_inline}}
+
{{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).
+
frameId{{optional_inline}}
+
integer. 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'onglet est défini.
+
id{{optional_inline}}
+
string. 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 applications dans manifest.json, then id  aura cette valeur. Sinon, il aura l'ID qui a été généré pour l'expéditeur.
+
Notez que dans Firefox, avant la version 54, cette valeur était l'ID interne de l'extension (c'est-à-dire l'UUID qui apparaît dans l'URL de l'extension).
+
url{{optional_inline}}
+
string. L'URL de la page ou du cadre hébergeant le script qui a envoyé le message.
+
Si l'expéditeur est un script s'exécutant dans une page d'extension (telle qu'une  page d'arrière-plan, une page d'options, ou une action de navigateur ou une action contextuelle), l'URL sera au format "moz-extension://<extension-internal-id>/path/to/page.html". 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 "moz-extension://<extension-internal-id>/_generated_background_page.html".
+
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'url sera l'URL de la page web. Si le script s'exécute dans un iframe, url sera l'URL de l'iframe.
+
tlsChannelId{{optional_inline}}
+
string. L'ID de canal TLS de la page ou du cadre qui a ouvert la connexion, si demandé par l'extension, et si disponible.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.runtime.MessageSender")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +

{{AddonSidebar}}{{Deprecated_header}}

+ +

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.

+ +

Syntaxe

+ +
browser.runtime.onBrowserUpdateAvailable.addListener(listener)
+browser.runtime.onBrowserUpdateAvailable.removeListener(listener)
+browser.runtime.onBrowserUpdateAvailable.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrestez d'écouter un événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifie si un écouteur est enregistré pour cet événement. Retourne true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
function
+
+

Une fonction de rappel qui sera appelée lorsque cet événement se produira.

+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.runtime.onBrowserUpdateAvailable")}}

+ +

Exemples

+ +

Ecoutez cet événement :

+ +
function handleBrowserUpdateAvailable() {
+  // handle event
+}
+
+browser.runtime.onBrowserUpdateAvailable.addListener(handleBrowserUpdateAvailable);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Lancé quand une connexion est établie avec un processus d'extension ou un script de contenu.

+ +

Syntaxe

+ +
browser.runtime.onConnect.addListener(listener)
+browser.runtime.onConnect.removeListener(listener)
+browser.runtime.onConnect.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument de l'écouteur est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifie si un écouteur est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
fonction
+
+

Une fonction de rappel qui sera appelée lorsque cet événement se produira. La fonction recevra les arguments suivants:

+ +
+
port
+
Un objet {{WebExtAPIRef('runtime.Port')}} connectant le script courant à l'autre contexte auquel il se connecte.
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.runtime.onConnect")}}

+ +

Exemples

+ +

Ce script de contenu :

+ + + +
// content-script.js
+
+var myPort = browser.runtime.connect({name:"port-from-cs"});
+myPort.postMessage({greeting: "hello from content script"});
+
+myPort.onMessage.addListener(function(m) {
+  console.log("In content script, received message from background script: ");
+  console.log(m.greeting);
+});
+
+document.body.addEventListener("click", function() {
+  myPort.postMessage({greeting: "they clicked the page!"});
+});
+ +

Le script d'arrière-plan correspondant :

+ + + +
// background-script.js
+
+var portFromCS;
+
+function connected(p) {
+  portFromCS = p;
+  portFromCS.postMessage({greeting: "hi there content script!"});
+  portFromCS.onMessage.addListener(function(m) {
+    console.log("In background script, received message from content script")
+    console.log(m.greeting);
+  });
+}
+
+browser.runtime.onConnect.addListener(connected);
+
+browser.browserAction.onClicked.addListener(function() {
+  portFromCS.postMessage({greeting: "they clicked the button!"});
+});
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Lancé lorsqu'une extension reçoit une demande de connexion d'une extension différente.

+ +

Pour envoyer un message qui sera reçu par le programme d'écoute onConnectExternal, utilisez {{WebExtAPIRef("runtime.connect()")}}, en transmettant l'ID du destinataire dans le paramètre extensionId.

+ +

L'écouteur reçoit un objet {{WebExtAPIRef('runtime.Port')}} qu'il peut ensuite utiliser pour envoyer et recevoir des messages. L'objet Port contient également une propriétésender, qui est un objet {{WebExtAPIRef("runtime.MessageSender")}},  et que le destinataire peut utiliser pour vérifier l'ID de l'expéditeur.

+ +

Syntaxe

+ +
browser.runtime.onConnectExternal.addListener(listener)
+browser.runtime.onConnectExternal.removeListener(listener)
+browser.runtime.onConnectExternal.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifie si un  listener est enregistré pour cet événement. Retourne true s'il écoute,  false sinon.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
fonction
+
+

Une fonction de rappel qui sera appelée lorsque cet événement se produira. La fonction recevra les arguments suivants :

+ +
+
port
+
Un objet {{WebExtAPIRef('runtime.Port')}} connectant le script en cours à l'autre extension à laquelle il se connecte.
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.runtime.onConnectExternal")}}

+ +

Exemples

+ +

Dans cet exemple, l'extension Hansel se connecte à l'extension Gretel :

+ +
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"});
+});
+ +

Gretel écoute la connexion  et vérifie que l'expéditeur est vraiment Hansel:

+ +
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"});
+});
+
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Notez que runtime.onInstalled n'est pas la même chose  {{WebExtAPIRef("management.onInstalled")}}. L'événement  runtime.onInstalled est déclenché uniquement pour votre extension. L'événement browser.management.onInstalled est déclenché pour toutes les extensions.

+ +

Syntaxe

+ +
browser.runtime.onInstalled.addListener(listener)
+browser.runtime.onInstalled.removeListener(listener)
+browser.runtime.onInstalled.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajouterun écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écoutercet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifie si un écouteur est enregistré pour cet événement. Renvoie true s'il écoute, false sinon.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
function
+
+

La fonction de rappel appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
details
+
Un objet avec les propriétés suivantes :
+
+
+
id{{optional_inline}}
+
string. L'ID de l'extension  de module partagé importé mise à jour. Ceci n'est présent que si la valeur de raison est  shared_module_update.
+
previousVersion{{optional_inline}}
+
string. La version précédente de l'extension vient d'être mise à jour. Ceci n'est pas présent si la valeur de raison est mise à jour.
+
reason
+
Une valeur {{WebExtAPIRef('runtime.OnInstalledReason')}}, indiquant la raison pour laquelle cet événement est distribué.
+
temporary
+
boolean. Vrai si le module complémentaire a été installé temporairement. Par exemple, en utilisant la page "about:debugging" dans Firefox ou en utilisant  web-ext run. Sinon faux.
+
+
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.runtime.onInstalled", 10)}}

+ +

Exemples

+ +

Lorsque l'extensin est installé, connectez-vous à la raison de l'installon et ouvrez https://www.reddit.com/r/CatGifs/:

+ +
function handleInstalled(details) {
+  console.log(details.reason);
+  browser.tabs.create({
+    url: "http://chilloutandwatchsomecatgifs.com/"
+  });
+}
+
+browser.runtime.onInstalled.addListener(handleInstalled);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Les valeurs pour laquelle l'événement {{WebExtAPIRef("runtime.onInstalled")}} est en cours d'envoi.

+ +

Type

+ +

Les valeurs de ce type sont des chaînes. Les valeurs possibles sont :

+ +
+
"install"
+
L'extension a été installée.
+
"update"
+
L'extension a été mise à jour vers une nouvelle version.
+
"browser_update"
+
Le navigateur a été mise à jour vers une nouvelle version.
+
"shared_module_update"
+
Une autre extension, qui contient un module utilisé par cette extension, a été mise à jour.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.runtime.OnInstalledReason")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- + + +

Utilisez cet événement pour écouter les messages d’une autre partie de votre extension. Par exemple, utilisez-le :

+ +

Voici quelques exemples de cas d'utilisation :

+ + + +

Pour envoyer un message reçu par l'écouteur onMessage, utilisez {{WebExtAPIRef("runtime.sendMessage()")}} ou (pour envoyer un message à un script de contenu) {{WebExtAPIRef("tabs.sendMessage()")}}.

+ +
+

Évitez de créer plusieurs écouteurs onMessage pour le même type de message, car l'ordre dans lequel plusieurs auditeurs vont tirer n'est pas garanti.

+ +

Lorsque vous voulez garantir la livraison d'un message à un point final spécifique, utilisez l'approche basée sur la connexion pour échanger des messages.

+
+ +

Avec le message lui-même, l’écouteur reçoit en paramètres :

+ + + +

Vous pouvez envoyer une réponse synchrone au message en appelant la fonction sendResponse dans votre écouteur. Voir un exemple.

+ +

Pour envoyer un réponse asynchrone, il existe deux options :

+ + + +
+

Retourner une Promise est maintenant le moyen préféré car sendResponse sera retirée de la spécification W3C.

+ +

La bibliothèque populaire webextension-polyfill a déjà supprimé cette fonction de son implémentation.

+
+ +
+

Vous pouvez également utiliser une approche basée sur la connexion pour échanger des messages.

+
+ +

Syntaxe

+ +
browser.runtime.onMessage.addListener(listener)
+browser.runtime.onMessage.removeListener(listener)
+browser.runtime.onMessage.hasListener(listener)
+ +

Les événements ont trois fonctions :

+ +
+
addListener(listener)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Cesse d’écouter cet événement. L’argument listener est l’écouteur à supprimer.
+
hasListener(listener)
+
Vérifie si un listener est enregistré pour cet événement. Retourne true s’il écoute, false sinon.
+
+ +

Syntaxe de addListener

+ +

Paramètres

+ +
+
listener
+
+

Une fonction d’écoute qui sera appelée lorsque cet événement se produira. La fonction recevra les arguments suivants :

+ +
+
message
+
object. Le message lui-même. C’est un objet JSON-ifiable.
+
+ +
+
sender
+
Un objet {{WebExtAPIRef("runtime.MessageSender")}} représentant l’expéditeur du message.
+
+ +
+
sendResponse
+
+

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.

+ +

Si vous avez plus d'un écouteur onMessage() dans le même document, alors un seul peut envoyer une réponse.

+ +

Pour envoyer une réponse de manière synchrone, appelez sendResponse() avant le retour de la fonction d'écoute.

+ +

Pour envoyer une réponse de manière asynchrone

+ +
    +
  • soit garder une référence à l'argument sendResponse() et retourner true depuis la fonction listenener. Vous pourrez alors appeler sendResponse() après le retour de la fonction d'écoute.
  • +
  • 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é
  • +
+
+
+ +

La fonction listener peut renvoyer un booléen ou une {{jsxref("Promise")}}.

+ +
+

Important: N'appelez pas addListener() en utilisant une fonction  async :

+ +
// don't do this
+browser.runtime.onMessage.addListener(
+  async (data, sender) => {
+    if (data.type === 'handle_me') { return 'done'; }
+  }
+);
+
+ +

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.

+ +

Si vous souhaitez adopter une approche asynchrone, utilisez plutôt une Promise, comme ceci :

+ +
browser.runtime.onMessage.addListener(
+  (data, sender) => {
+    if (data.type === 'handle_me') {
+      return Promise.resolve('done');
+    }
+  }
+);
+
+
+
+
+ +

Compatibilité des navigateurs

+ + + +

{{Compat("webextensions.api.runtime.onMessage()")}}

+ +

Exemples

+ +

Exemple simple

+ +

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 :

+ +
// content-script.js
+
+window.addEventListener("click", notifyExtension);
+
+function notifyExtension(e) {
+  if (e.target.tagName != "A") {
+    return;
+  }
+  browser.runtime.sendMessage({"url": e.target.href});
+}
+ +

Le script d’arrière-plan écoute ces messages et affiche une notification à l’aide de l’API notifications.

+ +
// 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
+  });
+}
+ +

Envoyer une réponse synchrone

+ +

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 :

+ +
// 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);
+ +

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 :

+ +
// 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);
+ +

Et voici une autre version, qui utilise {{jsxref("Promise.resolve()")}} :

+ +
// 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);
+ +

Envoi d’une réponse asynchrone à l’aide de sendResponse

+ +

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 return true; dans l’écouteur : cela indique au navigateur que vous avez l’intention d’utiliser l’argument sendResponse après le retour de l’écouteur.

+ +
// 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);
+ +

Envoi d’une réponse asynchrone à l’aide d’une promesse

+ +

Ce script de contenu reçoit le premier lien <a> 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")}} : true si l’emplacement est dans les marque-pages, false sinon.

+ +
// 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);
+ +

Voici le script d’arrière plan. Il utilise {{WebExtAPIRef("bookmarks.search()")}} pour voir si le lien est dans les marque-pages, ce qui renvoie une {{jsxref("Promise", "promesse")}} :

+ +
// 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);
+ +

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 Window.setTimeout() :

+ +
// 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);
+ +

{{WebExtExamples}}

+ +
Remerciements  + +

Cette API est basée sur l’API Chromium chrome.runtime. Cette documentation est dérivée de runtime.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +
+
Utilisez cet événement pour écouter les messages d'une autre extension.
+ +
+ +

Pour envoyer un message qui sera reçu par le module d'écoute onMessageExternal, utilisez {{WebExtAPIRef("runtime.sendMessage()")}}, en transmettant l'ID du destinataire dans le paramètre extensionId.

+ +

Avec le message lui-même, l'écouteur est transmis :

+ + +
+ +

Cette API ne peut pas être utilisée dans un script de contenu.

+ +

Syntax

+ +
browser.runtime.onMessageExternal.addListener()
+browser.runtime.onMessageExternal.removeListener(listener)
+browser.runtime.onMessageExternal.hasListener(listener)
+
+ +

Les événements ont trois fonctions:

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifie si un listener est enregistré pour cet événement. Renvoie true s'il écoute, false sinon.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
function
+
+

Une fonction de rappel qui sera appelée lorsque cet événement se produira. La fonction recevra les arguments suivants :

+ +
+
message
+
object. Le message lui-même. C'est un objet JSON-ifiable.
+
+ +
+
sender
+
Un objet {{WebExtAPIRef('runtime.MessageSender')}} représentant l'expéditeur du message.
+
+ +
+
sendResponse
+
+

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.

+ +

Si vous avez plus d'un écouteur onMessageExternal dans le même document, un seul peut envoyer une réponse.

+ +

To send a response synchronously, call sendResponse before the listener function returns. To send a response asynchronously:

+ +
    +
  • Soit garder une référence à l'argumen sendResponse et retourne true à partir de la fonction d'écouteur. Vous pourrez ensuite appeler sendResponse après le retour de la fonction d'écouteur..
  • +
  • ou retourne une Promise de la fonction d'écouteur et résoudre la promesse lorsque la réponse est prête.
  • +
+
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.runtime.onMessageExternal")}}

+ +

Exemples

+ +

Dans cet exemple, l'extension "blue@mozilla.org" envoie un message  à l'extension "red@mozilla.org":

+ +
// 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"
+  );
+ +
// 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);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Syntaxe

+ +
browser.runtime.onRestartRequired.addListener(listener)
+browser.runtime.onRestartRequired.removeListener(listener)
+browser.runtime.onRestartRequired.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajouter un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifie si un listener est enregistré pour cet événement. Renvoie true s'il écoute, false sinon.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
fonction
+
+

Une fonction de rappel qui sera appelée lorsque cet événement se produira. La fonction recevra les arguments suivants :

+ +
+
raison
+
Une valeur {{WebExtAPIRef('runtime.OnRestartRequiredReason')}} — La raison pour laquelle l'événemtn est envoyé.
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.runtime.onRestartRequired")}}

+ +

Exemples

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

La raison pour laquelle l'événement  {{WebExtAPIRef("runtime.onRestartRequired", "onRestartRequired")}} est en cours d'exécution.

+ +

Type

+ +

Les valeurs de ce type sont des chaînes. Les valeurs possibles sont :

+ + + +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.runtime.OnRestartRequiredReason")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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'.

+ +

Syntaxe

+ +
browser.runtime.onStartup.addListener(listener)
+browser.runtime.onStartup.removeListener(listener)
+browser.runtime.onStartup.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à écouteur.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifie si un écouteur est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Parameters

+ +
+
callback
+
+

Une fonction qui sera appelée lorsque cet événemetn se produit.

+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.runtime.onStartup")}}

+ +

Exemples

+ +

Ouvre http://chilloutandwatchsomecatgifs.com/ quand le navigateur démarre :

+ +
function handleStartup() {
+  browser.tabs.create({
+    url: "http://chilloutandwatchsomecatgifs.com/"
+  });
+}
+
+browser.runtime.onStartup.addListener(handleStartup);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +
+

Note: 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.

+
+ +

Syntaxe

+ +
browser.runtime.onSuspend.addListener(listener)
+browser.runtime.onSuspend.removeListener(listener)
+browser.runtime.onSuspend.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifie si un écouteur est enregistré pour cet événement. Retourne true s'il est écouté, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction dui sera appelée lorsque cet événement se produit

+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.runtime.onSuspend")}}

+ +

Exemples

+ +

Ecoutez les événements suspendus :

+ +
function handleSuspend() {
+  console.log("Suspending event page");
+  // handle cleanup
+}
+
+browser.runtime.onSuspend.addListener(handleSuspend);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Envoyé après {{WebExtAPIRef("runtime.onSuspend")}} pour indiquer que l'application  ne sera pas déchargée après tout.

+ +

Syntaxe

+ +
browser.runtime.onSuspendCanceled.addListener(listener)
+browser.runtime.onSuspendCanceled.removeListener(listener)
+browser.runtime.onSuspendCanceled.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajouter un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est un écouteur à suppriimer.
+
hasListener(listener)
+
Vérifie si un écouteur est enregistré pour cet événement. Retourne true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit.

+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.runtime.onSuspendCanceled")}}

+ +

Exemples

+ +

Ecoutez les événements SuspendCanceled :

+ +
function handleSuspendCanceled() {
+  console.log("Suspend canceled");
+}
+
+browser.runtime.onSuspendCanceled.addListener(handleSuspendCanceled);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

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 :

+ + + +

Syntaxe

+ +
browser.runtime.onUpdateAvailable.addListener()
+browser.runtime.onUpdateAvailable.removeListener(listener)
+browser.runtime.onUpdateAvailable.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajouter un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argumentlistener est un écouteur à supprimer.
+
hasListener(listener)
+
Vérifie que l'écouteur est enregistré pour cet événement. Retourne true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée quand cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
details
+
object. Contient une seule propriété, une chaîne nommée version, qui représente le numéro de version de la mise à jour.
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.runtime.onUpdateAvailable")}}

+ +

Exemples

+ +

Ecoutez les événements UpdateAvailable:

+ +
function handleUpdateAvailable(details) {
+  console.log(details.version);
+}
+
+browser.runtime.onUpdateAvailable.addListener(handleUpdateAvailable);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +
Si votre extension a défini une page d'options, cette méthode l'ouvre.
+ +
+ +

C'est une fonction asynchrone  qui renvoie une Promise.

+ +

Syntaxe

+ +
var openingPage = browser.runtime.openOptionsPage()
+
+ +

Paramètres

+ +

None.

+ +

valeur retournée

+ +

Une Promise 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é.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.runtime.openOptionsPage")}}

+ +

Exemples

+ +

Ouvrez une page d'options lorsque l'utilisateur clique sur l'icône d'une action du navigateur :

+ +
function onOpened() {
+  console.log(`Options page opened`);
+}
+
+function onError(error) {
+  console.log(`Error: ${error}`);
+}
+
+var opening = browser.runtime.openOptionsPage();
+opening.then(onOpened, onError);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

L'architecture du processeur de la machine.

+ +

Type

+ +

Les valeurs de ce type sont des chaînes. Les valeurs possible sont  :

+ +
+
"arm"
+
La plateforme est basée sur l'architecture des bras.
+
"x86-32"
+
La plateforme est basé sur l'architecture x86 32-bits.
+
"x86-64"
+
La plateforme est basé sur l'architecture x86 64-bits.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.runtime.PlatformArch")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Un objet contenant des informations sur la plate-forme actuelle.

+ +

Type

+ +

Les valeurs de ce type sont des objets qui contiennent les propriétés suivantes:

+ +
+
os
+
{{WebExtAPIRef('runtime.PlatformOs')}}. Le système d'exploitation de la plateforme.
+
arch
+
{{WebExtAPIRef('runtime.PlatformArch')}}. L'architecture du processeur de la plateforme.
+
nacl_arch
+
{{WebExtAPIRef('runtime.PlatformNaclArch')}}. L'architecture du client natif Cela peut être différent de arch sur certaines plates-formes.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.runtime.PlatformInfo")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +

{{AddonSidebar()}}

+ +

L'architecture du client natif. Cela peut-etre différent de arch sur certaines plate-formes.

+ +

Type

+ +

Les valeurs de type sont des chaînes. Les valeurs possible sont : "arm", "x86-32", "x86-64".

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.runtime.PlatformNaclArch")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Le système d'exploitation sur lequel le navigateur fonctionne.

+ +

Type

+ +

Les valeurs de ce type sont des chaînes. Les valeurs possibles sont:

+ +
+
"mac"
+
Le système d'exploitation est sous Mac OS X.
+
"win"
+
Le système d'exploitation est sous Windows.
+
"android"
+
Le système d'exploitation est sous Android.
+
"cros"
+
Le système d'exploitation est sous Chrome OS.
+
"linux"
+
Le système d'exploitation est sous Linux.
+
"openbsd"
+
Le système d'exploitation est sous Open/FreeBSD.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.runtime.PlatformOs")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Un objet Port represente une extrémité d'une connexion entre deux contextes spécifiques, qui peut-être utilisée pour échanger des messages.

+ +

Un côté initie la connexion à l'aide d'une API connect(). Cela retourne un objet Port. L'autre camp écoute les tentatives de connexion à l'aide d'un écouteur onConnect. Ceci est passé un objet Port correspondant.

+ +

Une fois que les deux côtés ont des objets Port, ils peuvent échanger des messages JSON en utilisant Port.postMessage() et Port.onMessage. Quand ils sont terminés, chaque extrémité peut se déconnecter en utilisant Port.disconnect(), ce qui générera un événement Port.onDisconnect à l'autre extrémité, permettant à l'autre extrémité de faire le nettoyage requis.

+ +

Vous pouvez utiliser ce modèle pour communiquer entre:

+ + + +

Vous devez utiliser différentes API de connexion pour différents types de connexions, comme indiqué dans le tableau ci-dessous.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
type de connectionLancer une tentative de connexionGérer la tentative de connexion
Script d'arrière-plan au script de contenu{{WebExtAPIRef("tabs.connect()")}}{{WebExtAPIRef("runtime.onConnect")}}
Script de contenu au script d'arrière-plan{{WebExtAPIRef("runtime.connect()")}}{{WebExtAPIRef("runtime.onConnect")}}
Extension à l'application native{{WebExtAPIRef("runtime.connectNative()")}}N'est pas applicable (voir Native messaging).
Extension à l'extension{{WebExtAPIRef("runtime.connect()")}}{{WebExtAPIRef("runtime.onConnectExternal")}}
+ +

Type

+ +

Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :

+ +
+
name
+
string. 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.
+
disconnect
+
function. Déconnecte un port. Chaque extrémité peut appeler cela quand ils ont fini avec le port. Cela provoquera le déclenchement de onDisconnect à 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.
+
error
+
object. Si le port a été déconnecté en raison d'une erreur, il sera défini sur un objet avec un message, de propriété de chaîne, vous donnant plus d'informations sur l'erreur. Voir onDisconnect.
+
onDisconnect
+
+

object. Cela contient les fonctions addListener() et removeListener() 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é Port.disconnect(). Cet événement ne sera déclenché qu'une fois pour chaque port. La fonction d'écouteur recevra l'objet Port. Si le port a été déconnecté en raison d'une erreur, l'argument Port contiendra une propriété  error donnant plus d'informations sur l'erreur :

+ +
port.onDisconnect.addListener((p) => {
+  if (p.error) {
+    console.log(`Disconnected due to an error: ${p.error.message}`);
+  }
+});
+ +

Notez que dans Google Chrome port.error n'est pas supporté: utilisez plutôt  {{WebExtAPIRef("runtime.lastError")}} pour obtenir le message d'erreur.

+
+
onMessage
+
object. Cela contient les fonctions addListener() et removeListener() 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é.
+
postMessage
+
function. 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 onMessage du port, ou à l'application native si ce port est connecté à une application native.
+
sender{{optional_inline}}
+
{{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 onConnect/onConnectExternal.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.runtime.Port")}}

+ +

Exemples

+ +

Connecting from content scripts

+ +

This content script:

+ + + +
// content-script.js
+
+var myPort = browser.runtime.connect({name:"port-from-cs"});
+myPort.postMessage({greeting: "hello from content script"});
+
+myPort.onMessage.addListener(function(m) {
+  console.log("In content script, received message from background script: ");
+  console.log(m.greeting);
+});
+
+document.body.addEventListener("click", function() {
+  myPort.postMessage({greeting: "they clicked the page!"});
+});
+ +

The corresponding background script:

+ + + +
// background-script.js
+
+var portFromCS;
+
+function connected(p) {
+  portFromCS = p;
+  portFromCS.postMessage({greeting: "hi there content script!"});
+  portFromCS.onMessage.addListener(function(m) {
+    console.log("In background script, received message from content script")
+    console.log(m.greeting);
+  });
+}
+
+browser.runtime.onConnect.addListener(connected);
+
+browser.browserAction.onClicked.addListener(function() {
+  portFromCS.postMessage({greeting: "they clicked the button!"});
+});
+ +

Script à contenu multiple

+ +

Si plusieurs scripts de contenu communiquent en même temps, vous voudrez peut-être stocker chaque connexion dans un tableau.

+ + + +
// 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!"})
+    })
+});
+ +

Connecting to native applications

+ +

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:

+ +
/*
+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");
+});
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Recharge une extension.

+ +

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.

+ +

Syntaxe

+ +
browser.runtime.reload()
+
+ +

Paramètres

+ +

Aucun.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.runtime.reload")}}

+ +

Exemples

+ +

Rechargez l'extension lorsque l'utilisateur clique sur l'icône d'une action du navigateur :

+ +
browser.browserAction.onClicked.addListener((tab) => {
+  browser.runtime.reload();
+});
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Vérifie de voir si un mise à jour de l'extension est disponible.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var requestingCheck = browser.runtime.requestUpdateCheck()
+
+ +

Paramètres

+ +

None.

+ +

Valeur retournée

+ +

Une Promise qui sera remplie avec deux arguments :

+ +
+
status
+
Une valeur {{WebExtAPIRef('runtime.RequestUpdateCheckStatus')}}  — Le résultat de la vérification de mise à jour.
+
details{{optional_inline}}
+
object. Si le status est update_available, cela contient plus d'informations sur la mise à jour. C'est un objet contenant une simple propriété :
+
+
+
version
+
string. La version de la mise à jour.
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.runtime.requestUpdateCheck")}}

+ +

Exemples

+ +

Demander une mise à jour, etenregistrer la nouvelle version si elle est disponible :

+ +
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);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Résultat d'un appel à {{WebExtAPIRef("runtime.requestUpdateCheck()")}}.

+ +

Type

+ +

Les valeurs de ce type sont des chaînes. Les valeurs possibles sont :

+ +
+
"throttled"
+
La mise à jour est limitée.
+
"no_update"
+
Aucune mise à jour n'est disponible.
+
"update_available"
+
Une mise à jour de l'extension est disponible.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.runtime.RequestUpdateCheckStatus")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Envoie un simple message aux écouteurs d'événement dans votre extension ou une extension différente.

+ +

Si vous envoyez à votre extension, omettez l'argument extensionId. L'événement {{WebExtAPIRef('runtime.onMessage')}} sera déclenché dans chaque page de votre extension, à l'exception du cadre appelé runtime.sendMessage.

+ +

Si vous envoyez une extension différente, ajouter l'argument extensionId à l'ID de l'autre extension. {{WebExtAPIRef('runtime.onMessageExternal')}} sera déclenché dans l'autre extension.

+ +

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')}}.

+ + + +

C'est une fonction asynchrone qui renvoie une Promise.

+ +
+

Vous pouvez également utiliser une approche basée sur la connexion pour échanger des messages.

+
+ +

Syntaxe

+ +
var sending = browser.runtime.sendMessage(
+  extensionId,             // optional string
+  message,                 // any
+  options                  // optional object
+)
+
+ +

Paramètres

+ +
+
extensionId{{optional_inline}}
+
string. 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' applications dans  manifest.json, extensionId doit avoir une valeur. Sinon, il devrait avoir l'ID qui a été généré pour le destinataire prévu.
+
Si extensionId est omis, le message sera envoyé à votre propre extension.
+
message
+
any. Un objet qui peut être structuré clone sérialisé.
+
options{{optional_inline}}
+
object. +
+
includeTlsChannelId{{optional_inline}}
+
boolean. Indique si l'ID de canal TLS sera transmis à {{WebExtAPIRef('runtime.onMessageExternal')}} pour les processus qui écoutent l'événement de connexion.
+
toProxyScript{{optional_inline}}
+
boolean. Doit être True si le message est destiné à un fichier PAC chargé à l'aide de l'API {{WebExtAPIRef("proxy")}}.
+
+
+
+ +

En fonction des arguments qui lui sont donnés, cette API est parfois ambiguë. Les règles suivantes sont utilisées :

+ + + +

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 extensionId, avec le message comme deuxième argument. Cel signifiait que si vous appelez sendMessage() avec des arguments comme ("my-message", {}), 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.

+ +

Valeur retournée

+ +

Une Promise. 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.

+ +

Compatibilité du navitageur

+ + + +

{{Compat("webextensions.api.runtime.sendMessage")}}

+ +

Exemples

+ +

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 {greeting: "Greeting from the content script"}, et l'expéditeur s'attend également à recevoir une réponse, qui est gérée dans la fonction handleResponse :

+ +
// 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);
+ +

Le script d'arrière-plan correspondant ressemble à ceci :

+ +
// 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);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Envoie un seul message d'une extension à une application native.

+ +

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.

+ +

C'est une fonction asynchrone qui renvoie une Promise. The first message sent by the native application is treated as a response to the sendNativeMessage() 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.

+ +

Une nouvelle instance de l'application est lancée pour appel à  runtime.sendNativeMessage(). 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é.

+ +

Pour plus d'informations, voir Native messaging.

+ +

Syntaxe

+ +
var sending = browser.runtime.sendNativeMessage(
+  application,             // string
+  message                  // object
+)
+
+ +

Paramètres

+ +
+
application
+
string. Le nom de l'application native. Cela doit correspondre à la propriété "name" dans le fichier manifest de l'application native.
+
message
+
object. Un objet JSON qui sera envoyé à l'application native.
+
+ +

Valeur retournée

+ +

Une Promise. 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.runtime.sendNativeMessage")}}

+ +

Exemples

+ +

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 :

+ +
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);
+});
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var settingUrl = browser.runtime.setUninstallURL(
+  url             // string
+)
+
+ +

Paramètres

+ +
+
url
+
string. L'URL à ouvrir après la désinstallation de l'extension. Cette URL doit avoir un schéma http ou https.  Définissez-le sur une chaîne vide pour ne pas ouvrir un nouvel onglet lors de la désinstallation.
+
+ +

Valeur retournée

+ +

Une Promise 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é.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.runtime.setUninstallURL")}}

+ +

Exemples

+ +
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);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Obtient un tableau de tous les moteurs de recherche installés.

+ +

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.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var gettingEngines = browser.search.get()
+
+ +

Paramètres

+ +

Aucun.

+ +

Valeur retournée

+ +

Une Promise qui sera remplie avec un tableau d'objets  de moteur de recherche. Chaque objet de moteur de recherche peut contenir les propriétés suivantes :

+ +
+
name
+
string. Le nom du moteur de recherche.
+
isDefault
+
+

boolean. true 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é.

+
+
alias{{optional_inline}}
+
+

string. 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é".

+
+
favIconUrl{{optional_inline}}
+
+

string. L'icône du moteur de recherche, comme une donnée : URL.

+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.search.search", 10)}}

+ +

Exemples

+ +

Obtenir tous les moteurs de recherche installés :

+ +
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);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar}}
+ +

Récupère les moteurs de recherche et lance une recherche avec un moteur de recherche spécifique

+ +

Pour utiliser cette API, vous devez avoir la permission "search".

+ +

Fonctions

+ +
+
{{WebExtAPIRef("search.get()")}}
+
Récupérer tous les moteurs de recherche
+
{{WebExtAPIRef("search.search()")}}
+
Recherche à l'aide du moteur de recherche spécifié.
+
+

Compatibilité du navigateur

+
+
+ +

{{Compat("webextensions.api.search", 1, 1)}} {{WebExtExamples("h2")}}

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 +--- +
{{AddonSidebar()}}
+ +

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é.

+ +

Les résultats seront affichés dans un nouvel onglet, ou si l'argument tabId est donné, dans l'onglet identifié par ceci.

+ +

Pour utiliser cette fonction dans votre extension, vous devez demander la permission manifest "search".

+ +

Pour obtenir les moteurs de recherche installés, utilisez  {{WebExtAPIRef("search.get()")}}.

+ +

Syntaxe

+ +
browser.search.search(
+  searchProperties       // object
+)
+
+ +

Paramètres

+ +
+
searchProperties
+
+

object. Un objet avec les propriétés suivantes :

+ +
+
query
+
string. La requête de recherche.
+
engine{{optional_inline}}
+
+

string. 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é.

+
+
tabId{{optional_inline}}
+
+

integer.  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.

+
+
+
+
+ +

Valeur retournée

+ +

Aucune

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.search.search", 10)}}

+ +

Exemples

+ +

Recherche à l'aide du moteur de recherche par défaut. Les résultats seront affichés dans un nouvel onglet :

+ +
function search() {
+  browser.search.search({
+    query: "styracosaurus"
+  });
+}
+
+browser.browserAction.onClicked.addListener(search);
+
+ +

Recherche à l'aide de Wikipedia. Les résultats seront affichés dans un nouvel onglet :

+ +
function search() {
+  browser.search.search({
+    query: "styracosaurus",
+    engine: "Wikipedia (en)"
+  });
+}
+
+browser.browserAction.onClicked.addListener(search);
+
+ +

Recherche à l'aide de Wikipedia. Les résultats seront affichés dans un nouvel onglet

+ +
function search(tab) {
+  browser.search.search({
+    query: "styracosaurus",
+    engine: "Wikipedia (en)",
+    tabId: tab.id
+  });
+}
+
+browser.browserAction.onClicked.addListener(search);
+
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

L'objet Filter permet de restreindre le nombre d'objets {{WebExtAPIRef("sessions.Session", "Session")}} retournés par un appel à {{WebExtAPIRef("sessions.getRecentlyClosed()")}}.

+ +

Type

+ +

Les valeurs de ce type sont des objets. Ils contiennent les proriétés suivantes :

+ +
+
maxResults{{optional_inline}}
+
number. Le nombre maximal de résultats à retourner.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.sessions.Filter")}}

+ +

Exemples

+ +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API Chromium chrome.sessions.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +
Supprime un onglet fermé de la liste des onglets récemment fermés du navigateur.
+ +
+ +
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.
+ +
+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var forgettingTab = browser.sessions.forgetClosedTab(
+  windowId,            // integer
+  sessionId            // string
+)
+
+ +

Paramètres

+ +
+
windowId
+
Integer. L'ID de la fenêtre qui héberge l'onglet que vous voulez oublier.
+
sessionId
+
String. L'identifiant de la session que vous voulez oublier.
+
+ +

Valeur retournée

+ +

Une Promise. Cela sera accompli sans arguments lorsque la session a été supprimée.

+ +

Si une erreur se produit, la promesse sera rejetée avec un message d'erreur.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.sessions.forgetClosedTab")}}

+ +

Exemples

+ +

Ce code oublie la dernière session fermée, qu'il s'agisse d'un onglet ou d'une fenêtre :

+ +
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);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +
Supprime une fenêtre fermée de la liste des fenêtres récemment fermées du navigateur.
+ +
+ +
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.
+ +
+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var forgettingWindow = browser.sessions.forgetClosedWindow(
+  sessionId            // string
+)
+
+ +

Paramètres

+ +
+
sessionId
+
String. L'identifiant de la session que vous voulez oublier.
+
+ +

Valeur retournée

+ +

Une Promise. Cela sera accompli sans arguments lorsque la session a été supprimée.

+ +

Si une erreur se produit, la promesse sera rejetée avec un message d'erreur.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.sessions.forgetClosedWindow")}}

+ +

Exemples

+ +

Ce code oublie la dernière session fermée, qu'il s'agisse d'un onglet ou d'une fenêtre :

+ +
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);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

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).

+ +

Il s'agit d'une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var gettingSessions = browser.sessions.getRecentlyClosed(
+  filter             // optional object
+)
+
+ +

Paramètres

+ +
+
filter{{optional_inline}}
+
object. Un objet {{WebExtAPIRef("sessions.Filter")}} qui limite l'ensemble des sessions renvoyées.
+
+ +

Valeur retournée

+ +

Une Promise. 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.

+ +

Si une erreur survient, la promesse sera rejetée avec un message d'erreur.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.sessions.getRecentlyClosed")}}

+ +

Exemples

+ +

Le code restaure la session la plus récemment fermée, qu'il s'agisse d'un onglet ou d'une fenêtre :

+ +
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);
+});
+
+ +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API Chromium chrome.sessions.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Récupère une valeur précédemment stockée par un appel à  {{WebExtAPIRef("sessions.setTabValue")}}.

+ +

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 getTabValue() sera différent de l'ID que vous avez passé dans setTabValue(), même s'ils font tous deux référence au même onglet.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var retrieving = browser.sessions.getTabValue(
+  tabId,    // integer
+  key       // string
+)
+
+ +

Paramètres

+ +
+
tabId
+
integer. ID de l'onglet dont vous essayez de récupérer les données.
+
key
+
string. Clé identifiant la valeur particulière à récupérer. Cela doit correspondre à la clé précédemment donnée dans {{WebExtAPIRef("sessions.setTabValue")}}.
+
+ +

Valeur retournée

+ +

Une Promise qui sera résolue avec la valeur si elle existe, ou undefined.  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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.sessions.getTabValue", 10)}}

+ +

Exemples

+ +

Consignez la valeur de "my-key" pour tous les nouveaux onglets créés (cela inclura tous les onglets qui ont été restaurés) :

+ +
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);
+});
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Récupère une valeur précédemment stockée par un appel à {{WebExtAPIRef("sessions.setWindowValue")}}.

+ +

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 getWindowValue() sera différent de l'ID que vous avez passé dans setWindowValue(), même s'ils se réfèrent tous les deux à la même fenêtre.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var retrieving = browser.sessions.getWindowValue(
+  windowId,    // integer
+  key          // string
+)
+
+ +

Paramètres

+ +
+
windowId
+
integer. ID de la fenêtre dont vous essayez de récupérer les données.
+
key
+
string. Clé identifiant la valeur particulière à récupérer. Cela doit correspondre à la clé précédemment donnée dans {{WebExtAPIRef("sessions.setWindowValue")}}.
+
+ +

Valeure retournée

+ +

Une Promise qui sera résolue avec la valeur si elle existe, ou undefined 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.sessions.getWindowValue", 10)}}

+ +

Exemples

+ +

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) :

+ +
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);
+});
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar}}
+ +

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.

+ +

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")}}.

+ +

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.

+ +

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.

+ +

Pour utiliser l'API des sessions, vous devez avoir la permission API de "sessions".

+ +

Types

+ +
+
{{WebExtAPIRef("sessions.Filter")}}
+
Permet de restreindre le nombre de {{WebExtAPIRef("sessions.Session", "Session")}} objets retournés par un appel à {{WebExtAPIRef("sessions.getRecentlyClosed()")}}.
+
{{WebExtAPIRef("sessions.Session")}}
+
+

Représente un onglet ou une fenêtre que l'utilisateur a fermé dans la session de navigation actuelle.

+
+
+ +

Propriétés

+ +
+
{{WebExtAPIRef("sessions.MAX_SESSION_RESULTS")}}
+
Le nombre maximum de sessions qui seront retournées par un appel à sessions.getRecentlyClosed().
+
+ +

Fonctions

+ +
+
{{WebExtAPIRef("sessions.forgetClosedTab()")}}
+
Supprime un onglet fermé de la liste des onglets récemment fermés du navigateur.
+
{{WebExtAPIRef("sessions.forgetClosedWindow()")}}
+
Supprime une fenêtre  fermée  de la liste des fenêtres  récemment fermées du navigateur.
+
{{WebExtAPIRef("sessions.getRecentlyClosed()")}}
+
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).
+
{{WebExtAPIRef("sessions.restore()")}}
+
+

Restaure un onglet ou une fenêtre fermée.

+
+
{{WebExtAPIRef("sessions.setTabValue()")}}
+
+

Stocke une paire clé/valeur associée à un onglet donné.

+
+
{{WebExtAPIRef("sessions.getTabValue()")}}
+
+

Récupérer une valeur précédemment enregistrée pour un onglet donné, compte tenu de sa clé.

+
+
{{WebExtAPIRef("sessions.removeTabValue()")}}
+
+

Supprimer une paire clé/valeur d'un onglet donné.

+
+
{{WebExtAPIRef("sessions.setWindowValue()")}}
+
+

Stocke une paire clé/valeur associée à une fenêtre donnée.

+
+
{{WebExtAPIRef("sessions.getWindowValue()")}}
+
+

Récupérer une valeur précédemment enregistrée pour une fenêtre donnée, compte tenu de sa clé.

+
+
{{WebExtAPIRef("sessions.removeWindowValue()")}}
+
+

Supprime une paire clé/valeur d'une fenêtre données.

+
+
+ +
+
+ +

Evénements

+ +
+
{{WebExtAPIRef("sessions.onChanged")}}
+
+

Mise en place lorsqu'un onglet ou une fenêtre est fermée.

+
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.sessions")}}

+ +

{{WebExtExamples("h2")}}

+ +
Remerciements + +

Cette API est basée sur l'API Chromium chrome.sessions.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.sessions.MAX_SESSION_RESULTS")}}

+ +
Remerciements + +

Cette API est basée sur l'API Chromium chrome.sessions.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Mise en place lorsque une liste d'onglets fermes ou de fenêtre changes.

+ +

Syntaxe

+ +
browser.sessions.onChanged.addListener(listener)
+browser.sessions.onChanged.removeListener(listener)
+browser.sessions.onChanged.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un auditeur à un événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument de l'auditeur est un auditeur à supprimer.
+
hasListener(listener)
+
Vérifiez si l'auditeur est enregistré pour cet événement. Renvoie Vrai s'il écoute. Sinon Faux.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lors de l'événement. Il ne passe aucun paramètre.

+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.sessions.onChanged")}}

+ +

Exemples

+ +

Cette extension écoute onChanged, puis restaure  immédiatement la dernière session fermée, ce qui rend impossible de fermer les fenêtres ou les onglets :

+ +
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);
+ +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API Chromium chrome.sessions.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Supprime une valeur précédemment stockée par un appel à {{WebExtAPIRef("sessions.setTabValue")}}.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var removing = browser.sessions.removeTabValue(
+  tabId,    // integer
+  key       // string
+)
+
+ +

Paramètres

+ +
+
tabId
+
integer. ID de l'onglet dont vous essayez de supprimer les données.
+
key
+
string. Clé identifiant la valeur particulière à supprimer. Cela doit correspondre à la clé précédemment donnée dans {{WebExtAPIRef("sessions.setTabValue")}}.
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.sessions.removeTabValue", 10)}}

+ +

Exemples

+ +

Ce code ajoute deux éléments de menu contextuel: l'un stocke une valeur associée à l'onglet en cours, l'autre le supprime :

+ +
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();
+  }
+});
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Supprime une valeur précédemment stockée par un appel à {{WebExtAPIRef("sessions.setWindowValue")}}.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var removing = browser.sessions.removeWindowValue(
+  windowId,    // integer
+  key          // string
+)
+
+ +

Paramètres

+ +
+
windowId
+
integer. ID de la fenêtre dont vous essayez de supprimer les données.
+
key
+
string. lé identifiant la valeur particulière à supprimer. Cela doit correspondre à la clé précédemment donnée dans {{WebExtAPIRef("sessions.setWindowValue")}}.
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.sessions.removeWindowValue", 10)}}

+ +

Exemples

+ +

Ce code ajoute deux éléments de menu contextuel: l'un stocke une valeur associée à la fenêtre courante, l'autre la supprime :

+ +
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();
+  }
+});
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Il s'agit d'une fonction asynchrone que retourne une Promise.

+ +

Syntaxe

+ +
var restoringSession = browser.sessions.restore(
+  sessionId             // string
+)
+
+ +

Paramètres

+ +
+
sessionId
+
string. Une chaîne contenant l'ID de session pour la fenêtre ou l'onglet à restaurer. Cela se trouve dans la propriété sessionId de l'objet   {{WebExtAPIRef("tabs.Tab", "Tab")}} ou {{WebExtAPIRef("windows.Window", "Window")}} dans  {{WebExtAPIRef("sessions.Session", "Session")}} retourné de {{WebExtAPIRef("sessions.getRecentlyClosed()")}}.
+
+ +

Valeur renvoyée

+ +

Une Promise. Cela sera rempli avec un objet  {{WebExtAPIRef("sessions.Session", "Session")}} représentant la session qui a été restaurée.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.sessions.restore")}}

+ +

Exemples

+ +

Cela restaure la session fermée la plus récente, qu'il s'agisse d'une fenêtre ou d'un onglet :

+ +
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);
+});
+
+ +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API Chromium chrome.sessions.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

L'objet de Session représente un onglet ou une fenêtre que l'utilisateur a fermé dans la session de navigation actuelle.

+ +

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.

+ +

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.

+ +

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 :

+ + + +

Type

+ +

Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :

+ +
+
lastModified
+
number. L'heure où l'onglet ou la fenêtre a été fermé, en millisecondes depuis l'époque.
+
tab{{optional_inline}}
+
object. Si l'objet représente un onglet fermé, cette propriété est présente et sera un objet {{WebExtAPIRef("tabs.Tab")}}. Cela contiendra url, titre, et favIconUrl uniquement si l'extension possède la permission "tabs".
+
window{{optional_inline}}
+
object. Si l'objet représente une fenêtre fermée, cette propriété est présente et sera un objet {{WebExtAPIRef("windows.Window")}}.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.sessions.Session")}}

+ +
Remerciements + +

Cette API est basée sur l'API Chromium chrome.sessions.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Stocke une paire clé / valeur à associer à un onglet donné. Vous pouvez ensuite récupérer cette valeur en utilisant {{WebExtAPIRef("sessions.getTabValue")}}.

+ +

Notez que ces données ne seront visibles que par l'extension qui l'a définie, et non par les autres extensions.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var storing = browser.sessions.setTabValue(
+  tabId,    // integer
+  key,      // string
+  value     // string or object
+)
+
+ +

Paramètres

+ +
+
tabId
+
integer. ID de l'onglet avec lequel vous souhaitez associer les données.
+
key
+
string. Clé que vous pouvez utiliser ultérieurement pour récupérer cette valeur de données particulière.
+
value
+
string ou object. S'il s'agit d'un objet, il est stringified, donc les méthodes d'objet, par exemple, seront omises. Si une fonction est donnée ici, elle sera stockée sous la forme null.
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.sessions.setTabValue", 10)}}

+ +

Exemples

+ +

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 permission "menus" pour exécuter cet exemple :

+ +
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);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Stocke une paire clé / valeur à associer à une fenêtre donnée. Vous pouvez ensuite récupérer cette valeur en utilisant {{WebExtAPIRef("sessions.getWindowValue")}}.

+ +

Notez que ces données ne seront visibles que par l'extension qui l'a définie, et non par les autres extensions..

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var storing = browser.sessions.setWindowValue(
+  windowId,    // integer
+  key,         // string
+  value        // string or object
+)
+
+ +

Paramètres

+ +
+
windowId
+
integer. ID de la fenêtre avec laquelle vous souhaitez associer les données.
+
key
+
string. Clé que vous pouvez utiliser ultérieurement pour récupérer cette valeur de données particulière.
+
value
+
string ou object. S'il s'agit d'un objet, il est stringified, donc les méthodes d'objet, par exemple, seront omises. Si une fonction est donnée ici, elle sera stockée sous la valeur null.
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.sessions.setWindowValue", 10)}}

+ +

Exemples

+ +

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  permission "menus" pour exécuter cet exemple :

+ +
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);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Ferme la barre latérale dans la fenêtre active, s'il s'agit de la barre latérale de l'extension.

+ +

Vous pouvez uniquement appeler cette fonction à l'intérieur du gestionnaire pour une action utilisateur.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
browser.sidebarAction.close()
+
+ +

Paramètres

+ +

None.

+ +

Valeur retournée

+ +

Une Promise qui est résolue sans arguments.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.sidebarAction.close", 10)}}

+ +

Exemples

+ +

Fermez la barre latérale lorsque l'utilisateur sélectionne un élément de menu contextuel :

+ +
browser.menus.create({
+  id: "close-sidebar",
+  title: "close sidebar",
+  contexts: ["all"]
+});
+
+browser.menus.onClicked.addListener(() => {
+  browser.sidebarAction.close();
+});
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Obtient une URL vers le document HTML qui définit le contenu de la barre latérale.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var gettingPanel = browser.sidebarAction.getPanel(
+  details               // object
+)
+
+ +

Paramètres

+ +
+
details
+
object. Un objet avec les propriétés suivantes :
+
+
+
tabId{{optional_inline}}
+
integer.  Obtenir le panneau pour la barre latérale spécifique à l'onglet donné.
+
windowId {{optional_inline}}
+
integer. Obtenir le panneau pour la barre latérale spécifique à la fenêtre donnée.
+
+
+
+ + + +

Valeur retournée

+ +

Une Promise qui sera remplie avec une chaîne contenant l'URL du document du panel. Ce sera une URL entièrement qualifiée, telle que :

+ +
moz-extension://d1d8a2eb-fe60-f646-af30-a866c5b39942/sidebar.html
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.sidebarAction.getPanel",2)}}

+ +

Exemples

+ +

Obtenez l'URL du panneau :

+ +
function onGot(sidebarUrl) {
+  console.log(sidebarUrl);
+}
+
+var gettingPanel = browser.sidebarAction.getPanel({});
+gettingPanel.then(onGot); 
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Opera chrome.sidebarAction.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Obtient le titre de la barre latérale.

+ +

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.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var gettingTitle = browser.sidebarAction.getTitle(
+  details               // object
+)
+
+ +

Paramètres

+ +
+
details
+
object. Un objet avec les propriétés suivantes :
+
+
+
tabId{{optional_inline}}
+
integer. Obtenir le titre de la barre latérale spécifique à l'onglet donné.
+
windowId {{optional_inline}}
+
integer. Obtenir le titre de la barre latérale spécifique à la fenêtre donnée.
+
+
+
+ + + +

Valeur retournée

+ +

Une Promise qui sera remplie avec une chaîne contenant le titre de la barre latérale.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.sidebarAction.getTitle",2)}}

+ +

Exemples

+ +

Ce code bascule le titre entre "this" et "that" chaque fois que l'utilisateur clique sur l'action du navigateur

+ +
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);
+});
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Opera chrome.sidebarAction.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Données de pixel pour une image. Doit être un objet ImageData (par exemple, à partir d'un élément {{htmlelement("canvas")}}).

+ +

Type

+ +

Un objet ImageData.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.sidebarAction.ImageDataType")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Opera chrome.sidebarAction.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar}}
+ +

Obtient et définit les propriétés de la barre latérale d'une extension.

+ +

Une barre latérale 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é sidebar_action manifest.json, une extension peut définir sa propre barre latérale.
+ En utilisant l'API sidebarAction décrite ici, une extension peut obtenir et définir les propriétés de la barre latérale.

+ +

L'API sidebarAction est étroitement modélisée sur l'API  {{WebExtAPIRef("browserAction")}}.

+ +

L'API sidebarAction est basée sur l'API sidebarAction d'Opéra. Toutefois, notez que les éléments suivants ne sont pas encore pris en charge : setBadgeText(), getBadgeText(), setBadgeBackgroundColor(), getBadgeBackgroundColor(), onFocus, onBlur.

+ +

Types

+ +
+
{{WebExtAPIRef("sidebarAction.ImageDataType")}}
+
Données de pixel pour une image. Doit être un objet ImageData (par exemple, à partir d'un élément {{htmlelement("canvas")}}).
+
+ +

Fonctions

+ +
+
{{WebExtAPIRef("sidebarAction.close()")}}
+
Ferme la barre latérale
+
{{WebExtAPIRef("sidebarAction.getPanel()")}}
+
Obtient le panneau de la barre latérale.
+
{{WebExtAPIRef("sidebarAction.getTitle()")}}
+
Obtient le titre de la barre latérale.
+
{{WebExtAPIRef("sidebarAction.isOpen()")}}
+
Vérifie si la barre latérale est ouverte ou non.
+
{{WebExtAPIRef("sidebarAction.open()")}}
+
Ouvre la barre latérale.
+
{{WebExtAPIRef("sidebarAction.setIcon()")}}
+
Définit l'icône de la barre latérale.
+
{{WebExtAPIRef("sidebarAction.setPanel()")}}
+
Définit le panneau de la barre latérale.
+
{{WebExtAPIRef("sidebarAction.setTitle()")}}
+
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.
+
{{WebExtAPIRef("sidebarAction.toggle()")}}
+
Permet de basculer la visibilité de la barre latérale.
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.sidebarAction")}}

+ +

Exemple extensions

+ + + +
Remerciements : + +

Cette API est basée sur l'API Opera chrome.sidebarAction.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Renvoie true si la barre latérale de l'extension est ouverte dans une fenêtre donnée.

+ +

Cette fonction accepte un windowId en paramètre :

+ + + +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
let gettingIsOpen = browser.sidebarAction.isOpen(
+  details // object
+)
+
+ +

Paramètres

+ +
+
details
+
object. Un objet contenant éventuellement le windowId à vérifier.
+
+
+
windowId {{optional_inline}}
+
integer. 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.
+
+
+
+ +
+
+
+
+
+
+ +

Valeur retournée

+ +

Une Promise qui sera remplie avec true si la barre latérale de l'extension est ouverte dans la fenêtre donnée, ou false dans le cas contraire.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.sidebarAction.isOpen",2)}}

+ +

Exemples

+ +

Vérifiez la fenêtre la plus haute :

+ +
browser.sidebarAction.isOpen({}).then(result => {
+  console.log(result);
+});
+ +

  Vérifiez toutes les fenêtres ouvertes :

+ +
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);
+  }
+});
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +
Ouvrez la barre latérale dans la fenêtre active.
+ +
+ +
+

Vous pouvez uniquement appeler cette fonction à l'intérieur du gestionnaire pour une action utilisateur.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+
+ +

Syntaxe

+ +
browser.sidebarAction.open()
+
+ +

Paramètres

+ +

Aucun

+ +

Valeur retournée

+ +

Une Promise qui est résolue sans arguments..

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.sidebarAction.open", 10)}}

+ +

Exemples

+ +

Ouvrez la barre latérale lorsque l'utilisateur sélectionne un élément de menu contextuel :

+ +
browser.menus.create({
+  id: "open-sidebar",
+  title: "open sidebar",
+  contexts: ["all"]
+});
+
+browser.menus.onClicked.addListener(() => {
+  browser.sidebarAction.open();
+});
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Définit l'icône de la barre latérale.

+ +

Vous pouvez spécifier une icône unique comme chemin d'accès à un fichier image ou un objet {{WebExtAPIRef('sidebarAction.ImageDataType')}}.

+ +

Vous pouvez spécifier plusieurs icônes de différentes tailles en fournissant un dictionnaire contenant plusieurs chemins ou objets ImageData. 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.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Types d'icônes

+ +

Votre extension doit spécifier une icône pour la barre latérale dans la clé de manifest sidebar_action. C'est ce qu'on appelle "manifest icon".

+ +

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 "default icon".

+ +

Si vous définissez une nouvelle icône en utilisant setIcon(), et incluez l'option tabId , l'icône est définie uniquement pour l'onglet donné. C'est ce qu'on appelle "tab-specific icon".

+ +

Si vous définissez une nouvelle icône en utilisant setIcon(), et incluez l'option windowId, alors l'icône n'est définie que pour la fenêtre donnée. Cette icône est appelée "icône spécifique à la fenêtre", et apparaîtra dans tous les onglets de cette fenêtre qui n'ont pas de jeu d'icônes spécifiques aux onglets.

+ +

Si vous définissez une nouvelle icône en utilisant setIcon(), et omettez l'option tabId and windowId, cela définit "icône globale". 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.

+ +

Syntaxe

+ +
var settingIcon = browser.sidebarAction.setIcon(
+  details         // object
+)
+
+ +

Paramètres

+ +
+
details
+
object. Un Objet contenant des propriétés imageData ou path, et éventuellement une propriété tabId.
+
+
+
imageData{{optional_inline}}
+
+

{{WebExtAPIRef('sidebarAction.ImageDataType')}} ou object. C'est un objet ImageData unique ou un objet dictionnaire.

+ +

Utilisez un objet dictionnaire pour spécifier plusieurs objets ImageData 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 imageData est un dictionnaire, la valeur de chaque propriété est un objet ImageData, et son nom est sa taille, comme ceci :

+ +
{
+  16: image16,
+  32: image32
+}
+ +

Le navigateur choisira l'image à utiliser en fonction de la densité de pixels de l'écran. Voir Choisir les tailles d'icônes pour plus d'informations à ce sujet.

+
+
path{{optional_inline}}
+
+

string ou object. C'est soit un chemin relatif vers un fichier d'icône, soit un objet dictionnaire. 

+ +

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 path est un dictionnaire, la valeur de chaque propriété est un chemin relatif, et son nom est sa taille, comme ceci :

+ +
{
+  16: "path/to/image16.jpg",
+  32: "path/to/image32.jpg"
+}
+ +

Le navigateur choisira l'image à utiliser en fonction de la densité de pixels de l'écran. Voir Choosir les tailles d'icônes pour plus d'informations à ce sujet.

+ +

si path est une chaîne vide, le navigateur utilisera l'icône par défaut.

+ +

si path n'est pas vide mais ne pointe pas vers un fichier d'icône, l'icône est masquée.

+ +

si path est null, et tabIda é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.

+ +

si path est null, et tabId a été omis, et qu'il y avait un jeu d'icônes global, il sera réinitialisé à l'icône de manifest.

+
+
tabId{{optional_inline}}
+
integer. Définit l'icône uniquement pour l'onglet donné.
+
windowId {{optional_inline}}
+
integer. Définit l'icône uniquement pour la fenêtre donnée.
+
+
+
+ + + +

Valeur retournée

+ +

Une Promise qui sera remplie sans argument une fois l'icône définie.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.sidebarAction.setIcon",2)}}

+ +

Exemples

+ +

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 :

+ +
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);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Opera chrome.sidebarAction.

+
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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Types de panneau

+ +

Les barres latérales ont toujours un "panneau manifest", qui est le panneau défini dans la clé de manifest sidebar_action.

+ +

Si vous définissez un nouveau panneau à l'aide de setPanel(), et incluez l'option tabId le panneau est défini uniquement pour l'onglet donné. Ce panneau est appelé  "tab-specific panel".

+ +

Si vous définissez un nouveau panneau en utilisant setPanel(), et incluez l'option windowId, alors le panneau n'est défini que pour la fenêtre donnée.  Ce panneau est appelé "panneau spécifique à la fenêtre", et apparaîtra dans tous les onglets de cette fenêtre qui n'ont pas d'ensemble de panneaux spécifiques aux onglets.

+ +

Si vous définissez un nouveau panneau en utilisant setPanel(), et omettez les options tabId et windowId, alors ceci définit le "panneau global". 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.

+ +

Syntaxe

+ +
browser.sidebarAction.setPanel(
+  details // object
+)
+
+ +

Paramètres

+ +
+
details
+
object. Un objet avec les propriétés suivantes :
+
+
+
panel
+
string ou null. Le panneau à charger dans la barre latérale, spécifié comme une URL pointant vers un document HTML, ou null, ou une chaîne vide.
+
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 https://example.org/). Il doit s'agir d'une URL valide.
+
Si panel est null ou "",alors un panneau précédemment défini sera supprimé, de sorte que :
+
+
    +
  • Si tabId 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.
  • +
  • Si windowId 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.
  • +
  • Sinon, le panneau global sera réinitialisé au panneau manifest.
  • +
+
+
tabId{{optional_inline}}
+
integer. Définit le panneau uniquement pour l'onglet donné.
+
windowId {{optional_inline}}
+
integer. Définit le panneau uniquement pour la fenêtre donnée.
+
+
+
+ + + +

Exemples

+ +

Ce code bascule le document de la barre latérale lorsque l'utilisateur clique sur une action du navigateur :

+ +
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);
+});
+
+ +

{{WebExtExamples}}

+ +

 

+ + + +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.sidebarAction.setPanel",2)}}

+ +

 

+ +
Remerciements : + +

Cette API est basée sur l'API Opera chrome.sidebarAction.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Types de titres

+ +

Votre extension doit spécifier un titre pour la barre latérale dans la clé de manifest  sidebar_action. C'est ce qu'on appelle le "titre du manifest". Si vous ne spécifiez pas le titre du manifest, il sera par défaut le nom de l'extension

+ +

Si vous définissez un nouveau titre à l'aide de setTitle(), et incluez l'option tabId le titre est défini uniquement pour l'onglet donné. Ce titre est appelé "titre spécifique à l'onglet".

+ + + +

Si vous définissez un nouveau titre à l'aide de setTitle(),  et incluez l'option windowId, alors le titre est défini uniquement pour la fenêtre donnée. Ce titre est appelé "titre spécifique à la fenêtre", et apparaîtra dans tous les onglets de cette fenêtre qui n'ont pas de titre spécifique à un onglet.

+ +

Si vous définissez un nouveau titre à l'aide de setTitle(), et omettre les options tabId et windowId, alors ceci définit le "titre global". 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.

+ +

Syntaxe

+ +
browser.sidebarAction.setTitle(
+  details // object
+)
+
+ +

Paramètres

+ +
+
details
+
object. Un objet avec les propriétés suivantes .
+
+
+
title
+
string ou null. Le nouveau titre de la barre latérale.
+
+

si le titre  est une chaîne vide, le titre utilisé sera le nom de l'extension, mais {{WebExtAPIRef("sidebarAction.getTitle")}} fournira toujours la chaîne vide.

+ +

Si le titre est null, alors un titre précédemment défini sera supprimé, de sorte que :

+ +
    +
  • Si tabId 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.
  • +
  • Si windowId 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.
  • +
  • Sinon, le titre global sera réinitialisé au titre du manifest.
  • +
+
+
tabId{{optional_inline}}
+
integer. Définit le titre uniquement pour l'onglet donné.
+
windowId{{optional_inline}}
+
integer. Définit le titre uniquement pour la fenêtre donnée.
+
+
+
+ + + +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.sidebarAction.setTitle",2)}}

+ +

Exemples

+ +

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 :

+ +
var title = "A different title";
+
+function setTitleForTab(tab) {
+  browser.sidebarAction.setTitle({title, tabId: tab.id});
+}
+
+browser.browserAction.onClicked.addListener(setTitleForTab);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Opera chrome.sidebarAction.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Permet de basculer la visibilité de la barre latérale dans la fenêtre active, si la barre latérale appartient à l'extension.

+ +

Vous ne pouvez appeler cette fonction que depuis l'intérieur du gestionnaire pour une action utilisateur.

+ +

Il s'agit d'une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
browser.sidebarAction.toggle()
+
+ +

Paramètres

+ +

Aucune.

+ +

Valeur retournée

+ +

Une Promise qui est résolue sans discussion.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.sidebarAction.toggle", 10)}}

+ +

Exemples

+ +

Bascule la barre latérale lorsque l'utilisateur sélectionne un élément dans le menu contextuel :

+ +
browser.menus.create({
+  id: "toggle-sidebar",
+  title: "Toggle sidebar",
+  contexts: ["all"]
+});
+
+browser.menus.onClicked.addListener(() => {
+  browser.sidebarAction.toggle();
+});
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar}}
+ +

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.

+ +

Le mécanisme de stockage est basé sur l'API Web Storage, à quelques différences près. Elles incluent entre autres :

+ + + +

Pour utiliser cette API vous devez inclure la permission « storage » dans votre fichier manifest.json.

+ +

Chaque extension a sa propre zone de stockage, qui peut être divisée entre plusieurs types de stockage.

+ +

Bien que cette API soit semblable à {{domxref("Window.localStorage")}} il est conseillé de ne pas utiliser Window.localStorage 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 storage.local seront correctement conservées dans ces scénarios.

+ +
La zone de stockage n'est pas chiffrée et ne doit pas être utilisée pour stocker des informations confidentielles sur les utilisateurs.
+ +

Types

+ +
+
{{WebExtAPIRef("storage.StorageArea")}}
+
Un objet représentant la zone de stockage.
+
{{WebExtAPIRef("storage.StorageChange")}}
+
Un objet représentant une modification d'une zone de stockage.
+
+ +

Propriétés

+ +

storage a trois propriétés, qui représentent les différents types de zones de stockage disponibles.

+ +
+
{{WebExtAPIRef("storage.sync")}}
+
Représente la zone de stockage sync. Les items dans sync sont synchronisés par le navigateur, et disponibles pour toutes les instances de ce navigateur auxquelles l'utilisateur est connecté, pour tous les appareils.
+
{{WebExtAPIRef("storage.local")}}
+
Représente la zone de stockage local. Les items dans local sont limités à l'appareil sur lequel l'extension a été installée.
+
{{WebExtAPIRef("storage.managed")}}
+
Représente la zone de stockage managed. Les items dans managed 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.
+
+ +

Événements

+ +
+
{{WebExtAPIRef("storage.onChanged")}}
+
Activé quand un ou plusieurs items d'une zone de stockage sont modifiés.
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.storage")}}

+ +

{{WebExtExamples("h2")}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Représente la zone de stockage local. Les éléments stockés localement sont locaux sur la machine sur laquelle l'extension a été installée.

+ +

Le navigateur peut limiter la quantité de données qu'une extension peut stocker dans la zone de stockage locale :

+ + + +

Lorsque l'extension est désinstallée, son stockage local associé est effacé.

+ +

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 true: "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.

+ +

Bien que cette API soit similaire à {{domxref("Window.localStorage")}} il est recommandé de ne pas utiliser Window.localStorage 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.

+ +

Méthodes

+ +

L'objet local local implémente les méthodes définies sur le type  {{WebExtAPIRef("storage.StorageArea")}} :

+ +
+
{{WebExtAPIRef("storage.StorageArea.get()")}}
+
Récupère un ou plusieurs éléments de la zone de stockage.
+
{{WebExtAPIRef("storage.StorageArea.getBytesInUse()")}}
+
Obtient la quantité d'espace de stockage (en octets) utilisée pour stocker un ou plusieurs éléments dans la zone de stockage.
+
{{WebExtAPIRef("storage.StorageArea.set()")}}
+
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.
+
{{WebExtAPIRef("storage.StorageArea.remove()")}}
+
Supprime un ou plusieurs éléments de la zone de stockage..
+
{{WebExtAPIRef("storage.StorageArea.clear()")}}
+
Supprime tous les éléments de la zone de stockage.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.storage.local")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Un objet {{WebExtAPIRef("storage.StorageArea")}} qui représente la zone de stockage gérée. Les éléments de stockage géré 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.

+ +

Provisionnement du stockage géré

+ +

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 .json. ((Voir Stockage Chrome géré ci-dessous.)

+ +

manifestes natives

+ +

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 manifests natifs.

+ +

Voici un exemple de manifest :

+ +
{
+  "name": "favourite-color-examples@mozilla.org",
+  "description": "ignored",
+  "type": "storage",
+  "data":
+  {
+    "color": "management thinks it should be blue!"
+  }
+}
+ +

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 :

+ +
var storageItem = browser.storage.managed.get('color');
+storageItem.then((res) => {
+  console.log(`Managed colur is: ${res.color}`);
+});
+ +

Gestion de stockage dans Chrome

+ +

Firefox et Chrome supportent tous deux l'utilisation d'un manifeste pour les zones de stockage.

+ +

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.

+ +

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.

+ +

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.

+ +

manifest.json

+ +
{
+  "name": "chrome-storage-managed-examples@mozilla.org",
+  "storage": {
+      "managed_schema": "schema.json"
+  },
+}
+
+ +

Le fichier json ressemblerait à ceci :

+ +
{
+  "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" }
+      }
+    }
+  }
+}
+ +

Pour plus d'informations, voir l'article de Chrome pour les zones de stockage Manifeste pour les zones de stockage.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.storage.managed")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Lancé lorsqu'un ou plusieurs éléments changent.

+ +

Syntaxe

+ +
browser.storage.onChanged.addListener(callback)
+browser.storage.onChanged.removeListener(listener)
+browser.storage.onChanged.hasListener(listener)
+
+ +

Les événements ont trois fonctions:

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie trues'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
changes
+
object. 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.
+
+ +
+
areaName
+
string. Le nom de la zone de stockage ("sync", "local" or "managed") auquel les modifications ont été apportées.
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.storage.onChanged")}}

+ +

Exemples

+ +
/*
+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);
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Supprime tous les éléments de la zone de stockage.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var clearing = browser.storage.<storageType>.clear()
+
+ +

<storageType> sera l'un des types de stockage accessibles en écriture — {{WebExtAPIRef("storage.sync")}} or {{WebExtAPIRef("storage.local")}}.

+ +

Paramètres

+ +

None.

+ +

Valeur retournée

+ +

Une Promise 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..

+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.storage.StorageArea.clear")}}

+ +

Exemples

+ +
function onCleared() {
+  console.log("OK");
+}
+
+function onError(e) {
+  console.log(e);
+}
+
+var clearStorage = browser.storage.local.clear();
+clearStorage.then(onCleared, onError);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar()}}
+ +

Récupère un ou plusieurs éléments de la zone de stockage.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
let gettingItem = browser.storage.<storageType>.get(
+  keys    // null, string, object or array of strings
+)
+
+ +

<storageType> sera l'un des types de stockage accessibles en écriture — {{WebExtAPIRef("storage.sync", "sync")}}, {{WebExtAPIRef("storage.local", "local")}}, ou {{WebExtAPIRef("storage.managed", "managed")}}.

+ +

Paramètres

+ +
+
keys
+
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 null,  ou une valeur indéfinie, le contenu entier du stockage sera récupéré.
+
+ +

Valeur retournée

+ +

Une Promise qui sera remplie avec un objet de resultat contenant tous les objets dans les clefs 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  non définies seront retournées.

+ +
+

Lorsqu'elle est utilisée dans un script de contenu dans les versions de Firefox antérieures à 52, la promesse retournée par browser.storage.local.get() est remplie avec un tableau contenant un objet. L'objet dans le tableau contient les clefs 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
+ (scripts d'arrière-plan, popups, pages d'options, etc.). Lorsque cette API est utilisée en tant que chrome.storage.local.get(), elle transmet correctement un objet à la fonction de rappel.

+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.storage.StorageArea.get")}}

+ +

Exemples

+ +

Supposons que le stockage contienne deux éléments :

+ +
// storage contains two items,
+// "kitten" and "monster"
+browser.storage.local.set({
+  kitten:  {name:"Mog", eats:"mice"},
+  monster: {name:"Kraken", eats:"people"}
+});
+ +

Définissez les gestionnaires de réussite et d'échec pour la promesse:

+ +
function onGot(item) {
+  console.log(item);
+}
+
+function onError(error) {
+  console.log(`Error: ${error}`);
+}
+ +

Sans arguments clefs, tout récupérez :

+ +
let gettingItem = browser.storage.local.get();
+gettingItem.then(onGot, onError);
+
+// -> Object { kitten: Object, monster: Object }
+ +

Avec un argument de clefs vide, ne retourne rien:

+ +
// with an empty array, retrieve nothing
+let gettingItem = browser.storage.local.get([]);
+gettingItem.then(onGot, onError);
+
+// -> Object { }
+ +

Avec le nom d'un objet, récupérez la correspondance :

+ +
let gettingItem = browser.storage.local.get("kitten");
+gettingItem.then(onGot, onError);
+
+// -> Object { kitten: Object }
+ +

Avec un tableau de noms d'objets, récupérez toutes les correspondances :

+ +
let gettingItem = browser.storage.local.get(["kitten", "monster", "grapefruit"]);
+gettingItem.then(onGot, onError);
+
+// -> Object { kitten: Object, monster: Object } 
+ +

Avec un objet avec des noms d'objets en tant que clefs et la valeur par défaut en tant que valeur :

+ +
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 }
+
+ +

{{WebExtExamples}}

+ +

Chrome exemples

+ +
chrome.storage.local.get("kitten", function(items){
+  console.log(items.kitten);  // -> {name:"Mog", eats:"mice"}
+});
+ +

Ou avec une fonction de flèche

+ +
chrome.storage.local.get("kitten", items=>{
+  console.log(items.kitten); // -> {name:"Mog", eats:"mice"}
+});
+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar()}}
+ +

Obtient la quantité d'espace de stockage, en octets, utilisé un ou plusieurs éléments stockés dans la zone de stockage.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var gettingSpace = browser.storage.<storageType>.getBytesInUse(
+  keys                      // null, string, or array of strings
+)
+
+ +

<storageType> sera l'un des types de stockage accessibles en écriture — {{WebExtAPIRef("storage.sync")}} ou {{WebExtAPIRef("storage.local")}}.

+ +

Paramètres

+ +
+
keys
+
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 à null ou indéfini ici, la fonction retournera l'espace utilisé par l'ensemble de la zone de stockage.
+
+ +

Valeur retournée

+ +

Une Promise qui sera remplie avec un entier, bytesUsed, représentant l'espace de stockage utilisé par les objets spécifiés dans les clefs. Si l'opération a échoué, la promesse sera rejetée avec un message d'erreur.

+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.storage.StorageArea.getBytesInUse")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar()}}
+ +

StorageArea est un objet représentant une zone de stockage.

+ +

Type

+ +

Les valeurs de ce type sont des objets.

+ +

Méthodes

+ +
+
{{WebExtAPIRef("storage.StorageArea.get()")}}
+
Récupère un ou plusieurs éléments de la zone de stockage..
+
{{WebExtAPIRef("storage.StorageArea.getBytesInUse()")}}
+
Obtient la quantité d'espace de stockage (en octets) utilisée pour stocker un ou plusieurs éléments dans la zone de stockage.
+
{{WebExtAPIRef("storage.StorageArea.set()")}}
+
Stocke un ou plusieurs éléments dans la zone de stockage. Si un élément existe déjà, sa valeur sera mise à jour.
+
{{WebExtAPIRef("storage.StorageArea.remove()")}}
+
Supprime un ou plusieurs éléments de la zone de stockage.
+
{{WebExtAPIRef("storage.StorageArea.clear()")}}
+
Supprime tous les éléments de la zone de stockage.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.storage.StorageArea")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Supprime un ou plusieurs éléments de la zone de stockage.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
let removingItem = browser.storage.<storageType>.remove(
+  keys             // string, or array of strings
+)
+
+ +

<storageType> sera l'un des types de stockage accessibles en écriture — {{WebExtAPIRef("storage.sync")}} ou {{WebExtAPIRef("storage.local")}}.

+ +

Paramètres

+ +
+
keys
+
Une chaîne ou un tableau de chaînes représentant la ou les clés de l'élément à supprimer.
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.storage.StorageArea.remove")}}

+ +

Exemples

+ +

Supprimer un seul élément:

+ +
function onRemoved() {
+  console.log("OK");
+}
+
+function onError(e) {
+  console.log(e);
+}
+
+let removeKitten = browser.storage.sync.remove("kitten");
+removeKitten.then(onRemoved, onError);
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
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 +--- +
{{AddonSidebar()}}
+ +

Stocke un ou plusieurs éléments dans la zone de stockage ou met à jour les éléments existants..

+ +

Lorsque vous stockez ou mettez à jour une valeur à l'aide de cette API, l'événement  {{WebExtAPIRef("storage.onChanged")}} se déclenche.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
let settingItem = browser.storage.<storageType>.set(
+  keys             // object
+)
+
+ +

<storageType> sera l'un des types de stockage accessibles en écriture — {{WebExtAPIRef("storage.sync")}} ou {{WebExtAPIRef("storage.local")}}.

+ +

Paramètres

+ +
+
keys
+
+

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.

+ +

Les valeurs peuvent être des types primitifs tels que des nombres, des booléens et des chaînes) ou des types de tableau.

+ +

Il n'est généralement pas possible de stocker d'autres types, tels que Function, Date, RegExp, Set, Map, ArrayBuffer et etc. Certains de ces types non pris en charge seront restaurés en tant qu'objet vide, et d'autres entraîneront set() à lancer une erreur. Le comportement exact ici est spécifique au navigateur.

+
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.storage.StorageArea.set")}}

+ +

Exemples

+ +
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);
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+
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 +--- +
{{AddonSidebar()}}
+ +
StorageChange est un objet représentant une modification d'une zone de stockage.
+ +

Type

+ +

Les objets StorageChange contiennent les propriétés suivantes :

+ +
+
oldValue{{optional_inline}}
+
L'ancienne valeur de l'article, s'il y avait une ancienne valeur. Cela peut être n'importe quel type de données.
+
newValue{{optional_inline}}
+
La nouvelle valeur de l'article, s'il y a une nouvelle valeur. Cela peut être n'importe quel type de données.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.storage.StorageChange")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Représente la zone de stockage de synchronisation. Les éléments stockés dans la  synchronisation 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.

+ +

Pour Firefox, un utilisateur doit avoir coché Modules complémentaires dans les options « Réglages de Sync » dans « about:preferences ».

+ +

Notez que l'implémentation de storage.sync dans Firefox repose sur l'ID Add-on. Si vous utilisez storage.sync, vous devez définir un ID pour votre extension à l'aide de la clé manifest.json browser_specific_settings.

+ +

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.

+ +

Méthodes

+ +

L'objet sync implémente les méthodes définies sur le type  {{WebExtAPIRef("storage.StorageArea")}} :

+ +
+
{{WebExtAPIRef("storage.StorageArea.get()")}}
+
Récupère un ou plusieurs éléments de la zone de stockage.
+
{{WebExtAPIRef("storage.StorageArea.getBytesInUse()")}}
+
Obtient la quantité d'espace de stockage (en octets) utilisée pour stocker un ou plusieurs éléments dans la zone de stockage.
+
{{WebExtAPIRef("storage.StorageArea.set()")}}
+
Stocke un ou plusieurs éléments dans la zone de stockage. Si un élément existe déjà, sa valeur sera mise à jour.
+
{{WebExtAPIRef("storage.StorageArea.remove()")}}
+
Supprime un ou plusieurs éléments de la zone de stockage.
+
{{WebExtAPIRef("storage.StorageArea.clear()")}}
+
Supprime tous les éléments de la zone de stockage.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.storage.sync")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + +<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 +--- +
{{AddonSidebar()}}
+ +

Crée un URI de données codant une image de la zone visible de l'onglet donné. Vous devez avoir la permission <all_urls> pour utiliser cette méthode.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var capturing = browser.tabs.captureTab(
+  tabId,               // optional integer
+  options              // optional extensionTypes.ImageDetails
+)
+
+ +

Paramètres

+ +
+
tabId{{optional_inline}}
+
integer. ID de l'onglet à capturer. Par défaut à l'onglet actif dans la fenêtre en cours.
+
options{{optional_inline}}
+
{{WebExtAPIRef('extensionTypes.ImageDetails')}}.
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Exemples

+ +

Capturez une image de l'onglet actif dans la fenêtre actuelle, avec les paramètres par défaut :

+ +
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);
+});
+
+ +

{{WebExtExamples}}

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.captureTab")}}

+ +
Remerciements : + +

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

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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  permission <all_urls> pour utiliser cette méthode. (Alternativement, Chrome permet l'utilisation de cette méthode avec la permission activeTab et un geste utilisateur qualifiant).

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var capturing = browser.tabs.captureVisibleTab(
+  windowId,               // optional integer
+  options                 // optional extensionTypes.ImageDetails
+)
+
+ +

Paramètres

+ +
+
windowId{{optional_inline}}
+
integer. La fenêtre cible Par défaut à la fenêtre actuelle.
+
options{{optional_inline}}
+
{{WebExtAPIRef('extensionTypes.ImageDetails')}}.
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Exemples

+ +

Capturez une image de l'onglet actif dans la fenêtre actuelle, avec les paramètres par défaut :

+ +
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);
+});
+
+ +

{{WebExtExamples}}

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.captureVisibleTab")}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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 scripts de contenu appartenant à cette extension et s'exécutant dans l'onglet spécifié. Cette fonction renvoie un objet {{WebExtAPIRef("runtime.Port")}}.

+ +

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 Port pour échanger des messages.

+ +

Pour plus de détails, voir connection-based messaging.

+ +

Syntax

+ +
browser.tabs.connect(
+  tabId,      // integer
+  connectInfo // optional object
+)
+
+ +

Parameters

+ +
+
tabId
+
integer. ID of the tab whose content scripts we want to connect to.
+
connectInfo{{optional_inline}}
+
object. +
+
name{{optional_inline}}
+
string. Will be passed into {{WebExtAPIRef("runtime.onConnect")}} event listeners in content scripts belonging to this extension and running in the specified tab.
+
frameId{{optional_inline}}
+
integer. Open a port to a specific frame identified by frameId instead of all frames in the tab.
+
+
+
+ +

Return value

+ +

{{WebExtAPIRef('runtime.Port')}}. A port that can be used to communicate with the content scripts running in the specified tab.

+ +

Examples

+ +

In this example a background script listens for a click on a browser action, then connects to the currently active tab, then sends a message using the Port that's returned from connect():

+ +
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);
+});
+
+ +

{{WebExtExamples}}

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.connect")}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Crée un nouvel onglet

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var creating = browser.tabs.create(
+  createProperties   // object
+)
+
+ +

Paramètres

+ +
+
createProperties
+
object.Propriétés pour donner le nouvel onglet. Pour en savoir plus sur ces propriétés, consultez la documentation {{WebExtAPIRef("tabs.Tab")}}.
+
+
+
active{{optional_inline}}
+
boolean. Si l'onglet doit devenir l'onglet actif dans la fenêtre. Si elle est false, elle n'a aucun effet. N'affecte pas si la fenêtre est mise au point (voir {{WebExtAPIRef('windows.update')}}). Par défaut à  true.
+
cookieStoreId {{optional_inline}}
+
string. Utilisez-le pour créer un onglet dont l'ID de cookie estCette option n'est disponible que si l'extension a  la  permission "cookies".
+
index{{optional_inline}}
+
integer. 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.
+
openerTabId{{optional_inline}}
+
integer. 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éé.
+
openInReaderMode{{optional_inline}}
+
boolean. si true, ouvrez cet onglet en mode lecture. Par défaut à  false.
+
pinned{{optional_inline}}
+
boolean. Si l'onglet doit être épinglé. Par défaut à false.
+
selected{{optional_inline}}
+
boolean. Si l'onglet doit devenir l'onglet sélectionné dans la fenêtre. Par défaut à true. +
Cette propriété est obsolète et n'est pas prise en charge dans Firefox. Utilisez  actif à la place.
+
+
url{{optional_inline}}
+
string. 'URL permettant de naviguer dans l'onglet initialement. Par défaut à la page Nouvel onglet.
+
Les URL complètes doivent inclure un schéma (i.e. 'http://www.google.com', par 'www.google.com').
+
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 :
+
+
    +
  • chrome: URLs
  • +
  • javascript: URLs
  • +
  • data: URLs
  • +
  • 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)
  • +
  • privileged about: URLs (par exemple, about:config, about:addons, about:debugging) . Les URL non privilégiées (e.g., about:blank) sont autorisés.
  • +
  • La page Nouvel onglet (about:newtab) peut être ouverte si aucune valeur n'est fournie pour l'URL.
  • +
+ +

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.

+
+
windowId{{optional_inline}}
+
integer. La fenêtre pour créer le nouvel onglet. Par défaut à la fenêtre actuelle.
+
+
+
+ +

Valeur retournée

+ +

A Promise 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 url used a privileged scheme) the promise will be rejected with an error message.

+ +

Exemples

+ +

Ouvre "https://example.org" dans un nouvel onglet :

+ +
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);
+});
+ +

{{WebExtExamples}}

+ + + +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.create", 10)}}

+ + + +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Détecte la langue principale du contenu dans un onglet, en utilisant le détecteur de langue compact (CLD).

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var detecting = browser.tabs.detectLanguage(
+  tabId,                  // optional integer
+  callback                // optional function
+)
+
+ +

Paramètres

+ +
+
tabId {{optional_inline}}
+
integer. Par défaut à l'onglet actif de la fenêtre en cours.
+
callback {{optional_inline}}
+
function. Actuellement, si un tabId 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é en ou fr.
+
+ +

Valeur retournée

+ +

Une Promisequi sera remplie avec une chaîne représentant un code de langue ISO tel que en ou fr. Pour une liste complète des langues prises en charge par cette méthode, see kLanguageInfoTable. Pour une langue inconnue, "und" sera retourné (mais voir bug 1288263). Si une erreur se produit, la promesse sera rejetée avec un message d'erreur.

+ +

Exemples

+ +

Détecter et enregistrer la langue de l'onglet actif lorsque l'utilisateur clique sur une action du navigateur :

+ +
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);
+});
+ +

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 permission "tabs") :

+ +
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);
+});
+ +

{{WebExtExamples}}

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.detectLanguage")}}

+ +
Remerciements : + +

Cette API est basée sur l’API chrome.tabs de Chromium. Cette documentation est dérivée de tabs.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Rejette un ou plusieurs onglets.

+ +

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é.

+ +

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.

+ +

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 beforeunload qui afficherait une invite.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var discarding = browser.tabs.discard(
+  tabIds          // integer or integer array
+)
+
+ +

Paramètres

+ +
+
tabIds
+
integer or array of integer. Les ID de l'onglet ou des onglets à ignorer.
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Exemples

+ +

Supprimer un seul onglet :

+ +
function onDiscarded() {
+  console.log(`Discarded`);
+}
+
+function onError(error) {
+  console.log(`Error: ${error}`);
+}
+
+var discarding = browser.tabs.discard(2);
+discarding.then(onDiscarded, onError);
+ +

Ignorer plusieurs onglets :

+ +
function onDiscarded() {
+  console.log(`Discarded`);
+}
+
+function onError(error) {
+  console.log(`Error: ${error}`);
+}
+
+var discarding = browser.tabs.discard([15, 14, 1]);
+discarding.then(onDiscarded, onError);
+ +

{{WebExtExamples}}

+ + + +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.discard", 10)}}

+ + + +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.tabs.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Duplique un onglet dont l’identifiant est donné.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var duplicating = browser.tabs.duplicate(
+  tabId              // integer
+)
+
+ +

Paramètres

+ +
+
tabId
+
integer. L'identifiant de l'onglet à dupliquer.
+
+ +

valeur retournée

+ +

Une Promise qui sera remplie avec un objet {{WebExtAPIRef('tabs.Tab')}} contenant des détails sur l'onglet dupliqué. L'objet onglet contient uniquement url, title et favIconUrl si l'extension a la permission "tabs". Si une erreur se produit, la promesse sera rejetée avec un message d'erreur.

+ +
+

Note: 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é.

+
+ +

Exemples

+ +

Duplique le premier onglet, puis affiche l'ID de l'onglet nouvellement créé :

+ +
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);
+ +

{{WebExtExamples}}

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.duplicate")}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Injecte du code JavaScript dans une page.

+ +

Vous pouvez injecter du code dans des pages dont l'URL peut être exprimée à l'aide d'un modèle de correspondance : 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 permission d'hôte, ou via la permission activeTab.

+ +

Vous pouvez également injecter du code dans des pages empaquetées avec votre propre extension :

+ +
browser.tabs.create({url: "/my-page.html"}).then(() => {
+  browser.tabs.executeScript({
+    code: `console.log('location:', window.location.href);`
+  });
+});
+ +

Vous n'avez pas besoin de permissions spéciales pour le faire.

+ +

Vous ne pouvez pas 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.

+ +

Les scripts que vous injectez s’appellent des scripts de contenu. En savoir plus sur les scripts de contenu.

+ +

Il s’agit d’une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var executing = browser.tabs.executeScript(
+  tabId,                 // optional integer
+  details                // object
+)
+
+ +

Paramètres

+ +
+
tabId {{optional_inline}}
+
integer. L’ID de l’onglet dans lequel exécuter le script. Par défaut, l’onglet actif de la fenêtre en cours.
+
details
+
Un objet décrivant le script à exécuter. Il contient les propriétés suivantes :
+
+
+
allFrames {{optional_inline}}
+
boolean. Si true, le code sera injecté dans toutes les images de la page courante. Si true et frameId est défini, alors il y aura une erreur, frameId et allFrames sont mutuellement exclusifs. Si c'est false, le code n'est injecté que dans le cadre supérieur. La valeur par défaut est false.
+
code {{optional_inline}}
+
string. Code à injecter, sous la forme d’une chaine de texte. Attention : 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é.
+
file {{optional_inline}}
+
string. 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 : "/path/to/script.js".
+
frameId {{optional_inline}}
+
integer. Le cadre où le code doit être injecté. La valeur par défaut est 0 (le cadre de niveau supérieur).
+
matchAboutBlank {{optional_inline}}
+
boolean. Si true, le code sera injecté dans des cadres about:blank et about:srcdoc inclus depuis une page si votre extension a accès à leur document parent. Le code ne peut pas être inséré dans les cadres about: de niveau supérieur. Par défaut, false.
+
runAt {{optional_inline}}
+
{{WebExtAPIRef('extensionTypes.RunAt')}}. Le moment le plus tôt auquel le code sera injecté dans l’onglet. Par défaut, document_idle.
+
+
+
+ +

Valeur de retour

+ +

Une Promise résolue avec un tableau d’objets représentant le résultat du script dans chaque cadre où le script a été injecté.

+ +

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 console.log()) si vous exécutiez le script dans la Console Web. Par exemple, considérez un script comme celui-ci :

+ +
var foo='my result';foo;
+ +

Ici, le tableau des résultats contiendra la chaîne "my result" en tant qu’élément. Les valeurs de résultat doivent être clonables tructurées. La dernière déclaration peut également être une Promise, mais cette fonctionnalité n'est pas supportée par la bibliothèque webextension-polyfill.
+ Si une erreur se produit, la promesse sera rejetée avec un message d’erreur.

+ +

Exemples

+ +

Cet exemple exécute un extrait de code d’une ligne dans l’onglet actuellement actif :

+ +
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);
+ +

L’exemple suivant exécute un script à partir d’un fichier empaqueté avec l’extension appelé content-script.js. 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 :

+ +
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);
+ +

L’exemple suivant exécute un script à partir d’un fichier empaqueté avec l’extension appelé content-script.js. Le script est exécuté dans l’onglet ayant l’ID 2 :

+ +
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);
+ +

{{WebExtExamples}}

+ +

Compatibilité des navigateurs

+ + + +

{{Compat("webextensions.api.tabs.executeScript")}}

+ +
Remerciements : + +

Cette API est basée sur l’API chrome.tabs de Chromium. Cette documentation est dérivée de tabs.json dans le code de Chromium code.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Étant donné un ID d'onglet, obtenez les détails de l'onglet en tant qu'objet {{WebExtAPIRef("tabs.Tab")}}.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var getting = browser.tabs.get(
+  tabId              // integer
+)
+
+ +

Paramètres

+ +
+
tabId
+
integer. ID de l'onglet à obtenir.
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Exemples

+ +

Obtenir des informations sur un onglet lorsqu'il est activé :

+ +
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);
+ +

{{WebExtExamples}}

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.get")}}

+ +
Remerciements : + +

Cette API est basée sur l’API chrome.tabs de Chromium. Cette documentation est dérivée de tabs.json dans le code de Chromium code.

+
+ + 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 +--- +
{{AddonSidebar}} +
+

Deprecated
+ Cette méthode est dépréciée. Utilisez {{WebExtAPIRef("tabs.query", "tabs.query({currentWindow: true})")}} à la place.

+
+
+ +

Obtient des détails sur tous les onglets de la fenêtre spécifiée.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var getting = browser.tabs.getAllInWindow(
+  windowId            // optional integer
+)
+
+ +

Paramètres

+ +
+
windowId{{Optional_Inline}}
+
integer. Par défaut à la fenêtre actuelle.
+
+ +

Valeur retournée

+ +

Une Promise qui sera remplie avec un tableau d'ojets {{WebExtAPIRef('tabs.Tab')}} 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.getAllInWindow")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l’API chrome.tabs de Chromium. Cette documentation est dérivée de tabs.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Obtenez un {{WebExtAPIRef("tabs.Tab")}} contenant des informations sur l'onglet dans lequel ce script s'exécute.

+ +

Vous pouvez appeler cette fonction dans des contextes comportant un onglet de navigateur, par exemple une pages d'options. Si vous l'appelez à partir d'un script d'arrière-plan ou d'une fenêtre contextuelle, elle renverra undefined.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var gettingCurrent = browser.tabs.getCurrent()
+
+ +

Paramètres

+ +

None.

+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Exemples

+ +

Obtenir les informations sur l'onglet en cours :

+ +
function onGot(tabInfo) {
+  console.log(tabInfo);
+}
+
+function onError(error) {
+  console.log(`Error: ${error}`);
+}
+
+var gettingCurrent = browser.tabs.getCurrent();
+gettingCurrent.then(onGot, onError);
+ +

{{WebExtExamples}}

+ + + +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.getCurrent")}}

+ + + +
Remerciements : + +

Cette API est basée sur l’API chrome.tabs de Chromium. Cette documentation est dérivée de tabs.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +
+

Cette méthode est dépréciée. utilisez {{WebExtAPIRef("tabs.query", "tabs.query({active: true})")}} à la place.

+
+ +

Obtient l'onglet sélectionné dans la fenêtre spécifiée

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var gettingSelected = browser.tabs.getSelected(
+  windowId           // optional integer
+)
+
+ +

Paramètres

+ +
+
windowId{{optional_inline}}
+
integer. Par défaut à la fenêtre actuelle.
+
+ +

Valeur retournée

+ +

Une Promise qui sera remplie avec un objet tabs.Tab 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.

+ +

Compatibilité du navigateur

+ + + + + +

{{Compat("webextensions.api.tabs.getSelected")}}

+ + + +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l’API chrome.tabs de Chromium. Cette documentation est dérivée de tabs.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Obtient le facteur de zoom actuel pour l'onglet spécifié.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var gettingZoom = browser.tabs.getZoom(
+  tabId                     // optional integer
+)
+
+ +

Paramètres

+ +
+
tabId{{optional_inline}}
+
integer. L'ID de l'onglet pour obtenir le facteur de zoom actuel. Par défaut à l'onglet actif de la fenêtre en cours.
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Exemples

+ +

Obtenez le facteur de zoom  pour l'onglet actuel :

+ +
function onGot(zoom) {
+  console.log(zoom);
+}
+
+function onError(error) {
+  console.log(`Error: ${error}`);
+}
+
+var gettingZoom = browser.tabs.getZoom();
+gettingZoom.then(onGot, onError);
+ +

Obtenez le facteur zoom pour l'onglet dont l'ID est 2:

+ +
function onGot(zoom) {
+  console.log(zoom);
+}
+
+function onError(error) {
+  console.log(`Error: ${error}`);
+}
+
+var gettingZoom = browser.tabs.getZoom(2);
+gettingZoom.then(onGot, onError);
+ +

{{WebExtExamples}}

+ + + +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.getZoom")}}

+ + + +
Remerciements : + +

Cette API est basée sur l’API chrome.tabs de Chromium. Cette documentation est dérivée de tabs.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Obtient les paramètres de zoom actuels pour un onglet spécifié.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var gettingZoomSettings = browser.tabs.getZoomSettings(
+  tabId                       // optional integer
+)
+
+ +

Paramètres

+ +
+
tabId{{optional_inline}}
+
integer. 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.
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Exemples

+ +

Obtenez les paramètres de zoom pour l'onglet en cours :

+ +
function onGot(settings) {
+  console.log(settings);
+}
+
+function onError(error) {
+  console.log(`Error: ${error}`);
+}
+
+var gettingZoomSettings = browser.tabs.getZoomSettings();
+gettingZoomSettings.then(onGot, onError);
+ +

{{WebExtExamples}}

+ + + +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.getZoomSettings")}}

+ + + +
Remerciements : + +

Cette API est basée sur l’API chrome.tabs de Chromium. Cette documentation est dérivée de tabs.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Naviguer à la page précédente dans l'historique de l'onglet, si disponible.

+ +

Il s'agit d'une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var  withgoingBack = browser.tabs.goBack(
+  tabId,                  // optional integer
+  callback                  // optional function
+)
+
+ +

Paramètres

+ +
+
tabId{{optional_inline}}
+
integer. L'ID de l'onglet à naviguer. Par défaut, l'onglet actif de la fenêtre en cours.
+
callback{{optional_inline}}
+
function. Lorsque la navigation sur la page se termine, cette fonction est appelée sans paramètres.
+
+ +

Valeur retournée

+ +

Une Promise qui est tenue lorsque la navigation sur la page se termine.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.goBack")}}

+ +

Exemples

+ +

Retournez à la page précédente dans l'onglet en cours :

+ +
function onGoBack() {
+  console.log("Gone back");
+}
+
+function onError(error) {
+  console.log(`Error: ${error}`);
+}
+
+var goingBack = browser.tabs.goBack();
+goingBack.then(onGoBack, onError);
+ +

{{WebExtExamples}}

+ +
Remerciements + +

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

+ +

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.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Passez à la page suivante dans l'historique de l'onglet, si disponible.

+ +

Il s'agit d'une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var goingForward = browser.tabs.goForward(
+  tabId,                       // optional integer
+  callback                     // optional function
+)
+
+ +

Paramètres

+ +
+
tabId{{optional_inline}}
+
integer. L'ID de l'onglet à naviguer. Par défaut, l'onglet actif de la fenêtre en cours.
+
callback{{optional_inline}}
+
function. Lorsque la navigation sur la page se termine, cette fonction est appelée sans paramètres.
+
+ +

Valeur retournée

+ +

Une Promise qui est tenue lorsque la navigation sur la page se termine.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.goForward")}}

+ +

Exemples

+ +

Passez à la page suivante dans l'onglet en cours :

+ +
function onGoForward() {
+  console.log("Gone forward");
+}
+
+function onError(error) {
+  console.log(`Error: ${error}`);
+}
+
+var goingForward = browser.tabs.goForward();
+goingForward.then(onGoForward, onError);
+ +

{{WebExtExamples}}

+ +
Remerciements + +

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

+ +

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.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Masque un ou plusieurs onglets.

+ +

Les onglets cachés ne sont plus visibles dans l'onglet du navigateur. Les onglets cachés ne sont pas automatiquement supprimés :  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.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Tous les onglets ne peuvent pas être masqués :

+ + + +

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.

+ +

Pour utiliser cette API, vous devez disposer de  la permission "tabHide".

+ +

Syntaxe

+ +
var hiding = browser.tabs.hide(
+  tabIds          // integer or integer array
+)
+
+ +

Paramètres

+ +
+
tabIds
+
integer or array of integer. Les ID de l'onglet ou des onglets à masquer.
+
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 [1, 3], et 1 identifie l'onglet actif, alors seulement 3 seront cachés.
+
Cependant, si l'un des ID d'onglet n'est pas valide, l'appel échouera et aucun onglet ne sera masqué.
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Exemples

+ +

Masquer un seul onglet :

+ +
function onHidden() {
+  console.log(`Hidden`);
+}
+
+function onError(error) {
+  console.log(`Error: ${error}`);
+}
+
+browser.tabs.hide(2).then(onHidden, onError);
+ +

Masquer plusieurs onglets :

+ +
function onHidden() {
+  console.log(`Hidden`);
+}
+
+function onError(error) {
+  console.log(`Error: ${error}`);
+}
+
+browser.tabs.hide([15, 14, 1]).then(onHidden, onError);
+ +

{{WebExtExamples}}

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.hide")}}

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 +--- +
{{AddonSidebar()}}
+ +
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.
+ +
+ +
+

C'est une fonction asynchrone qui renvoie une Promise.

+
+ +

Syntaxe

+ +
var highlighting = browser.tabs.highlight(
+  highlightInfo         // object
+)
+
+ +

Paramètres

+ +
+
highlightInfo
+
object.
+
+
+
windowId{{optional_inline}}
+
integer. ID de la fenêtre contenant les onglets.
+
populate{{optional_inline}}
+
boolean. Par défaut la valeur est true. S'il est défini sur false, l'objet {{WebExtAPIRef('windows.Window')}} n'aura pas de propriété tabs contenant une liste d'objets {{WebExtAPIRef('tabs.Tab')}} représentant les onglets ouverts dans la fenêtre. +
+

Note: 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é populate à false si vous n'avez pas besoin des détails de l'onglet.

+
+
+
tabs
+
array 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 onglets cesseront d'être surlignés. Le premier onglet des onglets devient actif.
+
+
+
+ +

Valeur retournée

+ +

Une Promise  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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.highlight",2)}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l’API chrome.tabs de Chromium. Cette documentation est dérivée de tabs.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar}}
+ +

Permet d’interagir avec le système d’onglets du navigateur.

+ +

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()")}}.

+ +

Vous pouvez utiliser la majeure partie de cette API sans autorisation spéciale. Toutefois :

+ + + +

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 permission "activeTab".

+ +

De nombreuses opérations d’onglet utilisent un identifiant (id) d’onglet. Les id 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()")}}.

+ +

Types

+ +
+
{{WebExtAPIRef("tabs.MutedInfoReason")}}
+
Spécifie la raison pour laquelle un onglet a été rendu silencieux ou à nouveau sonore.
+
{{WebExtAPIRef("tabs.MutedInfo")}}
+
Cet objet contient un booléen indiquant si l’onglet est silencieux et la raison de la dernière modification de l’état.
+
{{WebExtAPIRef("tabs.PageSettings")}}
+
+

Permet de contrôler le rendu d’un onglet au format PDF par la méthode {{WebExtAPIRef("tabs.saveAsPDF()")}}.

+
+
{{WebExtAPIRef("tabs.Tab")}}
+
Ce type contient des informations sur un onglet.
+
{{WebExtAPIRef("tabs.TabStatus")}}
+
Indique si l’onglet a fini de charger.
+
{{WebExtAPIRef("tabs.WindowType")}}
+
Le type de fenêtre qui héberge cet onglet.
+
{{WebExtAPIRef("tabs.ZoomSettingsMode")}}
+
Définit si les modifications de zoom sont traitées par le navigateur, par l’extension ou sont désactivées.
+
{{WebExtAPIRef("tabs.ZoomSettingsScope")}}
+
Définit si les modifications de zoom persisteront pour l’origine de la page ou ne prendront effet que dans cet onglet.
+
{{WebExtAPIRef("tabs.ZoomSettings")}}
+
Définit les paramètres de zoom {{WebExtAPIRef("tabs.ZoomSettingsMode", "mode")}}, {{WebExtAPIRef("tabs.ZoomSettingsScope", "scope")}}, et le facteur de zoom par défaut.
+
+ +

Propriétés

+ +
+
{{WebExtAPIRef("tabs.TAB_ID_NONE")}}
+
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 devtools).
+
+ +

Fonctions

+ +
+
{{WebExtAPIRef("tabs.captureTab()")}}
+
Crée un URI de données codant une image de la zone visible de l’onglet donné.
+
{{WebExtAPIRef("tabs.captureVisibleTab()")}}
+
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.
+
{{WebExtAPIRef("tabs.connect()")}}
+
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 popups ou les scripts de page d’options) et les scripts de contenu s’exécutant dans l’onglet spécifié.
+
{{WebExtAPIRef("tabs.create()")}}
+
Crée un nouvel onglet.
+
{{WebExtAPIRef("tabs.detectLanguage()")}}
+
Détecte la langue principale du contenu dans un onglet.
+
{{WebExtAPIRef("tabs.discard()")}}
+
Évince un ou plusieurs onglets.
+
{{WebExtAPIRef("tabs.duplicate()")}}
+
Duplique un onglet.
+
{{WebExtAPIRef("tabs.executeScript()")}}
+
Injecte du code JavaScript dans une page.
+
{{WebExtAPIRef("tabs.get()")}}
+
Obtient des détails sur l’onglet spécifié.
+
{{WebExtAPIRef("tabs.getAllInWindow()")}} {{deprecated_inline}}
+
Obtient des détails sur tous les onglets de la fenêtre spécifiée.
+
{{WebExtAPIRef("tabs.getCurrent()")}}
+
Obtient des informations sur l’onglet dans lequel ce script s’exécute, en tant qu’objet {{WebExtAPIRef("tabs.Tab")}}.
+
{{WebExtAPIRef("tabs.getSelected()")}} {{deprecated_inline}}
+
Obtient l’onglet sélectionné dans la fenêtre spécifiée. Deprecated: utilisez plutôt tabs.query({active: true}).
+
{{WebExtAPIRef("tabs.getZoom()")}}
+
Obtient le facteur de zoom actuel de l’onglet spécifié.
+
{{WebExtAPIRef("tabs.getZoomSettings()")}}
+
Obtient les paramètres de zoom actuels pour l’onglet spécifié.
+
{{WebExtAPIRef("tabs.goForward()")}}
+
Passez à la page suivante, si vous en avez une.
+
{{WebExtAPIRef("tabs.goBack()")}}
+
Retour à la page précédente, si elle est disponible.
+
{{WebExtAPIRef("tabs.hide()")}} {{experimental_inline}}
+
Masque un ou plusieurs onglets.
+
{{WebExtAPIRef("tabs.highlight()")}}
+
Met en évidence un ou plusieurs onglets.
+
{{WebExtAPIRef("tabs.insertCSS()")}}
+
Injecte CSS dans une page.
+
{{WebExtAPIRef("tabs.move()")}}
+
Déplace un ou plusieurs onglets vers une nouvelle position dans la même fenêtre ou vers une autre fenêtre.
+
{{WebExtApiRef("tabs.moveInSuccession()")}}
+
Modifie la relation de succession pour un groupe d’onglets.
+
{{WebExtAPIRef("tabs.print()")}}
+
Imprime le contenu de l’onglet actif.
+
{{WebExtAPIRef("tabs.printPreview()")}}
+
+
Ouvre l’aperçu avant impression pour l’onglet actif.
+
+
{{WebExtAPIRef("tabs.query()")}}
+
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.
+
{{WebExtAPIRef("tabs.reload()")}}
+
Recharge un onglet, en contournant éventuellement le cache web local.
+
{{WebExtAPIRef("tabs.remove()")}}
+
Ferme un ou plusieurs onglets.
+
{{WebExtAPIRef("tabs.removeCSS()")}}
+
Supprime d’une page CSS qui a été précédemment injectée en appelant {{WebExtAPIRef("tabs.insertCSS()")}}.
+
{{WebExtAPIRef("tabs.saveAsPDF()")}}
+
Enregistre la page en cours au format PDF.
+
{{WebExtAPIRef("tabs.sendMessage()")}}
+
Envoie un message unique au(x) script(s) de contenu dans l’onglet spécifié.
+
{{WebExtAPIRef("tabs.sendRequest()")}} {{deprecated_inline}}
+
Envoie une requête unique au(x) script(s) de contenu dans l’onglet spécifié. Déprécié : utilisez {{WebExtAPIRef("tabs.sendMessage()")}} à la place.
+
{{WebExtAPIRef("tabs.setZoom()")}}
+
Effectue un zoom sur l’onglet spécifié.
+
{{WebExtAPIRef("tabs.setZoomSettings()")}}
+
Définit les paramètres de zoom pour l’onglet spécifié.
+
{{WebExtAPIRef("tabs.show()")}} {{experimental_inline}}
+
Affiche un ou plusieurs onglets qui ont été {{WebExtAPIRef("tabs.hide()", "masqués")}}.
+
{{WebExtAPIRef("tabs.toggleReaderMode()")}}
+
Bascule en mode lecture pour l’onglet spécifié.
+
{{WebExtAPIRef("tabs.update()")}}
+
Charge une nouvelle URL dans l’onglet, ou modifie d’autres propriétés de l’onglet.
+
+ +

Évènements

+ +
+
{{WebExtAPIRef("tabs.onActivated")}}
+
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.
+
{{WebExtAPIRef("tabs.onActiveChanged")}} {{deprecated_inline}}
+
Est émis lorsque l’onglet sélectionné dans une fenêtre change. Déprécié : utilisez {{WebExtAPIRef("tabs.onActivated")}} à la place.
+
{{WebExtAPIRef("tabs.onAttached")}}
+
Est émis lorsqu’un onglet est attaché à une fenêtre, par exemple parce qu’il a été déplacé entre différentes fenêtres.
+
{{WebExtAPIRef("tabs.onCreated")}}
+
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.
+
{{WebExtAPIRef("tabs.onDetached")}}
+
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.
+
{{WebExtAPIRef("tabs.onHighlightChanged")}} {{deprecated_inline}}
+
Est émis lorsque les onglets en surbrillance ou sélectionnés dans une fenêtre changent. Déprécié : utilisez {{WebExtAPIRef("tabs.onHighlighted")}} à la place.
+
{{WebExtAPIRef("tabs.onHighlighted")}}
+
Est émis lorsque les onglets en surbrillance ou sélectionnés dans une fenêtre changent.
+
{{WebExtAPIRef("tabs.onMoved")}}
+
Est émis lorsqu’un onglet est déplacé dans une fenêtre.
+
{{WebExtAPIRef("tabs.onRemoved")}}
+
Est émis lorsqu’un onglet est fermé.
+
{{WebExtAPIRef("tabs.onReplaced")}}
+
Est émis lorsqu’un onglet est remplacé par un autre onglet en raison d’un prerendering.
+
{{WebExtAPIRef("tabs.onSelectionChanged")}} {{deprecated_inline}}
+
Est émis lorsque l’onglet sélectionné dans une fenêtre change. Déprécié : utilisez {{WebExtAPIRef("tabs.onActivated")}} à la place.
+
{{WebExtAPIRef("tabs.onUpdated")}}
+
Est émis lorsqu’un onglet est mis à jour.
+
{{WebExtAPIRef("tabs.onZoomChange")}}
+
Est émis lorsque le zoom dans un onglet est changé.
+
+ +

Compatibilité des navigateurs

+ + + +

{{Compat("webextensions.api.tabs")}}

+ +

{{WebExtExamples("h2")}}

+ +
Remerciements : + +

Cette API est basée sur l’API Chromium chrome.tabs. Cette documentation est dérivée de tabs.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Injecter du code CSS dans une page web.

+ +

Pour utiliser cette API vous devez avoir la permission "host permission" ou utiliser la permission "activeTab permission".

+ +

Vous ne pouvez injecter du CSS que dans des pages dont l'URL peut être exprimée en utilisant un motif de correspondance,  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.

+ +
+

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é.

+
+ +

Le CSS inséré peut être retiré à nouveau en appelant  {{WebExtAPIRef("tabs.removeCSS()")}}.

+ +

C'est une fonction asynchrone qui renvoie une Promise (sur Firefox seulement).

+ +

Syntaxe

+ +
var inserting = browser.tabs.insertCSS(
+  tabId,           // optional integer
+  details          // object
+)
+
+ +

Paramètres

+ +
+
tabId {{optional_inline}}
+
integer. L'ID de l'onglet dans lequel insérer le CSS. Par défaut à l'onglet actif de la fenêtre en cours.
+
details
+
Un objet décrivant le CSS à insérer. Il contient les propriétés suivantes :
+
+
+
allFrames{{optional_inline}}
+
boolean. Si true, le CSS sera injecté dans toutes les images de la page en cours. Si c'est false, CSS est seulement injecté dans le cadre supérieur. Par défaut à false.
+
code{{optional_inline}}
+
string. Code à injecter, sous la forme d'une chaîne de texte.
+
cssOrigin{{optional_inline}}
+
string. 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 la commande en cascade. Si cette option est omise, le CSS est ajouté en tant que feuille de style auteur.
+
file{{optional_inline}}
+
string. 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 : "/path/to/stylesheet.css".
+
frameId{{optional_inline}}
+
integer. Le cadre où le CSS doit être injecté. La valeur par défaut est 0 (l'image de niveau supérieur).
+
matchAboutBlank{{optional_inline}}
+
boolean. Sitrue, 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 à false.
+
runAt{{optional_inline}}
+
{{WebExtAPIRef('extensionTypes.RunAt')}}. Le plus tôt que le code sera injecté dans l'onglet. Par défaut à "document_idle".
+
+
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Exemples

+ +

Cet exemple s'insère dans l'onglet CSS actif qui provient d'une chaîne.

+ +
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);
+});
+ +

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 :

+ +
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);
+});
+ +

{{WebExtExamples}}

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.insertCSS")}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Déplace un ou plusieurs onglets vers une nouvelle position dans la même fenêtre ou vers une autre fenêtre.

+ +

Vous pouvez uniquement déplacer des onglets vers et à partir de fenêtres dont {{WebExtAPIRef('windows.WindowType', 'WindowType')}} est "normal".

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var moving = browser.tabs.move(
+  tabIds,              // integer or integer array
+  moveProperties       // object
+)
+
+ +

Paramètres

+ +
+
tabIds
+
integer ou array d'integer. ID du {{WebExtAPIRef('tabs.Tab', 'tab')}}à déplacer, ou un tableau d'ID d'onglet.
+
moveProperties
+
object. Un objet qui spécifie où déplacer le(s) onglet(s).
+
+
+
windowId{{optional_inline}}
+
integer. 'ID de la fenêtre dans laquelle vous souhaitez déplacer les onglet(s). Si vous omettez cela, chaque onglet de tabIds sera déplacé vers l' index dans sa fenêtre actuelle. Si vous incluez ceci, et tabIds contient plus d'un onglet, alors le premier onglet de tabIds sera déplacé vers l'index, et les autres onglets le suivront dans l'ordre donné dans tabIds.
+
index
+
integer. 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.
+
Si vous passez une valeur inférieure à -1, la fonction renvoie une erreur.
+
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).
+
+
+
+ +

Valeur retournée

+ +

Une Promise qui sera satisfaite avec un objet {{WebExtAPIRef('tabs.Tab')}} ou un tableau d'objets {{WebExtAPIRef('tabs.Tab')}}, 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.

+ +

Exemples

+ +

Déplacer le premier onglet de la fenêtre en cours vers la dernière position de la fenêtre en cours :

+ +
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);
+});
+ +

Déplacer tous les onglets servis via HTTP ou HTTPS depuis * .mozilla.org jusqu'à la fin de leur fenêtre :

+ +
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);
+});
+ +

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 :

+ +
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);
+});
+ +

{{WebExtExamples}}

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.move")}}

+ +
Remerciements : + +

Cette API est basée sur l’API chrome.tabs de Chromium. Cette documentation est dérivée de tabs.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +

{{AddonSidebar()}}

+ +

Modifie la relation de succession pour un groupe d'onglets.

+ +

Using the {{WebExtAPIRef('tabs')}} API, a tab can be assigned a successor 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 predecessor 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.

+ +

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 moving a tab (B) from its line of succession.

+ +

tabs.moveInSuccession() 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 not 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.

+ +

While the successor tab can be assigned with {{WebExtAPIRef('tabs.update()')}}, it is often desirable to use tabs.moveInSuccession() to change successors, even if only a single tab is having its successor assigned. The difference is that browser.tabs.moveInSuccession([a], b) moves tab a from its line of succession, so any predecessors of a will adopt a's previous successor; whereas if browser.tabs.update(a, {successorTabId: b}) is used instead, tab a may continue to be the successor of other tabs, which could be unexpected. Another advantage of tabs.moveInSuccession() 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.

+ +

Syntaxe

+ +
browser.tabs.moveInSuccession([1, 3, 5, 7, 2, 9], 4, {insert:true})
+ +

Paramètres

+ +
+
tabIds
+
array of integer. Un tableau  d'IDs. L'ordre des éléments dans le tableau définit la relation des onglets. Tout ID d'onglet invalide, ou l'ID d'onglet correspondant à des onglets qui ne sont pas dans la même fenêtre que tabId (ou le premier onglet du tableau, si  tabId est omis), sera ignoré - ils conserveront leurs successeurs et prédécesseurs actuels.
+
tabId {{optional_inline}}
+
integer. L'ID de l'onglet qui succédera au dernier onglet du tableau tabIds. Si cet ID est invalide ou {{WebExtAPIRef('tabs.TAB_ID_NONE')}}, le dernier onglet n'aura pas de successeur. Par défaut {{WebExtAPIRef('tabs.TAB_ID_NONE')}}.
+
options {{optional_inline}}
+
object.
+
+
+
append {{optional_inline}}
+
boolean. Détermine s'il faut déplacer les onglets dans les tabIds avant ou après tabId dans la succession. Si false, les onglets sont déplacés avant tabId, si true, les onglets sont déplacés après tabId. Par défaut à false.
+
insert {{optional_inline}}
+
boolean. Détermine s'il faut lier les prédécesseurs ou successeurs actuels (selon options.append) de tabIdà 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 options.append est false, le premier onglet du tableau est défini comme successeur de tout prédécesseur actuel de  tabId; Si options.append est true, le successeur actuel de tabId est défini comme le successeur du dernier onglet du tableau. La valeur par défaut est false.
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.moveInSuccession", 10)}}

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 +--- +
{{AddonSidebar()}}
+ +

Cet objet contient un booléen indiquant si l'onglet est muet et la raison du dernier changement d'état.

+ +

Type

+ +

Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :

+ +
+
extensionId{{optional_inline}}
+
string. 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.
+
muted
+
boolean. Si l'onglet est actuellement coupé. Équivalent à l'affichage de l'indicateur audio coupé.
+
reason{{optional_inline}}
+
{{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é.
+
+ +

Compatibilité du navigateur

+ + + + + +

{{Compat("webextensions.api.tabs.MutedInfo")}}

+ + + +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Spécifie la raison pour laquelle un onglet a été désactivé ou désactivé.

+ +

Type

+ +

Les valeurs de ce type sont des chaînes. Les valeurs possibles sont :

+ +
+
"capture"
+
La capture d'onglets a commencé, forçant un changement d'état muet.
+
"extension"
+
Une extension définit l'état muet. Si c'est la raison, extensionId dans {{WebExtAPIRef("tabs.mutedInfo")}} contiendra l'ID de l'extension responsable.
+
"user"
+
L'utilisateur définit l'état muet.
+
+ +

Compatibilité du navigateur

+ + + + + +

{{Compat("webextensions.api.tabs.MutedInfoReason")}}

+ + + +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Syntaxe

+ +
browser.tabs.onActivated.addListener(listener)
+browser.tabs.onActivated.removeListener(listener)
+browser.tabs.onActivated.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement
+
removeListener(listener)
+
 Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
activeInfo
+
object. ID de l'onglet qui a été activé, et ID de sa fenêtre.
+
+
+
+ +

Objets supplémentaires

+ +

activeInfo

+ +
+
previousTabId
+
integer. L'ID de l'onglet activé précédent, si cet onglet est encore ouvert.
+
tabId
+
integer. L'ID de l'onglet qui est devenu actif.
+
windowId
+
integer. L'ID de la fenêtre de l'onglet.
+
+ +

Exemples

+ +

Écouter et enregistrer les événements d'activation des onglets :

+ +
function handleActivated(activeInfo) {
+  console.log("Tab " + activeInfo.tabId +
+              " was activated");
+}
+
+browser.tabs.onActivated.addListener(handleActivated);
+ +

{{WebExtExamples}}

+ +

 

+ +
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.onActivated")}}

+ +

 

+ +
Remerciements : + +

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

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +
+

Cet événement est obsolète. Utilisez {{WebExtAPIRef("tabs.onActivated")}} à la place.

+
+ +

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.

+ +

Syntaxe

+ +
browser.tabs.onActiveChanged.addListener(listener)
+browser.tabs.onActiveChanged.removeListener(listener)
+browser.tabs.onActiveChanged.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement..
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoietrue s'il écoute, sinon false.
+
+ +
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
tabId
+
integer. L'ID de l'onglet qui est devenu actif.
+
+ +
+
selectInfo
+
object.
+
+
+
+ +

Objets supplémentaires

+ +

selectInfo

+ +
+
windowId
+
integer. L'ID de la fenêtre contenant l'onglet sélectionné.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.onActiveChanged")}}

+ +

+

Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+

+ + 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 +--- +
{{AddonSidebar()}}
+ +

Lancé lorsqu'un onglet est attaché à une fenêtre, par exemple parce qu'il a été déplacé entre les fenêtres.

+ +

Syntaxe

+ +
browser.tabs.onAttached.addListener(listener)
+browser.tabs.onAttached.removeListener(listener)
+browser.tabs.onAttached.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
CVérifiez si listener est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
tabId
+
integer. ID de l'onglet qui a été attaché à une nouvelle fenêtre..
+
+ +
+
attachInfo
+
object. ID de la nouvelle fenêtre, et index de l'onglet à l'intérieur.
+
+
+
+ +

Objets supplémentaires

+ +

attachInfo

+ +
+
newWindowId
+
integer. ID de la nouvelle fenêtre.
+
newPosition
+
integer. Position de l'index que l'onglet a dans la nouvelle fenêtre.
+
+ +

Exemples

+ +

Écoutez les événements attachés et consignez les informations :

+ +
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);
+ +

{{WebExtExamples}}

+ +

 

+ +
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.onAttached")}}

+ +

 

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Lancé lorsqu'un onglet est créé.

+ +

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.

+ +

Syntaxe

+ +
browser.tabs.onCreated.addListener(callback)
+browser.tabs.onCreated.removeListener(listener)
+browser.tabs.onCreated.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument de listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si le listener est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
tab
+
{{WebExtAPIRef('tabs.Tab')}}. Détails de l'onglet qui a été créé.
+
+
+
+ +

Examples

+ +

Consignez les ID des nouveaux onglets créés :

+ +
function handleCreated(tab) {
+  console.log(tab.id);
+}
+
+browser.tabs.onCreated.addListener(handleCreated);
+ +

{{WebExtExamples}}

+ +

 

+ +
+
+
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.onCreated")}}

+ +

 

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Lancé lorsqu'un onglet est détaché d'une fenêtre, par exemple parce qu'il est déplacé entre des fenêtres.

+ +

Syntaxe

+ +
browser.tabs.onDetached.addListener(listener)
+browser.tabs.onDetached.removeListener(listener)
+browser.tabs.onDetached.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument de listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si l'écouteur est enregistré pour cet événemen. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
tabId
+
integer. ID de l'onglet qui a été détaché.
+
+ +
+
detachInfo
+
object. ID de la fenêtre précédente et index de l'onglet à l'intérieur.
+
+
+
+ +

Objets supplémentaires

+ +

detachInfo

+ +
+
oldWindowId
+
integer. ID de la fenêtre précédente
+
oldPosition
+
integer. Position de l'index que l'onglet avait dans l'ancienne fenêtre.
+
+ +

Exemples

+ +

Ecoutez les événements de détachement et consignez les informations :

+ +
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);
+ +

{{WebExtExamples}}

+ +

 

+ +
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.onDetached")}}

+ +

 

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +
Cet événement est obsolète. Utilisez {{WebExtAPIRef("tabs.onHighlighted")}} à la place.
+ +

Lancé lorsque les onglets en surbrillance ou sélectionnés dans une fenêtre changent.

+ +

Syntaxe

+ +
browser.tabs.onHighlightChanged.addListener(listener)
+browser.tabs.onHighlightChanged.removeListener(listener)
+browser.tabs.onHighlightChanged.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie trues'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
selectInfo
+
object.
+
+
+
+ +

Objets supplémentaires

+ +

selectInfo

+ +
+
windowId
+
integer. La fenêtre dont les onglets ont changé.
+
tabIds
+
array d'integer. Tous les onglets en surbrillance dans la fenêtre.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.onHighlightChanged")}}

+ +

+

Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+

+ + 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 +--- +
{{AddonSidebar()}}
+ +

Lancé lorsque l'ensemble des onglets en surbrillance dans une fenêtre change

+ +

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")}}.

+ +

Syntaxe

+ +
browser.tabs.onHighlighted.addListener(listener)
+browser.tabs.onHighlighted.removeListener(listener)
+browser.tabs.onHighlighted.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener de l'écouteur est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
highlightInfo
+
object. ID(s) des onglets en surbrillance, et ID de leur fenêtre.
+
+
+
+ +

Objets supplémentaires

+ +

highlightInfo

+ +
+
windowId
+
integer. ID de la fenêtre dont les onglets ont changé.
+
tabIds
+
array d'integer. Identifiants des onglets en surbrillance dans la fenêtre
+
+ +

Exemples

+ +

Ecoutez les événements en surbrillance et consignez les ID des onglets mis en surbrillance

+ +
function handleHighlighted(highlightInfo) {
+  console.log("Highlighted tabs: " + highlightInfo.tabIds);
+}
+
+browser.tabs.onHighlighted.addListener(handleHighlighted);
+ +

{{WebExtExamples}}

+ +

 

+ +
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.onHighlighted")}}

+ +

 

+ +
Remerciements : + +

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

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Lancé lorsqu'un onglet est déplacé dans une fenêtre

+ +

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')}}.

+ +

Syntaxe

+ +
browser.tabs.onMoved.addListener(listener)
+browser.tabs.onMoved.removeListener(listener)
+browser.tabs.onMoved.hasListener(listener)
+
+ +

Les événements ont trois fonctions:

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener st l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si le listenerest enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
tabId
+
integer. ID de l'onglet déplacé par l'utilisateur.
+
+ +
+
moveInfo
+
object. Informations sur le déménagement.
+
+
+
+ +

Objets supplémentaires

+ +

moveInfo

+ +
+
windowId
+
integer. ID de la fenêtre de cet onglet.
+
fromIndex
+
integer. Index initial de cet onglet dans la fenêtre.
+
toIndex
+
integer. Index final de cet onglet dans la fenêtre
+
+ +

Exemples

+ +

Écouter et enregistrer les événements de déplacement :

+ +
function handleMoved(tabId, moveInfo) {
+  console.log("Tab " + tabId +
+              " moved from " + moveInfo.fromIndex +
+              " to " + moveInfo.toIndex);
+}
+
+browser.tabs.onMoved.addListener(handleMoved);
+ +

{{WebExtExamples}}

+ +
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.onMoved")}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Lancé quand un onglet est fermé.

+ +

Syntaxe

+ +
browser.tabs.onRemoved.addListener(callback)
+browser.tabs.onRemoved.removeListener(listener)
+browser.tabs.onRemoved.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
tabId
+
integer. ID de l'onglet qui s'est fermé.
+
+ +
+
removeInfo
+
object. L'ID de la fenêtre de l'onglet et un booléen indiquant si la fenêtre est également fermée.
+
+
+
+ +

Objets supplémentaires

+ +

removeInfo

+ +
+
windowId
+
integer. La fenêtre dont l'onglet est fermé.
+
isWindowClosing
+
boolean. true si l'onglet est fermé car sa fenêtre est en cours de fermeture.
+
+ +

Exemples

+ +

Écoutez les événements proches et consignez les informations :

+ +
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);
+ +

{{WebExtExamples}}

+ +
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.onRemoved")}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Lancé lorsqu'un onglet est remplacé par un autre en raison d'un prérendering ou d'un instantané.

+ +

Cet événement peut ne pas être pertinent ou pris en charge par des navigateurs autres que Chrome.

+ +

Syntaxe

+ +
browser.tabs.onReplaced.addListener(listener)
+browser.tabs.onReplaced.removeListener(listener)
+browser.tabs.onReplaced.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
addedTabId
+
integer. ID de l'onglet de remplacement.
+
+ +
+
removedTabId
+
integer. ID de l'onglet qui a été remplacé.
+
+
+
+ +

Exemples

+ +

Écoutez les événements de remplacement et consignez les informations associées :

+ +
function handleReplaced(addedTabId, removedTabId) {
+  console.log("New tab: " + addedTabId);
+  console.log("Old tab: " + removedTabId);
+}
+
+browser.tabs.onReplaced.addListener(handleReplaced);
+
+ +

{{WebExtExamples}}

+ +
+
+
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.onReplaced")}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +
Cet événement est obsolète. Utilisez {{WebExtAPIRef("tabs.onActivated")}} à la place.
+ +

Se déclenche lorsque l'onglet sélectionné dans une fenêtre change.

+ +

Syntaxe

+ +
browser.tabs.onSelectionChanged.addListener(listener)
+browser.tabs.onSelectionChanged.removeListener(listener)
+browser.tabs.onSelectionChanged.hasListener(listener)
+
+ +

Les événements ont trois fonctions:

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
 Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
tabId
+
integer. L'ID de l'onglet qui est devenu actif.
+
+ +
+
selectInfo
+
object.
+
+
+
+ +

Objets supplémentaires

+ +

selectInfo

+ +
+
windowId
+
integer. L'ID de la fenêtre dans laquelle l'onglet sélectionné a changé.
+
+ +

Compatibilité du navigateur

+ + + + + +

{{Compat("webextensions.api.tabs.onSelectionChanged")}}

+ + + +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +

C'est déclenché lorsqu'un onglet est mis à jour.

+ +

Lorsque l'utilisateur navigue vers une nouvelle URL dans un onglet, cela génère généralement plusieurs événements onUpdated au fur et à mesure que diverses propriétés de l'objet {{WebExtAPIRef("tabs.Tab")}} sont mises à jour. Ceci inclut l' url, mais aussi potentiellement le title et les propriétés favIconUrl. La propriété du  status passe par le "loading" et "complete".

+ +

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é pinned) et le muting ou le unmuting (qui met à jour les propriétés  audible et mutedInfo).

+ +

Vous pouvez filtrer cet événement, en le rendant uniquement valable pour les onglets dont les urls correspondent à des patterns 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.

+ +

Syntaxe

+ +
browser.tabs.onUpdated.addListener(listener[, extraParameters])
+browser.tabs.onUpdated.removeListener(listener)
+browser.tabs.onUpdated.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback[, extraParameters])
+
Ajoute un écouteur à cet événement
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants :

+ +
+
tabId
+
integer. ID de l'onglet qui a été mis à jour.
+
changeInfo
+
object. ontient les propriétés des propriétés de l'onglet qui ont été modifiées. Voir changeInfo ci-dessous.
+
tab
+
{{WebExtAPIRef('tabs.Tab')}}. Le nouvel état de l'onglet.
+
+
+
extraParameters{{optional_inline}}
+
+

object. 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.

+ +
+
urls
+
Array. Un tableau match patterns. Ne déclenchez l'événement que pour les onglets dont la propriété de l'url courante correspond à l'un des motifs.
+
properties
+
+

Array. 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 :

+ +
    +
  • "attention"
  • +
  • "audible"
  • +
  • "discarded"
  • +
  • "favIconUrl"
  • +
  • "hidden"
  • +
  • "isArticle"
  • +
  • "mutedInfo"
  • +
  • "pinned"
  • +
  • "sharingState"
  • +
  • "status"
  • +
  • "title"
  • +
+
+
tabId
+
Integer. Ne déclenchez cet événement que pour l'onglet identifié par cet ID.
+
windowId
+
Integer. N'activez cet événement que pour les onglets qui se trouvent actuellement dans la fenêtre identifiée par cet ID.
+
+
+
+ +

Objets supplémentaires

+ +

changeInfo

+ +

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")}}.

+ +
+
attention {{optional_inline}}
+
boolean. Indique si l'onglet attire l'attention. Par exemple, lorsque l'onglet affiche un dialogue modal, attention sera true.
+
audible{{optional_inline}}
+
boolean. Nouvel état audible de l'onglet.
+
discarded {{optional_inline}}
+
boolean. 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é.
+
favIconUrl{{optional_inline}}
+
string. Nouvelle URL de favicon de l'onglet.
+
mutedInfo{{optional_inline}}
+
{{WebExtAPIRef('tabs.MutedInfo')}}. Le nouvel état muet de l'onglet et la raison du changement.
+
pinned{{optional_inline}}
+
boolean. Nouvel état épinglé de l'onglet.
+
status{{optional_inline}}
+
string. Le statut de l'onglet. Peut être soit chargé ou complet.
+
title{{optional_inline}}
+
string. Le nouveau titre de l'onglet.
+
url{{optional_inline}}
+
string. L'URL de l'onglet s'il a changé.
+
+ +

Exemples

+ +

Écoutez et connectez toutes les informations de changement et nouvel état:

+ +
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);
+ +

Consigner les modifications dans les URL :

+ +
function handleUpdated(tabId, changeInfo, tabInfo) {
+  if (changeInfo.url) {
+    console.log("Tab: " + tabId +
+                " URL changed to " + changeInfo.url);
+  }
+}
+
+browser.tabs.onUpdated.addListener(handleUpdated);
+ +

Filtering examples

+ +

Le journal ne change que pour les onglets dont la propriété url est matched par "https://developer.mozilla.org/*" ou "https://twitter.com/mozdevnet":

+ +
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);
+ +

Le journal ne change que la propriété épinglée des onglets (c'est-à-dire les actions d'épinglage et de déblocage) :

+ +
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);
+ +

Combiner les deux filtres précédents : changements de journal seulement :

+ + + +
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);
+ +

Changements dans le journal seulement :

+ + + +
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);
+ +

{{WebExtExamples}}

+ +

 

+ +
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.onUpdated", 10)}}

+ +

 

+ +
Remerciements : + +

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

+
+ + + +

{{AddonSidebar}}

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 +--- +
{{AddonSidebar()}}
+ +

Envoyé lorsqu'un onglet est agrandi.

+ +

Syntaxe

+ +
browser.tabs.onZoomChange.addListener(listener)
+browser.tabs.onZoomChange.removeListener(listener)
+browser.tabs.onZoomChange.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener de l'écouteur est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
ZoomChangeInfo
+
object. Informations sur l'événement de zoom.
+
+
+
+ +

Objets supplémentaires

+ +

ZoomChangeInfo

+ +
+
tabId
+
integer. ID de l'onglet qui a été zoomé.
+
oldZoomFactor
+
number. Le facteur de zoom précédent.
+
newZoomFactor
+
number. Le nouveau facteur de zoom.
+
zoomSettings
+
{{WebExtAPIRef('tabs.ZoomSettings')}}. Paramètres de zoom pour l'onglet.
+
+ +

Exemples

+ +

Ecoutez les événements de zoom et consignez les informations :

+ +
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);
+ +

{{WebExtExamples}}

+ +

 

+ +
+
+ +

Compatibilité du navigateur

+ + + +

 

+ +

{{Compat("webextensions.api.tabs.onZoomChange")}}

+ +

 

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar}}
+ +

Le type tabs.PageSettings est utilisé pour contrôler le rendu d'un onglet au format PDF par la méthode  {{WebExtAPIRef("tabs.saveAsPDF()")}}.

+ +

Toutes ses propriétés sont facultatives.

+ +

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 :

+ + + +

Type

+ +

Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :

+ +
+
edgeBottom {{optional_inline}}
+
number. L'espacement entre le bas des pieds et le bord inférieur du papier (pouces). Par défaut : 0.
+
edgeLeft {{optional_inline}}
+
number. L'espacement entre l'en-tête / pied de page gauche et le bord gauche du papier (pouces). Par défaut : 0
+
edgeRight {{optional_inline}}
+
number. L'espacement entre l'en-tête / pied droit et le bord gauche du papier (pouces). Par défaut : 0.
+
edgeTop {{optional_inline}}
+
number. L'espacement entre le haut des en-têtes et le bord supérieur du papier (pouces). Par défaut : 0
+
footerCenter {{optional_inline}}
+
string. Le texte du pied de page central de la page. Défaut : ''.
+
footerLeft {{optional_inline}}
+
string. Le texte pour le pied gauche de la page. Par défaut :  '&PT'.
+
footerRight {{optional_inline}}
+
string. Le texte pour le pied droit de la page. Par défaut : '&D'.
+
headerCenter {{optional_inline}}
+
string. Le texte de l'en-tête du centre de la page. Défaut : ''.
+
headerLeft {{optional_inline}}
+
string. Le texte de l'en-tête gauche de la page. Par défaut : '&T'.
+
headerRight {{optional_inline}}
+
string. Le texte de l'en-tête de la page. Par défaut : '&U'.
+
marginBottom {{optional_inline}}
+
number. La marge entre le contenu de la page et le bord inférieur du papier (pouces). Par défaut : 0.5.
+
marginLeft {{optional_inline}}
+
number. La marge entre le contenu de la page et le bord gauche du papier (pouces). Par défaut : 0.5.
+
marginRight {{optional_inline}}
+
number. La marge entre le contenu de la page et le bord droit du papier (en pouces). Par défaut : 0.5.
+
marginTop {{optional_inline}}
+
number. La marge entre le contenu de la page et le bord supérieur du papier (pouces). Par défaut : 0.5.
+
orientation {{optional_inline}}
+
integer. Orientation de la page: 0 signifie "portrait", 1 signifie "paysage". Par défaut : 0.
+
paperHeight {{optional_inline}}
+
number. La hauteur du papier dans les unités de format papier. Par défaut : 11.0.
+
paperSizeUnit {{optional_inline}}
+
integer. L'unité de format de papier: 0 = pouces, 1 = millimètres. Par défaut : 0.
+
paperWidth {{optional_inline}}
+
number. La largeur du papier dans les unités de format papier. Par défaut : 8.5.
+
scaling {{optional_inline}}
+
number. Facteur d'échelle du contenu de la page. 1 signifie 100% ou taille normale. Par défaut : 1.
+
showBackgroundColors {{optional_inline}}
+
boolean. Si les couleurs d'arrière-plan de la page doivent être affichées. Par défaut : false.
+
showBackgroundImages {{optional_inline}}
+
boolean. Si les images d'arrière-plan de la page doivent être affichées. Par défaut : false.
+
shrinkToFit {{optional_inline}}
+
boolean. 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.
+
+ +

Compatibilité du navigateur

+ + + + + +

{{Compat("webextensions.api.tabs.PageSettings")}}

+ + + +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Syntaxe

+ +
browser.tabs.print()
+
+ +

Paramètres

+ +

None.

+ +

Valeur retournée

+ +

None.

+ +

Exemples

+ +

Dans cet exemple, un script d'arrière-plan écoute un clic sur une action navigateur, puis tente d'imprimer l'onglet actuellement actif :

+ +
browser.browserAction.onClicked.addListener(() => {
+  browser.tabs.print();
+});
+
+ +

{{WebExtExamples}}

+ + + +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.print")}}

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 +--- +
{{AddonSidebar()}}
+ +
Ouvre l'aperçu avant impression pour l'onglet actif.
+ +
+ +
C'est une fonction asynchrone qui renvoie une Promise.
+ +
+ +
Une extension peut détecter lorsque l'aperçu d'impression a été fermé en écoutant l'événement afterprint :
+ +
+ +
+
window.addEventListener("afterprint", resumeFunction, false);
+
+ +

Syntaxe

+ +
var openingPreview = browser.tabs.printPreview()
+
+ +

Paramètres

+ +

None.

+ +

Valeur retournée

+ +

Une Promise qui sera remplie sans argument lorsque la page d'aperçu est ouverte.

+ +

Exemples

+ +

Dans cet exemple, un script d'arrière-plan écoute un clic sur une action de navigateur, puis ouvre l'aperçu avant impression pour l'onglet actuellement actif :

+ +
browser.browserAction.onClicked.addListener(() => {
+  browser.tabs.printPreview()
+    .then(() => {
+      console.log("Entered print preview");
+    });
+});
+
+ +

{{WebExtExamples}}

+ +

Compatibilité du navigateur

+ + + + + +

{{Compat("webextensions.api.tabs.printPreview")}}

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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var querying = browser.tabs.query(
+  queryInfo             // object
+)
+
+ +

Paramètres

+ +
+
queryInfo
+
object. La fonction query() 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")}}.
+
+
+
active{{optional_inline}}
+
boolean. Si les onglets sont actifs dans leurs fenêtres.
+
audible{{optional_inline}}
+
boolean. Si les onglets sont audibles.
+
autoDiscardable{{optional_inline}}
+
boolean. Si les onglets peuvent être supprimés automatiquement par le navigateur lorsque les ressources sont faibles.
+
cookieStoreId {{optional_inline}}
+
string. Utilisez cette option pour renvoyer uniquement les onglets dont l'ID est cookieStoreId. Cette option n'est disponible que si l'extension à la  permission "cookies"
+
currentWindow{{optional_inline}}
+
boolean. Si les onglets sont dans la fenêtre actuelle.
+
discarded{{optional_inline}}
+
boolean. 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é.***
+
hidden{{optional_inline}}
+
boolean. Si les onglets sont cachés.
+
highlighted{{optional_inline}}
+
boolean. Si les onglets sont en surbrillance.
+
index{{optional_inline}}
+
integer. La position des onglets dans leurs fenêtres.
+
muted{{optional_inline}}
+
boolean. Si les onglets sont en sourdine.
+
lastFocusedWindow{{optional_inline}}
+
boolean. Si les onglets sont dans la dernière fenêtre focalisée.
+
openerTabId{{optional_inline}}
+
integer. L'ID de l'onglet qui a ouvert cet onglet.
+
pinned{{optional_inline}}
+
boolean. Si les onglets sont épinglés.
+
status{{optional_inline}}
+
{{WebExtAPIRef('tabs.TabStatus')}}. Si les onglets ont terminé le chargement.
+
title{{optional_inline}}
+
string. Faites correspondre les titres de page à un motif.
+
url{{optional_inline}}
+
string ou array de string. Faites correspondre les onglets avec un ou plusieurs modèle de correspondance. Notez que les identificateurs de fragment ne sont pas appariés.
+
windowId{{optional_inline}}
+
integer. L'ID de la fenêtre parente, ou  {{WebExtAPIRef('windows.WINDOW_ID_CURRENT')}} pour la fenêtre en cours.
+
windowType{{optional_inline}}
+
{{WebExtAPIRef('tabs.WindowType')}}. Le type de fenêtre dans lequel les onglets y  sont.
+
+
+
+ +

Valeur retournée

+ +

Une Promise qui sera remplie avec un tableau d'objets {{WebExtAPIRef('tabs.Tab')}}, contenant des informations sur chaque onglet correspondant. Si une erreur se produit, la promesse sera rejetée avec un message d'erreur.

+ +

Exemples

+ +

Obtenez tous les onglets :

+ +
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);
+ +

Obtenez tous les onglets dans la fenêtre actuelle :

+ +
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);
+ +

Obtenez l'onglet actif dans la fenêtre actuelle :

+ +
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);
+ +

Obtenez des onglets pour toutes les URL HTTP et HTTPS sous "mozilla.org" ou l'un de ses sous-domaines :

+ +
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);
+ +

{{WebExtExamples}}

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.query")}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Rechargez un onglet, en contournant éventuellement le cache Web local.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var reloading = browser.tabs.reload(
+  tabId,            // optional integer
+  reloadProperties  // optional object
+)
+
+ +

Paramètres

+ +
+
tabId{{optional_inline}}
+
integer. L'ID de l'onglet à recharger. Par défaut à l'onglet sélectionné de la fenêtre en cours.
+
reloadProperties{{optional_inline}}
+
object. +
+
bypassCache{{optional_inline}}
+
boolean. Contourner le cache web local. La valeur par défaut est false.
+
+
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Exemples

+ +

Recharger l'onglet actif de la fenêtre en cours :

+ +
browser.tabs.reload();
+ +

Rechargez l'onglet actif de la fenêtre en cours, en ignorant le cache :

+ +
browser.tabs.reload({bypassCache: true});
+ +

Rechargez l'onglet dont l'ID est 2, en ignorant le cache et en appelant un rappel lorsque vous avez terminé :

+ +
function onReloaded() {
+  console.log(`Reloaded`);
+}
+
+function onError(error) {
+  console.log(`Error: ${error}`);
+}
+
+var reloading = browser.tabs.reload(2, {bypassCache: true});
+reloading.then(onReloaded, onError);
+ +

{{WebExtExamples}}

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.reload")}}

+ +
Remerciements : + +

Cette API est basée sur l’API chrome.tabs de Chromium. Cette documentation est dérivée de tabs.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Ferme un ou plusieurs onglets.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var removing = browser.tabs.remove(
+  tabIds          // integer or integer array
+)
+
+ +

Paramètres

+ +
+
tabIds
+
integer or array of integer. Les identifiants de l'onglet ou des onglets à fermer.
+
+ +

Valeur retournée

+ +

Une Promise qui sera remplie sans arguments lorsque tous les onglets spécifiés ont été supprimés ou que leurs invites beforeunload ont été traitées. Si une erreur se produit, la promesse sera rejetée avec un message d'erreur.

+ +

Exemples

+ +

Fermer un seul onglet :

+ +
function onRemoved() {
+  console.log(`Removed`);
+}
+
+function onError(error) {
+  console.log(`Error: ${error}`);
+}
+
+var removing = browser.tabs.remove(2);
+removing.then(onRemoved, onError);
+ +

Fermer plusieurs onglets :

+ +
function onRemoved() {
+  console.log(`Removed`);
+}
+
+function onError(error) {
+  console.log(`Error: ${error}`);
+}
+
+var removing = browser.tabs.remove([15, 14, 1]);
+removing.then(onRemoved, onError);
+ +

{{WebExtExamples}}

+ + + +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.remove")}}

+ + + +
Remerciements : + +

Cette API est basée sur l’API chrome.tabs de Chromium. Cette documentation est dérivée de tabs.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Supprime d'une page CSS précédemment injectée par un appel à {{WebExtAPIRef("tabs.insertCSS()")}}.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var removing = browser.tabs.removeCSS(
+  tabId,           // optional integer
+  details          // object
+)
+
+ +

Paramètres

+ +
+
tabId {{optional_inline}}
+
integer. L'ID de l'onglet à partir duquel supprimer le CSS. Par défaut à l'onglet actif de la fenêtre en cours.
+
details
+
Un objet décrivant le CSS à retirer de la page. Il contient les propriétés suivantes : +
+
+
allFrames{{optional_inline}}
+
boolean. si true, le code sera supprimé de toutes les images de la page en cours. si c'est false, le code est seulement retiré du cadre supérieur. Par défaut à false.
+
code{{optional_inline}}
+
string. 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()")}}.
+
cssOrigin{{optional_inline}}
+
string. 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.
+
file{{optional_inline}}
+
string. 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()")}}.
+
frameId{{optional_inline}}
+
integer. Le cadre à partir duquel supprimer le CSS. La valeur par défaut est 0 (l'image de niveau supérieur).
+
matchAboutBlank{{optional_inline}}
+
boolean. si true, 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 à false.
+
+
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Exemples

+ +

Cet exemple ajoute du code CSS en utilisant {{WebExtAPIRef("tabs.insertCSS")}}, puis le supprime à nouveau lorsque l'utilisateur clique sur une action du navigateur :

+ +
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);
+});
+ +

{{WebExtExamples}}

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.removeCSS")}}

+ +
Remerciements : + +

Cette API est basée sur l’API chrome.tabs de Chromium. Cette documentation est dérivée de tabs.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var saving = browser.tabs.saveAsPDF(
+  pageSettings   // object
+)
+
+ +

Paramètres

+ +
+
pageSettings
+
object. 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")}}.
+
+ +

Valeur retournée

+ +

Une Promise 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 :

+ + + +

Exemples

+ +

Dans cet exemple, un script d'arrière-plan écoute un clic sur une action du navigateur, puis tente d'enregistrer l'onglet actif en tant que fichier PDF, puis enregistre le résultat:

+ +
browser.browserAction.onClicked.addListener(() => {
+  browser.tabs.saveAsPDF({})
+    .then((status) => {
+      console.log(status);
+    });
+});
+ + + +

Compatibilité du navigateur

+ + + + + + + +

{{Compat("webextensions.api.tabs.saveAsPDF")}}

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 +--- +
{{AddonSidebar()}}
+ +
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 script de contenu concerné par l'extension et qui s'execute dans l'onglet spécifié.
+ +
Ce message sera reçu dans script de contenu par n'importe quel gestionnaire d'évènements à l'écoute de l'évènement
+ +

{{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 sendResponse.

+ +

Il s'agit d'une fonction asynchrone qui renvoit un objet Promise.

+ +
+

Vous pouvez également utiliser une approche basée sur la connexion pour échanger des messages.

+
+ + + +

Syntaxe

+ +
var sending = browser.tabs.sendMessage(
+  tabId,                   // integer
+  message,                 // any
+  options                  // optional object
+)
+
+ +

Paramètres

+ +
+
tabId
+
integer. ID de l'onglet qui contient le script de contenu auquel on veut envoyer un message.
+
message
+
any. Un objet qui peut être sérialisé en JSON.
+
options{{optional_inline}}
+
object.
+
+
+
frameId{{optional_inline}}
+
integer.  Envoie le message à un cadre (iframe) spécifique identifiée par frameId 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 all_frames dans la section  content_scripts de manifest.json.
+
+
+
+ +

Valeur renvoyée

+ +

Un objet Promise 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

+ +

Exemples

+ +

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:

+ +
// 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);
+});
+ +

Voici le script de contenu associé:

+ +
// 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"});
+});
+ +

{{WebExtExamples}}

+ +

Compatiblité des navigateurs

+ + + +

{{Compat("webextensions.api.tabs.sendMessage")}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +
+

Cette méthode a été dépréciée. Utilisez {{WebExtAPIRef("tabs.sendMessage()")}} à la place.

+
+ +

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.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var sending = browser.tabs.sendRequest(
+  tabId,                   // integer
+  request                  // any
+)
+
+ +

Paramètres

+ +
+
tabId
+
integer.
+
request
+
any.
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Compatibilité du navigateur

+ + + + + +

{{Compat("webextensions.api.tabs.sendRequest")}}

+ + + +
Remerciements : + +

Cette API est basée sur l’API chrome.tabs de Chromium. Cette documentation est dérivée de tabs.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Effectue un zoom sur l'onglet spécifié.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var zooming = browser.tabs.setZoom(
+  tabId,           // optional integer
+  zoomFactor       // number
+)
+
+ +

Paramètres

+ +
+
tabId{{optional_inline}}
+
integer. L'ID de l'onglet à zoomer. Par défaut à l'onglet actif de la fenêtre en cours.
+
zoomFactor
+
number. 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.
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Exemples

+ +

Set the zoom factor for the current tab to 2:

+ +
function onError(error) {
+  console.log(`Error: ${error}`);
+}
+
+var setting = browser.tabs.setZoom(2);
+setting.then(null, onError);
+ +

Set the zoom factor for the tab whose ID is 16 tab to 0.5:

+ +
function onError(error) {
+  console.log(`Error: ${error}`);
+}
+
+var setting = browser.tabs.setZoom(16, 0.5);
+setting.then(null, onError);
+ +

{{WebExtExamples}}

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.setZoom")}}

+ +
Remerciements : + +

Cette API est basée sur l’API chrome.tabs de Chromium. Cette documentation est dérivée de tabs.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var settingZoomSettings = browser.tabs.setZoomSettings(
+  tabId,           // optional integer
+  zoomSettings     // ZoomSettings
+)
+
+ +

Paramètres

+ +
+
tabId{{optional_inline}}
+
integer. 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.
+
zoomSettings
+
{{WebExtAPIRef('tabs.ZoomSettings')}}. Définit comment les modifications de zoom sont gérées et à quelle portée.
+
+ +

Valeur retournée

+ +

une Promise 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.

+ +

Exemples

+ +

Désactiver le zoom pour l'onglet actuel :

+ +
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);
+ +

{{WebExtExamples}}

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.setZoomSettings")}}

+ +
Remerciements : + +

Cette API est basée sur l’API chrome.tabs de Chromium. Cette documentation est dérivée de tabs.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Affiche un ou plusieurs onglets précédemment masqués par un appel à {{WebExtAPIRef("tabs.hide")}}.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var showing = browser.tabs.show(
+  tabIds          // integer or integer array
+)
+
+ +

Paramètres

+ +
+
tabIds
+
integer or array of integer. Les ID de l'onglet ou des onglets à afficher.
+
+ +

Valeur retournée

+ +

Une Promise qui sera accomplie sans arguments. Si une erreur se produit, la promesse sera rejetée avec un message d'erreur.

+ +

Exemples

+ +

Afficher un seul onglet :

+ +
function onShown() {
+  console.log(`Shown`);
+}
+
+function onError(error) {
+  console.log(`Error: ${error}`);
+}
+
+browser.tabs.show(2).then(onShown, onError);
+ +

Afficher plusieurs onglets :

+ +
function onShown() {
+  console.log(`Shown`);
+}
+
+function onError(error) {
+  console.log(`Error: ${error}`);
+}
+
+browser.tabs.show([15, 14, 1]).then(onShown, onError);
+ +

{{WebExtExamples}}

+ + + +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.show")}}

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 +--- +
{{AddonSidebar()}}
+ +

Le type tabs.Tab 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.

+ +

Type

+ +

Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :

+ +
+
active
+
boolean. 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.
+
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.
+
attention {{optional_inline}}
+
boolean. Indique si l'onglet attire l'attention. Par exemple, lorsque l'onglet affiche un dialogue modal, attention sera à true.
+
audible {{optional_inline}}
+
boolean. 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.
+
autoDiscardable {{optional_inline}}
+
boolean. Si l'onglet peut être supprimé automatiquement par le navigateur lorsque les ressources sont faibles.
+
cookieStoreId {{optional_inline}}
+
string. 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'identitié contextuelle), vous pouvez passer cette option storeId 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 permission "cookies".
+
discarded {{optional_inline}}
+
boolean. 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é.
+
favIconUrl {{optional_inline}}
+
string. L'URL de la favicon de l'onglet. Seulement présent si l'extension a la permission "tabs". Il peut également s'agir d'une chaîne vide si l'onglet est en cours de chargement.
+
height {{optional_inline}}
+
integer. La hauteur de l'onglet en pixels.
+
hidden
+
boolean. Si l'onglet est caché.
+
highlighted
+
boolean. 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 Ctrl, Shift ou ⌘ Command .
+
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  browser.tabs.multiselect (activé par défaut).
+
id {{optional_inline}}
+
integer. 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).
+
incognito
+
boolean. Si l'onglet est dans une fenêtre de navigation privée.
+
index
+
integer. L'indice de base zéro de l'onglet dans sa fenêtre.
+
isArticle
+
boolean. Vrai si l'onglet peut être rendu en mode lecteur, sinon faux.
+
isInReaderMode
+
boolean. Vrai si l'onglet en cours de rendu en mode lecteur, sinon faux.
+
lastAccessed
+
double. Heure à laquelle l'onglet a été accédé pour la dernière fois, en millisecondes depuis l'époque.
+
mutedInfo {{optional_inline}}
+
{{WebExtAPIRef('tabs.MutedInfo')}}. L'état en sourdine actuel pour l'onglet et la raison du dernier changement d'état.
+
openerTabId {{optional_inline}}
+
integer. 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.
+
pinned
+
boolean. Si l'onglet est épinglé.
+
selected {{deprecated_inline}}
+
boolean. Si l'onglet est sélectionné. Cette propriété a été remplacée par active et highlighted.
+
sessionId {{optional_inline}}
+
string. L'identifiant de session utilisé pour identifier de façon unique un onglet  obtenu à partir de l'API {{WebExtAPIRef('sessions')}}.
+
status {{optional_inline}}
+
string. Soit charger ou compléter.
+
successorId {{optional_inline}}
+
integer L'ID du successeur de l'onglet.
+
title {{optional_inline}}
+
string. Le titre de l'onglet. Seulement présent si l'extension à la permission "tabs".
+
url {{optional_inline}}
+
string. L'URL du document que l'onglet affiche. Seulement présent si l'extension à la permission "tabs".
+
width {{optional_inline}}
+
integer. La largeur de l'onglet en pixels
+
windowId
+
integer. L'ID de la fenêtre qui héberge cet onglet.**
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.Tab", 10)}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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).

+ +

Compatibilité du navigateur

+ + + + + +

{{Compat("webextensions.api.tabs.TAB_ID_NONE")}}

+ + + +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Indique si l'onglet a terminé le chargement.

+ +

Type

+ +

Les valeurs de ce type sont des chaînes. Les valeurs possibles sont : "loading" et "complete".

+ +

Compatibilité du navigateur

+ + + + + +

{{Compat("webextensions.api.tabs.TabStatus")}}

+ + + +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Bascule en mode Lecteur pour l'onglet donné.

+ + + +

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é.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

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 :

+ + + +

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é isArticle de {{WebExtAPIRef("tabs.Tab")}}.

+ +

Pour savoir si un onglet est déjà en mode Lecteur, vérifiez la propriété  isInReaderMode 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 isInReaderMode change :

+ +
function handleUpdated(tabId, changeInfo, tabInfo) {
+  if (changeInfo.status === "complete") {
+    console.log(`Tab ${tabId} reader mode: ${tabInfo.isInReaderMode}`);
+  }
+}
+
+browser.tabs.onUpdated.addListener(handleUpdated);
+ +

Syntaxe

+ +
var toggling = browser.tabs.toggleReaderMode(
+  tabId            // optional integer
+)
+
+ +

Paramètres

+ +
+
tabId{{optional_inline}}
+
integer. L'ID de l'onglet à afficher en mode Lecteur. Par défaut à l'onglet sélectionné de la fenêtre en cours.
+
+ +

Valeur retournée

+ +

Une Promise 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..

+ +

Exemples

+ +

Ce code bascule chaque nouvelle page en mode lecteur, si cette page est éligible pour cela :

+ +
function switchToReaderMode(tabId, changeInfo, tabInfo) {
+  if (changeInfo.isArticle) {
+    browser.tabs.toggleReaderMode(tabId);
+  }
+}
+
+browser.tabs.onUpdated.addListener(switchToReaderMode);
+ +

{{WebExtExamples}}

+ +

 

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.toggleReaderMode")}}

+ +

 

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 +--- +
{{AddonSidebar()}}
+ +

Parcourez l'onglet vers une nouvelle URL ou modifiez d'autres propriétés de l'onglet.

+ +

Pour utiliser cette fonction, transmettez l'ID de l'onglet à mettre à jour et un objet updateProperties contenant les propriétés que vous souhaitez mettre à jour. Les propriétés qui ne sont pas spécifiées dans  updateProperties ne sont pas modifiées.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var updating = browser.tabs.update(
+  tabId,              // optional integer
+  updateProperties    // object
+)
+
+ +

Paramètres

+ +
+
tabId{{optional_inline}}
+
integer. Par défaut à l'onglet sélectionné de la fenêtre en cours.
+
updateProperties
+
object. 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")}}.
+
+
+
active{{optional_inline}}
+
boolean. Si l'onglet doit devenir actif. Ne modifie pas le focus de la fenêtre (voir {{WebExtAPIRef('windows.update')}}). Si true, les onglets surlignés non actifs cesseront d'être surlignés. Si false, ne fait rien.
+
autoDiscardable{{optional_inline}}
+
boolean. Si l'onglet doit être supprimé automatiquement par le navigateur lorsque les ressources sont faibles.
+
highlighted{{optional_inline}}
+
boolean. Ajoute ou supprime l'onglet de la sélection courante. Si true et que l'onglet n'est pas surligné, il deviendra actif par défaut.
+
+

Si vous voulez seulement mettre en surbrillance l'onglet sans l'activer, Firefox accepte le réglage highlighted à true et active à false. D'autres navigateurs peuvent activer l'onglet même dans ce cas.

+
+
loadReplace{{optional_inline}}
+
+

boolean. Si la nouvelle URL doit remplacer l'ancienne URL dans l'historique de navigation de l'onglet, accessible via le bouton "Retour".

+ +

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 loadReplace, le bouton "retour" sera activé et ramènera l'utilisateur à "about:newtab". Si l'extension définit loadReplace, 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.

+ +

Notez cependant que l'URL d'origine apparaîtra toujours dans l'historique global du navigateur.

+
+
muted{{optional_inline}}
+
boolean. Si l'onglet doit être coupé.
+
openerTabId{{optional_inline}}
+
integer. 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.
+
pinned{{optional_inline}}
+
boolean. Si l'onglet doit être épinglé.
+
selected {{deprecated_inline}} {{optional_inline}}
+
boolean. Si l'onglet doit être sélectionné. Cette propriété a été remplacée par active et highlighted.
+
successorTabId {{optional_inline}}
+
integer. L'identifiant de l'ID du successeur de l'onglet.
+
url{{optional_inline}}
+
string. Une URL pour naviguer dans l'onglet. 
+
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 :
+
+
    +
  • chrome: URLs
  • +
  • javascript: URLs
  • +
  • data: URLs
  • +
  • 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)
  • +
  • confidentiel : URLs (par exemle, about:config, about:addons, about:debugging, about:newtab) . Les URL non privilégiées (par exemple, about:blank) sont autorisées.
  • +
+ 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.
+
+
+
+ +

Valeur retournée

+ +

A Promise 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' url, title et favIconUrl sauf si la permission "tabs" 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.

+ +

Exemples

+ +

Naviguez dans l'onglet actif de la fenêtre en cours pour https://developer.mozilla.org :

+ +
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);
+ +

Activez le premier onglet de la fenêtre actuelle et naviguez jusqu'à https://developer.mozilla.org:

+ +
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);
+ +

{{WebExtExamples}}

+ + + +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.tabs.update", 10)}}

+ + + +
Remerciements : + +

Cette API est basée sur l’API chrome.tabs de Chromium. Cette documentation est dérivée de tabs.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Le type de fenêtre qui héberge cet onglet.

+ +

Type

+ +

Les valeurs de ce type sont des chaînes. Les valeurs possibles sont:

+ + + +

Compatibilité du navigateur

+ + + + + +

{{Compat("webextensions.api.tabs.WindowType")}}

+ + + +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Type

+ +

Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :

+ +
+
defaultZoomFactor{{optional_inline}}
+
number. Le niveau de zoom par défaut pour l'onglet actuel. Notez que ceci n'est utilisé que dans {{WebExtAPIRef("tabs.getZoomSettings")}}.
+
mode{{optional_inline}}
+
{{WebExtAPIRef('tabs.ZoomSettingsMode')}}. Définit si les modifications de zoom sont gérées par le navigateur, par l'extension ou désactivées.
+
scope{{optional_inline}}
+
{{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.
+
+ +

Compatibilité du navigateur

+ + + + + +

{{Compat("webextensions.api.tabs.ZoomSettings")}}

+ + + +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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".

+ +

Type

+ +

Les valeurs de ce type sont des chaînes. Les valeurs possibles sont :

+ +
+
"automatic"
+
Les modifications de zoom sont gérées normalement par le navigateur.
+
"disabled"
+
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.
+
"manual"
+
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 per-origin : il ignore la portée {{WebExtAPIRef("tabs.zoomSettings", "zoom setting")}} et utilise toujours la fonction per-tab.
+
+ +

Compatibilité du navigateur

+ + + + + +

{{Compat("webextensions.api.tabs.ZoomSettingsMode")}}

+ + + +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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 à per-origin lorsque   {{WebExtAPIRef("tabs.zoomSettingsMode")}} est "automatique", et est toujours per-tab.

+ +

Type

+ +

Les valeurs de ce type sont des chaînes. Les valeurs possibles sont :

+ +
+
"per-origin"
+
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".
+
"per-tab"
+
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 per-tab ont réinitialisés lors de la navigation ; la navigation dans un onglet charge toujours les pages avec per-origin de zoom d'origine.
+
+ +

Compatibilité du navigateur

+ + + + + +

{{Compat("webextensions.api.tabs.ZoomSettingsScope")}}

+ + + +

{{WebExtExamples}}

+ +
Remerciements : + +

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

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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 propriétés de la couleur.

+ +

Il s'agit d'une fonction asynchrone qui renvoie un objet Promise.

+ +

Syntaxe

+ +
var getting = browser.theme.getCurrent(
+  windowId    // integer
+)
+
+ +

Paramètres

+ +
+
windowId {{optional_inline}}
+
integer. 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é.
+
+ +

Valeur retournée

+ +

Un objet Promise. 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.theme.getCurrent", 10)}}

+ +

Exemples

+ +

Obtient les propriétés des couleurs accentcolor et toolbar dans le thème actuel.

+ +
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();
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar}}
+ +

Permet aux extensions du navigateur de mettre à jour le thème du navigateur.

+ +

Pour utiliser cette API, une extension doit demander la permission "theme" dans son fichier manifest.json.

+ +
+

Note:  quand on met un thème en arrière plan, on doit déclarer la permission 'theme' et on ne peut pas utiliser la fonction theme du manifest, puisque ce n'est pas compatible.

+
+ +

Types

+ +
+
{{WebExtAPIRef("theme.Theme")}}
+
Représente le contenu d'un thème.
+
+ +

Fonctions

+ +
+
{{WebExtAPIRef("theme.getCurrent()")}}
+
Retourne le thème actuel du navigateur.
+
{{WebExtAPIRef("theme.update()")}}
+
Met à jour à le thème du navigateur.
+
{{WebExtAPIRef("theme.reset()")}}
+
Supprime les mises à jour de thèmes effectuées lors d'un appel à {{WebExtAPIRef("theme.update()")}}.
+
+ +

Evénements

+ +
+
{{WebExtAPIRef("theme.onUpdated")}}
+
Emis quand le thème du navigateur change.
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.theme")}}

+ +

{{WebExtExamples("h2")}}

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 +--- +
{{AddonSidebar()}}
+ +

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 :

+ + + +

Notez que cet événement n'est pas déclenché pour les thèmes intégrés.

+ +

Syntaxe

+ +
browser.theme.onUpdated.addListener(listener)
+browser.theme.onUpdated.removeListener(listener)
+browser.theme.onUpdated.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(listener)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrête d'écouter cet événement. L'argument de listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifie si listener est enregistré pour cet événement. Retourne true s'il écoute, sinon  false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les paramètres suivants :

+ +
+
updateInfo
+
+

object. Un objet contenant deux propriétés :

+ +
+
theme
+
object. 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é.
+
windowId{{optional_inline}}
+
integer. 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.
+
+
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.theme.onUpdated", 10)}}

+ +

Exemples

+ +
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);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Réinitialise tout thème appliqué à l'aide de la méthode {{WebExtAPIRef("theme.update()")}}

+ +

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 bug 1415267).

+ +

Syntaxe

+ +
browser.theme.reset( windowsId // integer )
+
+ +

Paramètres

+ +
+
windowId {{optional_inline}}
+
integer. 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.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.theme.reset")}}

+ +

Exemples

+ +

Ce code applique un thème, puis le supprime lorsque l'utilisateur clique sur une action du navigateur:

+ +
browser.theme.update(themes.night);
+
+browser.browserAction.onClicked.addListener(() => {
+  browser.theme.reset();
+});
+ +

{{WebExtExamples}}

+ + 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 +--- +
{{AddonSidebar()}}
+ +

Un objet thème représente la spécification d'un thème.

+ +

Type

+ +

Un object JSON qui prend les mêmes propriétés que la clé du manifest "theme".

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.theme.Theme")}}

+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Met à jour le thème du navigateur en fonction du contenu de l'objet {{WebExtAPIRef("theme.Theme", "Theme")}} donné.

+ +

Syntaxe

+ +
browser.theme.update(
+  windowId,    // integer
+  theme        // object
+)
+
+ +

Paramètres

+ +
+
windowId {{optional_inline}}
+
integer. 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.
+
+ +
+
theme
+
object. Un objet {{WebExtAPIRef("theme.Theme", "Theme")}} spécifiant des valeurs pour les éléments de l'interface utilisateur que vous voulez modifier
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.theme.update", 10)}}

+ +

Exemples

+ +

Définit le thème du navigateur pour utiliser un graphique solaire avec une couleur de fond complémentaire:

+ +
const suntheme = {
+ images: {
+   headerURL: 'sun.jpg',
+ },
+ colors: {
+   accentcolor: '#CF723F',
+   textcolor: '#111',
+ }
+};
+
+browser.theme.update(suntheme);
+ +

Définissez le thème uniquement pour la fenêtre actuellement ciblée:

+ +
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);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Obtient un tableau contenant des informations sur les pages que l'utilisateur a visitées souvent et récemment.

+ +

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".

+ +

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.

+ +

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.

+ +

L'API topSites.get() 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.

+ +

Il s'agit d'une fonction asynchrone qui renvoie une Promise.

+ +

Pour utiliser l'API topSites, vous devez avoir la permission de l'API "topSites"

+ +

Syntaxe

+ +
var gettingTopSites = browser.topSites.get()
+
+ +

Paramètres

+ +
+
options
+
object. Options pour modifier la liste des pages retournées. Il peut s'agir de l'une des propriétés suivantes :
+
+
+
includeBlocked {{optional_inline}}
+
Boolean. Inclure les pages que l'utilisateur a supprimées de la page "Nouvel onglet". La valeur par défaut est false.
+
includeFavicon {{optional_inline}}
+
Boolean.  Inclure les favicons dans les résultats, pour les pages où ils sont disponibles. La valeur par défaut est false.
+
includePinned {{optional_inline}}
+
Boolean. inclure les sites que l'utilisateur a épinglés dans le nouvel onglet Firefox.
+ Par défaut à false.
+
includeSearchShortcuts {{optional_inline}}
+
Boolean.  Inclut les raccourcis de recherche qui apparaissent dans le nouvel onglet Firefox.
+ Par défaut à false.
+
limit {{optional_inline}}
+
Integer. Le nombre de pages à retourner. Ce chiffre doit être compris entre 1 et 100 inclusivement. La valeur par défaut est 12.
+
onePerDomain {{optional_inline}}
+
Boolean. N'incluez qu'une seule page par domaine. La valeur par défaut est true.
+
+
+
+ +

Valeur retournée

+ +

Une Promise. 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.topSites.get")}}

+ +

Exemples

+ +

Ce code enregistre le titre et l'UL de tous les sites dans la page "Nouvel onglet" :

+ +
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);
+
+ +

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 :

+ +
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({
+  includeBlocked: true,
+  onePerDomain: false
+});
+
+gettingTopSites.then(logTopSites, onError);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.topSites.

+
+ + 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 +--- +
{{AddonSidebar}}
+ +

Utilisez l'API topSites pour obtenir un tableau contenant les pages que l'utilisateur a visitées  fréquemment.

+ +

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".

+ +

Pour utiliser l'API topSites, vous devez disposez de l' API permission "topSites".

+ +

Types

+ +
+
{{WebExtAPIRef("topSites.MostVisitedURL")}}
+
Un objet contenant le titre et l'URL d'un site web.
+
+ +

Méthodes

+ +
+
{{WebExtAPIRef("topSites.get()")}}
+
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.
+
+ +

Compatibilité du Navigateur

+ + + +

{{Compat("webextensions.api.topSites")}}

+ +

{{WebExtExamples("h2")}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.topSites.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Le type MostVisitedURL contient deux propriétés : le titre de la page et son URL.

+ +

Type

+ +

Values of this type are objects. They contain the following properties:

+ +
+
favicon {{optional_inline}}
+
String. Une donnée : URL contenant le favicon de la page, si includeFavicon était donné dans {{WebExtAPIRef("topSites.get()")}} et le favicon était disponible.
+
title
+
String. Le titre de la page.
+
url
+
String. L'URL de la page.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.topSites.MostVisitedURL")}}

+ +

Exemples

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.topSites.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar}}
+ +

Utilisez BrowserSetting.clear() pour effacer toutes les modification apportées à l'extension du navigateur. Le paramètre du navigateur revient à sa valeur précédente.

+ +

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 BrowserSetting.set() pour en savoir plus sur le contrôle des paramètres.

+ +

Il s'agit d'une fonction asynchrone qui renvoie une Promise. Si la compensation a échoué, la promesse renvoie une valeur à false. Si l'effacement de la valeur a réussi, il se résout à true.

+ +

Syntaxe

+ +
var clearing = setting.clear(
+  details     // object
+)
+
+ +

Paramètres

+ +
+
details
+
Un objet vide
+
+ +

Valeur retournée

+ +

Une Promise qui sera rempli avec un booléen: true Si le paramètre est effacé, false sinon.

+ +

Compatibilité du navigateur

+ +

Voir {{WebExtAPIRef("types.BrowserSetting")}}.

+ +

Exemple

+ +

Effacer le paramètre webRTCIPHandlingPolicy  :

+ +
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);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.types.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

La méthode  BrowserSetting.get() obtient la valeur actuelle du paramètre du navigateur et une énumération indiquant comment la valeur du paramètre est actuellement controléee..

+ +

Il s'agit d'une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var getting = setting.get(
+  details     // object
+)
+
+ +

Paramètres

+ +
+
détails
+
Un objet vide.
+
+ +

Valeur de retour

+ +

Une Promise qui sera remplie avec un objet avec les propriétés suivantes :

+ +
+
value
+
La valeur du paramètre. Le type de cette propriété est déterminé par le paramètre particulier.
+
levelOfControl
+
string. 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 BrowserSetting.set() pour plus détails. Sa valeur peut-être l'une des suivantes : + + + + + + + + + + + + + + + + + + + +
"not_controllable"Les extensions ne sont pas autorisées à modifier le paramètre.
"controlled_by_other_extensions"Une autre extension qui a été installée après celle-ci a modifié ce paramètre
"controllable_by_this_extension"Cette extension est autorisée à modifier le paramètre.
"controlled_by_this_extension"Cette extensions a déjà modifi le paramètre.
+
+
+ +

Compatibilité du navigateur

+ +

Voir {{WebExtAPIRef("types.BrowserSetting")}}.

+ +

Exemple

+ +

Enregitrez la valeur et le niveau de contrôle de la propriété networkPredictionEnabled de l'objet {{WebExtAPIRef("privacy.network")}}, pour les fenêtres de navigations privées. Notez que cela nécessite la permission du navigateur "privacy".

+ +
var getting = browser.privacy.network.networkPredictionEnabled.get({});
+
+getting.then((got) => {
+  console.log(`Value: ${got.value}`);
+  console.log(`Control: ${got.levelOfControl}`);
+});
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.types.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Un BrowserSetting est un objet représentant un paramètre de navigateur.

+ +

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.

+ +

Notez que si cet objet est basé sur le type ChromeSetting, 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 scope de ChromeSetting.set()) ne sont pas implémentées.

+ +

Méthodes

+ +
+
{{WebExtAPIRef("types.BrowserSetting.get()")}}
+
Obtenez la valeur actuelle du paramètre et une énumération représentant la façon dont le paramètre est actuellement contrôlé.
+
{{WebExtAPIRef("types.BrowserSetting.set()")}}
+
Réglez le paramètre sur une nouvelle valeur.
+
{{WebExtAPIRef("types.BrowserSetting.clear()")}}
+
Effacez toute modification apportée au paramètre par cette extension.
+
+ +

Evénements

+ +
+
{{WebExtAPIRef("types.BrowserSetting.onChange")}}
+
Définit lorsque la valeur du paramètre change.
+
+ +

Compatibilité du navigateur

+ +

Browser compatibility

+ + + +

{{Compat("webextensions.api.types.BrowserSetting")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.types.

+
+ + 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 +--- +

{{AddonSidebar()}}

+ +

L'événement BrowserSetting.onChanged est déclenché lorsque le paramètre est modifié.

+ +

Syntaxe

+ +
BrowserSetting.onChanged.addListener(listener)
+BrowserSetting.onChanged.removeListener(listener)
+BrowserSetting.onChanged.hasListener(listener)
+
+ +

Les événement ont trois fonctions :

+ +
+
addListener(listener)
+
Ajout un auditeur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'auditeur à supprimer.
+
hasListener(listener)
+
Vérifier si l'auditeur est enregistré pour cet événement. Renvoie true si elle écoute, false sinon.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Une fonction de rappel qui sera appelée lorsque cet événement se produira. La fonction passera les arguments suivants :

+ +
+
details
+
Un object contenant des détails sur le changement survenu. Ses propriété sont les suivantes : +
+
value
+
La nouvelle valeur du paramètre. Le type de cette propriété est déterminé par le paramètre particulier.
+
levelOfControl
+
string. 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 BrowserSetting.set() pour plus détails. Sa valeur peut-être l'une des suivantes : + + + + + + + + + + + + + + + + + + + +
"not_controllable"Les extensions ne sont pas autorisées à modifier ce paramètre.
"controlled_by_other_extensions"Une autre extensions qui a été installée après celle-ci a modifié ce paramètre.
"controllable_by_this_extension"Cette extensions est autorisée à modifier le paramètre.
controlled_by_this_extension"Cette extensions a déjà modifié le paramètre.
+
+
+
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.types.BrowserSetting.onChange")}}

+ +

Exemples

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.types.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Utilisez BrowserSetting.set() pour modifier le paramètre du navigateur vers une nouvelle valeur.

+ +

Certaines règles peuvent être restreintes lorsque les extensions sont capables de modifier les paramètres :

+ + + +

Cela signifie que si l'extension X essaie de modifier un paramètre :

+ +
    +
  1. 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.
  2. +
  3. 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.
  4. +
  5. 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.
  6. +
  7. 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.
  8. +
+ +

Une extension peut déterminer lequel de ces scénarios s'applique en examinant la propriété "levelOfControl" renvoyée d'un appel à BrowserSetting.get().

+ +

la méthode BrowserSetting.set() 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  true: sinon il est false.

+ +

Syntaxe

+ +
var setting = setting.set(
+  details     // object
+)
+
+ +

Paramètres

+ +
+
details
+
Un objet qui doit contenir la propriété suivante :
+
+
+
value
+
any. La valeur à laquelle vous souhaitez modifier le paramètre. Son type dépend du réglage particulier.
+
+
+
+ +

Valeur retournée

+ +

Une Promise qui sera remplie avec un booléen: true si le paramètre a été modifié, false sinon (par exemple, parce que l'extension n'a pas contrôlé le paramètre).

+ +

Compatibilité du navigateur

+ +

Voir {{WebExtAPIRef("types.BrowserSetting")}}.

+ +

Exemple

+ +

Modifiez le paramètre hyperlinkAuditingEnabled (ceci nécessite la permission "privacy") :

+ +
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);
+
+});
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.types.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar}}
+ +

Définit le type BrowserSetting , qui est utilisé pour représenter un paramètre de navigateur.

+ +

Types

+ +
+
{{WebExtAPIRef("types.BrowserSetting")}}
+
Représente un paramètre de navigateur.
+
+ +

Compatibilité du navigateur

+ +

{{WebExtExamples("h2")}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.types.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +

{{AddOnSidebar}}

+ +

L'APIScript userScripts est un type spécial d'extension Content Script.

+ +

Comme un script de contenu d'extension régulier :

+ + + +

Contrairement à une extension régulière Content Script :

+ + + +
manifest.json
+{
+  ...
+  "user_scripts": {
+     "api_script": "apiscript.js"
+  }
+}
+ +

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é.

+ +

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.

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 +--- +

{{AddonSidebar}}

+ +

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.

+ +

Cette API offre des capacités similaires à {{WebExtAPIRef("contentScripts")}} mais avec des fonctionnalités adaptées à la gestion de scripts tiers :

+ + + +
+

Cette API requiert la présence de la clé user_scripts dans le manifest.json, même si aucun script API n'est spécifié. Par exemple, user_scripts: {}.

+
+ +

Pour utiliser l'API, appelez {{WebExtAPIRef("userScripts.register","register()")}} en passant un objet définissant les scripts à enregistrer. La méthode renvoie une promesse qui est résolue par un objet  {{WebExtAPIRef("userScripts.RegisteredUserScript","RegisteredUserScript")}}.

+ +
+

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

+
+ +
+
+ +

Types

+ +
+
{{WebExtAPIRef("userScripts.RegisteredUserScript")}}
+
L'object 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.
+
+ +

Méthodes

+ +
+
{{WebExtAPIRef("userScripts.register()")}}
+
Enregistre les scripts utilisateur donnés.
+
+ +

Evénements

+ +
+
{{WebExtAPIRef("userScripts.onBeforeScript")}}
+
Un événement disponible pour le script API, enregistré dans "user_scripts", 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.
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.userScripts", 10, 1)}}

+ +

Voir aussi

+ + 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 +--- +
{{AddonSidebar}}
+ +
La propriété onBeforeScript de l'événement {{WebExtAPIRef("userScripts","browser.userScripts")}} est un {{DOMxRef("EventHandler")}} qui traite {{event("beforeScript")}}.
+ +

L'événement beforeScript 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.

+ +

Syntaxe

+ +
browser.userScripts.onBeforeScript = functionRef
+browser.userScripts.onBeforeScript.addListener(functionRef)
+browser.userScripts.onBeforeScript.removeListener(functionRef)
+browser.userScripts.onBeforeScript.hasListener(functionRef)
+
+ +

Value

+ +

functionRef est la function de gestionnaire à appeler lorsque l'événement beforeScript  du script utilisateur se déclenche.

+ +

Exemples

+ +

Voir ce billet de blog pour des exemples détaillés

+ +

Compatibilité du navigateur

+ +
+ + +

{{Compat("webextensions.api.userScripts.onBeforeScript")}}

+
+ +

Voir aussi

+ + 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 +--- +

{{AddonSidebar}}

+ +

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.

+ +

C'est une méthode asynchrone qui retourne un {{JSxRef("Promise")}}.

+ +

Syntaxe

+ +
const registeredUserScript = await browser.userScripts.register(
+  userScriptOptions       // object
+);
+….
+await registeredUserScript.unregister();
+ +

Paramètres

+ +
+
userScriptOptions
+
object. Un objet UserScriptOptions représentant les scripts de contenu à enregistrer. Il a une syntaxe similaire aux options supportées par {{WebExtAPIRef("contentScripts.register","contentScripts.register()")}}. +


+ L'objet UserScriptOptions possède les propriétés suivantes :

+ +
+
scriptMetadata {{Optional_Inline}}
+
Un objet JSON qui contient certaines propriétés de métadonnées associées aux userScripts enregistrés
+
allFrames {{Optional_Inline}}
+
Identiques à all_frames dans la clé user_scripts.
+
excludeGlobs {{Optional_Inline}}
+
Identique à exclude_globs dans la clé user_scripts.
+
excludeMatches {{Optional_Inline}}
+
Identique à exclude_matches dans la clé user_scripts.
+
includeGlobs {{Optional_Inline}}
+
Identique à include_globs dans la clé user_scripts.
+
js {{Optional_Inline}}
+
Un tableau d'objets. Chaque objet a soit une propriété nommée file, 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, qui est un code JavaScript à enregistrer.
+
matchAboutBlank {{Optional_Inline}}
+
Identique à match_about_blank dans la clé user_scripts.
+
matches
+
Identique à matches dans la clé user_scripts.
+
runAt {{Optional_Inline}}
+
Identique àrun_at dans la clé user_scripts.
+
+
+
+ +

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).

+ +

Valeur retournée

+ +

Une {{JSxRef("Promise")}} qui sera rempli avec un objet  {{WebExtAPIRef("userScripts.RegisteredUserScript","RegisteredUserScript")}} que vous pouvez utiliser pour désinscrire ce script utilisateur particulier.

+ +
+

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.

+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.userScripts.register", 10)}}

+ +

Voir aussi

+ + 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 +--- +

{{AddonSidebar()}}

+ +

Un RegisteredUserScript est retourné par un appel à {{WebExtAPIRef("userScripts.register","userScripts.register()")}} et représente les scripts utilisateur enregistrés dans cet appel.

+ +

L'objet définit une méthode unique, {{WebExtAPIRef("userScripts.RegisteredUserScript.unregister","unregister()")}}, qui peut être utilisée pour désinscrire les scripts utilisateur.

+ +
+

Note: 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.

+
+ +

Méthodes

+ +
+
{{WebExtAPIRef("userScripts.RegisteredUserScript.unregister","unregister()")}}
+
Désenregistre les scripts utilisateurs représentés par cet objet.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.userScripts.RegisteredUserScript", 10)}}

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() +--- +

{{AddonSidebar}}

+ +

La méhode unregister() 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()")}}.

+ +
+

Note: 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..

+
+ +

Syntaxe

+ +
const registeredUserScript = await browser.userScripts.register(
+  userScriptOptions       // object
+);
+…
+await registeredUserScript.unregister()
+ +

Paramètres

+ +

Aucun.

+ +

Valeur retournée

+ +

Une {{JSxRef("Promise")}} qui sera résolu une fois le script utilisateur désenregistré. La promesse ne rapporte rien.

+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.userScripts.RegisteredUserScript.unregister")}}

+ +

Voir aussi

+ + 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 +--- +

{{AddonSidebar}}

+ +

La méthode unregister() 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()")}}.

+ +
+

Note: 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..

+
+ +

Syntaxe

+ +
const registeredUserScript = await browser.userScripts.register(
+  userScriptOptions       // object
+);
+…
+await registeredUserScript.unregister()
+ +

Paramètres

+ +

Aucun

+ +

Valeur retournée

+ +

Une {{JSxRef("Promise")}} qui sera résolu une fois le script utilisateur désenregistré. La promesse ne rapporte rien.

+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.userScripts.RegisteredUserScript.unregister")}}

+ +

Voir aussi

+ + 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 +--- +

{{draft}}

+ +

{{AddonSidebar}}

+ +

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.

+ +

Implémentez userScripts dans votre extension en suivant les étapes suivantes :

+ +
    +
  1. Définissez le script dans le manifeste de l'extension à l'aide de la clé "user_scripts".
  2. +
  3. Enregistrer le userScript
  4. +
  5. Implémenter les fonctions userScript
  6. +
+ +

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 webextensions-examples sur GitHub.

+ +

Manifest userScripts

+ +

Un script utilisateur est identifié par le contenu de la clé user_scripts du manifeste des extensions. L'information minimale pour la clé user_scripts serait :

+ +
  "user_scripts": {
+    "api_script": "customUserScriptAPIs.js"
+  }
+ +

La propriété "api_script" indique le chemin d'accès au fichier JavaScript qui contient le code du userScript.

+ +

Charge l'extension d'exemple

+ +

Une fois que vous avez téléchargé l'exemple  :

+ +

Naviguez jusqu'à about:debugging, cliquez sur Charger temporairement une extension... et double-cliquez sur le manifest des extensions.

+ +

/Le code par défaut inclus dans l'exemple vous permet de charger un userScript 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 Enregistrer le script au bas du panneau.

+ +

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.

+ +

+ +

Rien ne se passera tant que vous n'aurez pas cliqué sur le bouton Enregistrer le script. 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.

+ +

Register the userScript

+ +

Avant qu'un userScript puisse être exécuté, il doit être enregistré en utilisant la méthode  userScripts.register(). Voici le code pour enregistrer l'extension d'exemple :

+ +
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});
+  }
+}
+ +

Ce code initialise d'abord l'objet params pour passer les valeurs à la méthode  userScripts.register.

+ +

Implementer les fonctions userScript

+ +

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 :

+ +

+ +

Voir aussi

+ + 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 +--- +

{{AddonSidebar}}

+ +

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 :

+ + + +

L'objet UserScriptOptions a les propriétés suivantes :

+ +
+
allFrames{{optional_inline}}
+
Même chose que all_frames dans la clé content_scripts.
+
excludeGlobs{{optional_inline}}
+
Même chose que exclude_globs dans la clé content_scripts.
+
excludeMatches{{optional_inline}}
+
Même chose que exclude_matches dans la clé content_scripts.
+
includeGlobs{{optional_inline}}
+
Même chose que include_globs dans la clé content_scripts.
+
js{{optional_inline}}
+
Un ensemble d'objets. Chaque objet a soit une propriété nommée file, qui est une URL commençant à l'extension manifest.json et pointant vers un fichier JavaScript à enregistrer, soit une propriété nommée code, qui est un code JavaScript à enregistrer.
+
matchAboutBlank{{optional_inline}}
+
Même chose que match_about_blank dans la clé content_scripts.
+
matches
+
Même chose que matches dans la clé content_scripts.
+
runAt{{optional_inline}}
+
Même chose que run_at dans la clé content_scripts.
+
scriptMetadata {{optional_inline}}
+
Une valeur de métadonnées de script utilisateur
+
+ +

Sa syntaxe est similaire à celle des options contentScript prises en charge par browser.contentScripts.register.

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 +--- +
{{AddonSidebar()}}
+ +

Étant donné un ID d'onglet, récupère des informations sur toutes les images qu'il contient.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var gettingFrames = browser.webNavigation.getAllFrames(
+  details                // object
+)
+
+ +

Paramètres

+ +
+
details
+
object. Informations sur l'onglet pour récupérer toutes les images.
+
+
+
tabId
+
integer. L'identifiant de l'onglet
+
+
+
+ +

Valeur retournée

+ +

Une Promise sera accompli avec un tableau d'objets, dont chacun a les propriétés suivantes :

+ +
+
errorOccurred
+
boolean. 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é.
+
processId
+
integer. L'ID du processus exécutant le moteur de rendu pour cet onglet.
+
frameId
+
integer. L'identifiant de l'image Si c'est l'image principale, alors frameId est nul.
+
parentFrameId
+
integer. 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.
+
url
+
string. L'URL actuellement associée à ce cadre.
+
+ +

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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webNavigation.getAllFrames")}}

+ +

Exemples

+ +

Ce code enregistre les URL de toutes les images dans l'onglet actif, lorsque l'utilisateur clique sur une action du navigateur :

+ +
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);
+
+});
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.webNavigation. Cette documentation est dérivée de web_navigation.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Récupère des informations sur un cadre particulier. Un cadre peut être l'image de niveau supérieur dans un onglet ou un iframe imbriqué, et est identifié de manière unique par un ID de tabulation et un ID de cadre.

+ +

C'est une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var gettingFrame = browser.webNavigation.getFrame(
+  details                // object
+)
+
+ +

Paramètres

+ +
+
details
+
object. Informations sur le cadre pour récupérer des informations sur :
+
+
+
tabId
+
integer. L'ID de l'onglet dans lequel se trouve le cadre.
+
processId {{optional_inline}}
+
integer. L'ID du processus exécutant le moteur de rendu pour cet onglet.
+
frameId
+
integer. L'ID du cadre dans l'onglet donné.
+
+
+
+ +

Valeur retournée

+ +

Une Promise qui sera rempli avec un objet contenant les propriétés suivantes :

+ +
+
errorOccurred
+
boolean. 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é.
+
url
+
string. L'URL actuellement associée à cette trame, si la trame identifiée par  frameId existait à un point de l'onglet identifié par tabId. Le fait qu'une URL soit associée à un frameId donné n'implique pas que la trame correspondante existe toujours.
+
parentFrameId
+
integer. 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.
+
+ +

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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webNavigation.getFrame")}}

+ +

Exemples

+ +
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);
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.webNavigation. Cette documentation est dérivée de web_navigation.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar}}
+ +

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.

+ +

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.

+ +

Chaque evenement correspond directement à un état précis dans la navigation. La séquence des évenements est comme suit:

+ +

+ + + +

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'iframe.

+ +

L'appel addListener() 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.

+ +

L'écouteur d'événement onCommittedreç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.

+ +

Pour utiliser cette API, vous devez avoir la permission "webNavigation".

+ +

Types

+ +
+
{{WebExtAPIRef("webNavigation.TransitionType")}}
+
Cause de la navigation: par exemple, l'utilisateur a cliqué sur un lien, ou a tapé une adresse, ou a cliqué sur un signet.
+
{{WebExtAPIRef("webNavigation.TransitionQualifier")}}
+
+
Informations supplémentaires sur une transition.
+
+
+ +

Functions

+ +
+
{{WebExtAPIRef("webNavigation.getFrame()")}}
+
Récupère des informations sur un cadre particulier. Ce cadre peut être le cadre de niveau supérieur dans un onglet ou un iframe imbriqué, et est identifié de manière unique par un ID d'onglet et un ID de frame.
+
{{WebExtAPIRef("webNavigation.getAllFrames()")}}
+
+

Étant donné un ID d'onglet, récupère des informations sur tous les cadres qu'il contient.

+
+
+ +

Events

+ +
+
{{WebExtAPIRef("webNavigation.onBeforeNavigate")}}
+
+

Lancé lorsque le navigateur est sur le point de démarrer un événement de navigation.

+
+
{{WebExtAPIRef("webNavigation.onCommitted")}}
+
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.
+
{{WebExtAPIRef("webNavigation.onDOMContentLoaded")}}
+
Lancé lorsque l'événement DOMContentLoaded est déclenché dans la page.
+
{{WebExtAPIRef("webNavigation.onCompleted")}}
+
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 chargement du DOM.
+
{{WebExtAPIRef("webNavigation.onErrorOccurred")}}
+
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.
+
{{WebExtAPIRef("webNavigation.onCreatedNavigationTarget")}}
+
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.
+
{{WebExtAPIRef("webNavigation.onReferenceFragmentUpdated")}}
+
Lancé si l' identificateur de fragment d'une page a été modifié.
+
{{WebExtAPIRef("webNavigation.onTabReplaced")}}
+
+

Lancé lorsque le contenu de l'onglet est remplacé par un onglet différent (généralement précédemment pré-rendu).

+
+
{{WebExtAPIRef("webNavigation.onHistoryStateUpdated")}}
+
Lancé lorsque la page a utilisé l' API d'histoirique pour mettre à jour l'URL affichée dans la barre d'adresse du navigateur.
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.webNavigation")}}

+ +

{{WebExtExamples("h2")}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.webNavigation. Cette documentation est dérivée de web_navigation.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Lancé lorsque le navigateur est sur le point de démarrer un événement de navigation.

+ +

Syntaxe

+ +
browser.webNavigation.onBeforeNavigate.addListener(
+  listener,                   // function
+  filter                      // optional object
+)
+browser.webNavigation.onBeforeNavigate.removeListener(listener)
+browser.webNavigation.onBeforeNavigate.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il est écouté, sinon false.
+
+ +

syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
details
+
object. Détails sur l'événement de navigation.
+
+
+
filter{{optional_inline}}
+
+

object. Un objet contenant une seule propriété url, qui est un tableau  d'objets {{WebExtAPIRef("events.UrlFilter")}} objects.Un objet contenant une seule propriété  qui correspondent à au moins un UrlFilter dans le tableau. Si vous omettez ce paramètre, l'événement se déclenchera pour toutes les transitions.

+
+
+ +

Objets supplémentaires

+ +

détails

+ +
+
tabId
+
integer. L'ID de l'onglet dans lequel la navigation est sur le point de se produire.
+
url
+
string. L'URL à laquelle le cadre donné va naviguer.
+
processId
+
integer. L'ID du processus dans lequel cet onglet est rendu (Cette propriété n'est pas pris en charge sur Firefox et c'est déprécié sur Chrome).
+
frameId
+
integer. 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 iframe 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.
+
parentFrameId
+
integer. ID du parent de cette image. Défini à -1 s'il s'agit d'un cadre de niveau supérieur.
+
timeStamp
+
number. L'heure à laquelle le navigateur est sur le point de démarrer la navigation, en millisecondes depuis l'époque.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webNavigation.onBeforeNavigate")}}

+ +

Exemples

+ +

Logs les URL cibles de onBeforeNavigate, si le nom d'hôte de la cible contient "example.com" ou commence avec "developer".

+ +
var filter = {
+  url:
+  [
+    {hostContains: "example.com"},
+    {hostPrefix: "developer"}
+  ]
+}
+
+function logOnBefore(details) {
+  console.log("onBeforeNavigate to: " + details.url);
+}
+
+browser.webNavigation.onBeforeNavigate.addListener(logOnBefore, filter);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.webNavigation. Cette documentation est dérivée de web_navigation.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Syntaxe

+ +
browser.webNavigation.onCommitted.addListener(
+  listener,                 // function
+  filter                    // optional object
+)
+browser.webNavigation.onCommitted.removeListener(listener)
+browser.webNavigation.onCommitted.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il est écouté, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
details
+
object. Détails sur l'événement de navigation.
+
+
+
filter{{optional_inline}}
+
+

object. Un objet contenant une seule propriété url, qui est un tableau 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 UrlFilter dans le tableau. Si vous omettez ce paramètre, l'événement se déclenchera pour toutes les transitions.

+
+
+ +

Objets supplémentaires

+ +

détails

+ +
+
tabId
+
integer. L'ID de l'onglet dans lequel la navigation est sur le point de se produire.
+
url
+
string. L'URL à laquelle le cadre donné va naviguer.
+
processId
+
integer. L'ID du processus dans lequel cet onglet est rendu.
+
frameId
+
integer. 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 iframe 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.
+
parentFrameId
+
integer. ID du parent de cette image. Réglez à -1 s'il s'agit d'un cadre de niveau supérieur.
+
timeStamp
+
number. L'heure à laquelle la navigation a été validée, en millisecondes depuis l'époque.
+
transitionType
+
{{WebExtAPIRef("webNavigation.transitionType", "transitionType")}}. La raison de la navigation : par exemple, "link" si l'utilisateur a cliqué sur un lien, ou "reload" si l'utilisateur a rechargé la page.
+
transitionQualifiers
+
Array de {{WebExtAPIRef("webNavigation.transitionQualifier", "transitionQualifier")}}. Informations supplémentaires sur la navigation : par exemple, s'il existait une redirection de serveur ou de client.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webNavigation.onCommitted")}}

+ +

Exemples

+ +

Logs les URL cibles et les informations de transition supplémentaires pour onCommitted, si le nom d'hôte de l'URL cible contient "example.com" ou commence avec "developer".

+ +
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);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.webNavigation. Cette documentation est dérivée de web_navigation.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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 chargement du DOM.

+ +

Syntaxe

+ +
browser.webNavigation.onCompleted.addListener(
+  listener,                   // function
+  filter                      // optional object
+)
+browser.webNavigation.onCompleted.removeListener(listener)
+browser.webNavigation.onCompleted.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il est écouté, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants:

+ +
+
details
+
object. Détails sur l'événement de navigation.
+
+
+
filter{{optional_inline}}
+
+

object. Un objet contenant une seule propriété url, qui est un  Array 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 UrlFilter dans le tableau.Si vous omettez ce paramètre, l'événement se déclenchera pour toutes les transitions.

+
+
+ +

Objets supplémentaires

+ +

détails

+ +
+
tabId
+
integer. L'ID de l'onglet dans lequel la navigation s'est produite.
+
url
+
string. L'URL à laquelle le cadre donné a navigué.
+
processId
+
integer. L'ID du processus dans lequel cet onglet est rendu.
+
frameId
+
integer.  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 iframe 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.
+
timeStamp
+
number. L'heure à laquelle la page a terminé le chargement, en millisecondes depuis l'époque.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webNavigation.onCompleted")}}

+ +

Exemples

+ +

Consigne les URL cibles de onCompleted, si le nom d'hôte de l'URL cible contient "example.com" ou commence avec "developer".

+ +
var filter = {
+  url:
+  [
+    {hostContains: "example.com"},
+    {hostPrefix: "developer"}
+  ]
+}
+
+function logOnCompleted(details) {
+  console.log("onCompleted: " + details.url);
+}
+
+browser.webNavigation.onCompleted.addListener(logOnCompleted, filter);
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.webNavigation. Cette documentation est dérivée de web_navigation.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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 :

+ + + +

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).

+ +

Si cet événement est déclenché, il sera déclenché avant  {{WebExtAPIRef("webNavigation.onBeforeNavigate")}}.

+ +

Syntaxe

+ +
browser.webNavigation.onCreatedNavigationTarget.addListener(
+  listener,                   // function
+  filter                      // optional object
+)
+browser.webNavigation.onCreatedNavigationTarget.removeListener(listener)
+browser.webNavigation.onCreatedNavigationTarget.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il est écouté, sinon false.
+
+ +

addListener syntax

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
details
+
object. Détails sur l'événement de navigation Voir les détails ci-dessous.
+
+
+
filter{{optional_inline}}
+
+

object. Un objet contenant une seule propriété url, qui est un Array 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 UrlFilter dans le tableau. Si vous omettez ce paramètre, l'événement se déclenchera pour toutes les transitions. Notez que le filtren'est pas supporté dans Firefox.

+
+
+ +

Objets supplémentaires

+ +

détails

+ +
+
sourceFrameId
+
integer. 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 iframe 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.
+
sourceProcessId
+
integer. L'ID du processus à partir duquel la navigation est initiée.
+
sourceTabId
+
integer. 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.
+
tabId
+
integer: L'ID de l'onglet nouvellement créé.
+
timeStamp
+
number. L'heure à laquelle le navigateur a créé la cible de navigation, en millisecondes depuis l'époque.
+
url
+
string. L'URL qui sera chargée dans le nouvel onglet.
+
windowId
+
number. L'ID de la fenêtre dans laquelle le nouvel onglet est créé.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webNavigation.onCreatedNavigationTarget")}}

+ +

Exemples

+ +

Logs l'URL cible, l'ID de la table source et l'ID de la trame source pour onCreatedNavigationTarget, si le nom d'hôte de la cible contient "example.com" ou commence par "developer".

+ +
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);
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.webNavigation. Cette documentation est dérivée de web_navigation.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Lancé lorsque l'événement DOMContentLoaded 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.

+ +

Syntaxe

+ +
browser.webNavigation.onDOMContentLoaded.addListener(
+  listener,                   // function
+  filter                      // optional object
+)
+browser.webNavigation.onDOMContentLoaded.removeListener(listener)
+browser.webNavigation.onDOMContentLoaded.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il est écouté, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
details
+
object. Détails sur l'événement de navigation
+
+
+
filter{{optional_inline}}
+
+

object. Un objet contenant une seule propriété url, qui est un tableau 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 UrlFilter dans un tableau. Si vous omettez ce paramètre, l'événement se déclenchera pour toutes les transitions.

+
+
+ +

Objets supplémentaires

+ +

détails

+ +
+
tabId
+
integer. L'ID de l'onglet dans lequel la navigation s'est produite.
+
url
+
string. L'URL à laquelle le cadre donné a navigué.
+
processId
+
integer.  L'ID du processus dans lequel cet onglet est rendu.
+
frameId
+
integer. 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 iframe imbriqué. Une valeur positive indique que la navigation se déroule dans un iframe imbriqué. Les ID frames sont uniques pour un onglet et un processus donnés.
+
timeStamp
+
number. L'heure à laquelle DOMContentLoaded a été déclenchée, en millisecondes depuis l'époque.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webNavigation.onDOMContentLoaded")}}

+ +

Exemples

+ +

Logs les URL cibles pour onDOMContentLoaded,si le nom d'hôte de l'URL cible contient "example.com" ou commence par "developer".

+ +
var filter = {
+  url:
+  [
+    {hostContains: "example.com"},
+    {hostPrefix: "developer"}
+  ]
+}
+
+function logOnDOMContentLoaded(details) {
+  console.log("onDOMContentLoaded: " + details.url);
+}
+
+browser.webNavigation.onDOMContentLoaded.addListener(logOnDOMContentLoaded, filter);
+
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.webNavigation. Cette documentation est dérivée de web_navigation.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Syntaxe

+ +
browser.webNavigation.onErrorOccurred.addListener(
+  listener,                   // function
+  filter                      // optional object
+)
+browser.webNavigation.onErrorOccurred.removeListener(listener)
+browser.webNavigation.onErrorOccurred.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il est écouté, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants:

+ +
+
details
+
object. Détails sur l'événement de navigation.
+
+
+
filter{{optional_inline}}
+
+

object. Un objet contenant une seule propriété url, qui est un tableau 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 UrlFilter dans un tableau. Si vous omettez ce paramètre, l'événement se déclenchera pour toutes les transitions.

+
+
+ +

Objets supplémentaires

+ +

details

+ +
+
tabId
+
integer. L'ID de l'onglet dans lequel la navigation se passait.
+
url
+
string. L'URL à laquelle le cadre donné naviguait.
+
processId
+
integer. L'ID du processus dans lequel cet onglet est rendu.
+
frameId
+
integer. 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 iframe 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.
+
timeStamp
+
number. L'heure à laquelle l'erreur s'est produite, en milliseconde depuis l'époque.
+
error
+
string. 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.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webNavigation.onErrorOccurred")}}

+ +

Exemples

+ +

Logs les URL cibles de onErrorOccurred, si le nom d'hôte de l'URL cible contient  "example.com" ou commence par "developer".

+ +
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);
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.webNavigation. Cette documentation est dérivée de web_navigation.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Lancé lorsque la page a utilisé l'API history 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.

+ +

Syntaxe

+ +
browser.webNavigation.onHistoryStateUpdated.addListener(
+  listener,                   // function
+  filter                      // optional object
+)
+browser.webNavigation.onHistoryStateUpdated.removeListener(listener)
+browser.webNavigation.onHistoryStateUpdated.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il est écouté, sinon false.
+
+ +

syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
details
+
object. Détails sur l'événement de navigation.
+
+
+
filter{{optional_inline}}
+
+

object. Un objet contenant une seule propriété url, qui est un tableau 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 UrlFilter dans un tableau. Si vous omettez ce paramètre, l'événement se déclenchera pour toutes les transitions.

+
+
+ +

Objets supplémentaires

+ +

détails

+ +
+
tabId
+
integer. L'ID de l'onglet dans lequel la navigation est sur le point de se produire.
+
url
+
string. L'URL à laquelle le cadre donné va naviguer.
+
processId
+
integer. L'ID du processus dans lequel cet onglet est rendu.
+
frameId
+
integer. 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 iframe imbriqué. Une valeur positive indique que la navigation se déroule dans un  iframe imbriqué. Les ID de frames sont uniques pour un onglet et un processus donnés.
+
timeStamp
+
number. L'heure à laquelle la navigation a été validée, en millisecondes depuis l'origine.
+
transitionType
+
{{WebExtAPIRef("webNavigation.transitionType", "transitionType")}}.La raison de la navigation: par exemple, "link" si l'utilisateur a cliqué sur un lien.
+
transitionQualifiers
+
Array de {{WebExtAPIRef("webNavigation.transitionQualifier", "transitionQualifier")}}. Informations supplémentaires sur la navigation : par exemple, s'il existait une redirection de serveur ou de client.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webNavigation.onHistoryStateUpdated")}}

+ +

Examples

+ +

Logs les URL cibles et les informations de transition supplémentaires pour  onHistoryStateUpdated, si le nom d'hôte de l'URL cible contient "example.com" ou commence par "developer".

+ +
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);
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.webNavigation. Cette documentation est dérivée de web_navigation.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +
Lancé si identificateur dee fragment 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.
+ +
+ +

Syntaxe

+ +
browser.webNavigation.onReferenceFragmentUpdated.addListener(
+  listener,                   // function
+  filter                      // optional object
+)
+browser.webNavigation.onReferenceFragmentUpdated.removeListener(listener)
+browser.webNavigation.onReferenceFragmentUpdated.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il est écouté, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants:

+ +
+
details
+
object. Détails sur l'événement de navigation.
+
+
+
filter{{optional_inline}}
+
+

object. Un objet contenant une seule propriété url, qui est un Array 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 UrlFilter dans le tableau.Si vous omettez ce paramètre, l'événement se déclenchera pour toutes les transitions.

+
+
+ +

Objets supplémentaires

+ +

détails

+ +
+
tabId
+
integer. L'ID de l'onglet dans lequel la navigation est sur le point de se produire.
+
url
+
string. L'URL à laquelle le cadre donné va naviguer.
+
processId
+
integer. L'ID du processus dans lequel cet onglet est rendu.
+
frameId
+
integer.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 iframe 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.
+
timeStamp
+
number. L'heure à laquelle la navigation a été validée, en milliseconde depuis l'époque.
+
transitionType
+
{{WebExtAPIRef("webNavigation.transitionType", "transitionType")}}. La raison de la navigation: par exemple, "link" si l'utilisateur a cliqué sur un lien.
+
transitionQualifiers
+
Array de {{WebExtAPIRef("webNavigation.transitionQualifier", "transitionQualifier")}}. Informations supplémentaires sur la navigation : par exemple, s'il existait une redirection de serveur ou de client.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webNavigation.onReferenceFragmentUpdated")}}

+ +

Exemples

+ +

Consigne les URL cibles et les informations de transition supplémentaires pour  onReferenceFragmentUpdated, si le nom d'hôte de l'URL cible contient "example.com" ou commence par "developer".

+ +
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);
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.webNavigation. Cette documentation est dérivée de web_navigation.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Lancé lorsque le contenu de l'onglet est remplacé par un onglet différent (généralement précédemment pré-rendu).

+ +

Syntaxe

+ +
browser.webNavigation.onTabReplaced.addListener(
+  listener,                   // function
+  filter                      // optional object
+);
+browser.webNavigation.onTabReplaced.removeListener(listener)
+browser.webNavigation.onTabReplaced.hasListener(listener)
+
+ + + +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré pour cet événement. Renvoie true s'il est écouté, sinon false.
+
+ + + +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :

+ +
+
details
+
object.
+
+
+
+ +

Objets supplémentaires

+ +

détails

+ +
+
replacedTabId
+
integer. L'ID de l'onglet qui a été remplacé.
+
tabId
+
integer. L'ID de l'onglet qui a remplacé l'ancien onglet.
+
timeStamp
+
number. Le moment où le remplacement s'est produit, en millisecondes depuis l'époque.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webNavigation.onTabReplaced")}}

+ +

Exemples

+ +
function logOnTabReplaced(details) {
+  console.log("onTabReplaced: " + details);
+}
+
+browser.webNavigation.onTabReplaced.addListener(logOnTabReplaced);
+ +

{{WebExtExamples}}

+ +
Acknowledgements + +

This API is based on Chromium's chrome.webNavigation API. This documentation is derived from web_navigation.json in the Chromium code.

+ +

Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +
Informations supplémentaires sur une transition.
+ +
+ +
Notez que beaucoup de valeurs ne sont actuellement pas supportées dans Firefox : voir la table de compatibilité pour plus de détails.
+ +
+ +

Type

+ +

Les valeurs de ce type sont des chaînes. Les valeurs possibles sont :

+ +
+
"client_redirect"
+
Redirection(s) provoquée par le JavaScript en cours d'exécution dans la page ou un pragma "actualiser" dans la balise meta de la page.
+
"server_redirect"
+
Redirection(s) provoquée par un code status HTTP 3XX envoyé par le serveur.
+
"forward_back"
+
L'utilisateur a utilisé le bouton avant ou arrière pour déclencher la navigation..
+
"from_address_bar"
+
L'utilisateur a déclenché la navigation depuis la barre d'adresse.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webNavigation.TransitionQualifier")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.webNavigation. Cette documentation est dérivée de web_navigation.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Cause de la navigation: par exemple, l'utilisateur a cliqué sur un lien, ou a tapé une adresse, ou a cliqué sur un signet.

+ +

Notez que beaucoup de valeurs ne sont actuellement pas supportées dans Firefox : voir la table de compatibilité du navigateur pour plus de détails.

+ +

Type

+ +

Les valeurs de ce type sont des chaînes. Les valeurs possibles sont :

+ +
+
"link"
+
L'utilisateur a cliqué sur un lien dans une autre page.
+
"typed"
+
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".
+
"auto_bookmark"
+
L'utilisateur a cliqué sur un signet ou un élément dans l'historique du navigateur.
+
"auto_subframe"
+
Les iframes imbriqués qui sont automatiquement chargés par leur parent.
+
"manual_subframe"
+
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.
+
"generated"
+
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.
+
"start_page"
+
La page a été passée à la ligne de commande ou est la page de démarrage.
+
"form_submit"
+
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.
+
"reload"
+
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.
+
"keyword"
+
L'URL a été générée à l'aide d'une rechercher par mot configurée par l'utilisateur.
+
"keyword_generated"
+
Correspond à une visite générée pour un mot clé.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webNavigation.TransitionType")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.webNavigation. Cette documentation est dérivée de web_navigation.json dans le code de Chromium code.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Un objet de ce type est renvoyé par les auditeurs d'événements qui ont défini le "blocking" dans leur argument extraInfoSpec.

+ +

En définissant des propriétés particulières dans BlockingResponse, l'auditeur peut modifier les requêtes réseau.

+ +

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.

+ +

Type

+ +

Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :

+ +
+
authCredentials{{optional_inline}}
+
object. 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é authCredentials est un objet avec les propriétés suivantes :
+
+
+
username
+
string. Nom d'utilisateur à fournir.
+
password
+
string. Mot de passe à fournir.
+
+
+
cancel{{optional_inline}}
+
boolean. Si true, 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")}}.
+
redirectUrl{{optional_inline}}
+
string. 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")}}.
+
Les redirections vers des schémas non-HTTP tels que data : sont autorisées, mais elles ne sont pas prises en charge actuellement ({{bug("707624")}}). 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 onHeadersReceived, auquel cas la redirection utilise la méthode GET.
+
Si une extension veut rediriger une URL publique (par exemple HTTPS) vers une page d'extension, le fichier manifest.json de l'extension doit contenir une clé web_accessible_resources qui liste l'URL de la page d'extension.
+
requestHeaders{{optional_inline}}
+
+

{{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")}} .

+
+
responseHeaders{{optional_inline}}
+
{{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, Content-Security-Policy), une seule des modifications sera réussie..
+
upgradeToSecure{{optional_inline}}
+
boolean. Si la valeur true 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 redirectUrl dans onBeforeRequest, alors upgradeToSecure sera ignoré pour cette requête. Vous ne pouvez définir cette propriété que dans {{WebExtAPIRef("webRequest.onBeforeRequest", "onBeforeRequest")}}.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webRequest.BlockingResponse")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.webRequest. Cette documentation est dérivée de web_request.json dans le code Chromium.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Un objet décrivant un seul certificat X.509.

+ +

L'objet {{WebExtAPIRef("webRequest.SecurityInfo", "SecurityInfo")}} retourné par l'objet {{WebExtAPIRef("webRequest.getSecurityInfo()")}} API inclut une propriété de  certificats qui est un tableau de ces objets.

+ +

Type

+ +

Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :

+ +
+
fingerprint
+
+

Object. Un objet avec les propriétés suivantes :

+ +
+
sha1
+
String. SHA-1 hash de l'encodage DER du certificat.
+
sha256
+
String. SHA-256 hash de l'encodage DER du certificat.
+
+
+
isBuiltInRoot
+
+

Boolean. true si le certificat est l'une des racines de confiance installées dans le navigateur, sinon false.

+
+
issuer
+
String. 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".
+
Par exemple: "CN=DigiCert SHA2 Secure Server CA,O=DigiCert Inc,C=US".
+
rawDER
+
Array de Number. Si webRequest.getSecurityInfo() a été appelé avec l'option rawDER présent et mis à true, ceci contiendra l'encodage DER du certificat.
+
serialNumber
+
String. Le numéro de série du certificat.
+
subject
+
String. 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".
+
Par exemple: "CN=*.cdn.mozilla.net,O=Mozilla Corporation,L=Mountain View,ST=California,C=US".
+
subjectPublicKeyInfoDigest
+
+

Object. Un objet contenant les propriétés suivantes :

+ +
+
sha256
+
String. Base64 encodé SHA-256 hash de l'information de clé publique codée DER.
+
+
+
validity
+
+

Object. Période de validité du certificat. Un objet contenant les propriétés suivantes :

+ +
+
start
+
Number. Le début de la période de validité du certificat, en millisecondes depuis l'époque.
+
end
+
Number. La fin de la période de validité du certificat, en millisecondes depuis l'époque.
+
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webRequest.CertificateInfo", 10)}}

+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Utilisez cette fonction pour créer un objet {{WebExtAPIRef("webRequest.StreamFilter")}} pour une requête particulière.
+ 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 webRequest.

+ +

Pour utiliser cette API, vous devez avoir la permission de l'API "webRequestBlocking", ainsi que les permissions normales nécessaires à l'auditeur de l'événement (la permission "webRequest" et la permission hôte pour l'hôte).

+ +

Syntaxe

+ +
var filter = browser.webRequest.filterResponseData(
+  requestId       // string
+)
+
+ +

Paramètres

+ +
+
requestId
+
string. ID de la requête à filtrer. Vous pouvez l'obtenir à partir de l'objet de details qui est passé dans n'importe quel écouteur d'événement webRequest.
+
+ +

Valeur retournée

+ +

Un objet {{WebExtAPIRef("webRequest.StreamFilter")}} que vous pouvez utiliser pour surveiller et modifier la réponse.

+ +

Exemples

+ +

Cet exemple, tiré de l'extension http-response, crée un filtre dans  {{WebExtAPIRef("webRequest.onBeforeRequest")}} et l'utilise pour modifier la réponse :

+ +
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"]
+);
+
+ +

{{WebExtExamples}}

+ + + +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webRequest.filterResponseData", 10)}}

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 +--- +
{{AddonSidebar()}}
+ +

Utilisez cette fonction pour obtenir des informations détaillées sur la connexion TLS associée à une demande particulière..

+ +

Vous passez à cette fonction la requestId pour la requête en question, et quelques paramètres supplémentaires optionnels. Il retourne une Promise qui sera résolue à un objet {{WebExtAPIRef("webRequest.SecurityInfo", "SecurityInfo")}}.

+ +

Vous ne pouvez appeler cette fonction qu'à partir de l'écouteur  {{WebExtAPIRef("webRequest.onHeadersReceived")}}. La requestId peut être trouvée dans l'objet details object qui est passé dans l'écouteur.

+ +

Vous devez également passer l'option "blocking" à  webRequest.onHeadersReceived.addListener(). Ainsi, pour utiliser cette API, vous devez avoir la permission de l'API "webRequestBlocking", ainsi que les permissions normales nécessaires pour utiliser les écouteurs webRequest  (la permission "webRequest" et la permission hôte pour le hôte).

+ +

Syntaxe

+ +
var gettingInfo = browser.webRequest.getSecurityInfo(
+  requestId,       // string
+  options          // object
+)
+
+ +

Paramètres

+ +
+
requestId
+
string. ID de la requête pour laquelle vous souhaitez obtenir des informations de sécurité. Vous pouvez l'obtenir à partir de l'objet de details qui est passé dans n'importe quel écouteur d'événement webRequest.
+
options
+
object. Un objet qui peut contenir l'une des propriétés suivantes, toutes facultatives :
+
+
+
certificateChain {{optional_inline}}
+
boolean. Si true, l'objet {{WebExtAPIRef("webRequest.SecurityInfo", "SecurityInfo")}} retourné inclura toute la chaîne de certificats jusqu'à et y compris la racine de confiance. Si false
+ il n'inclura que le certificat du serveur. La valeur par défaut est false.
+
rawDER {{optional_inline}}
+
boolean. Si true, chaque propriété {{WebExtAPIRef("webRequest.CertificateInfo", "CertificateInfo")}} dans le {{WebExtAPIRef("webRequest.SecurityInfo", "SecurityInfo.certificates")}} contiendra une propriété rawDER. Il contient le DER-encoded ASN.1 qui comprend les données du certificat.
+
+
+
+ +

Valeur retournée

+ +

Une Promise qui se résout en un objet {{WebExtAPIRef("webRequest.SecurityInfo", "SecurityInfo")}}.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webRequest.getSecurityInfo", 10)}}

+ +

Exemples

+ +

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 :

+ +
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"]
+);
+ +

Cet exemple écoute toutes les requêtes HTTPS à "mozilla.org" ou ses sous-domaines, et enregistre le nom dans le certificat racine de confiance :

+ +
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"]
+);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +
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.
+ +
+ +
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.
+ +

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 :

+ + + +

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.

+ +

La fonction handlerBehaviorChanged() 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.

+ +

Parce que handlerBehaviorChanged() 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.

+ +

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.

+ +

Il s'agit d'une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var flushingCache = browser.webRequest.handlerBehaviorChanged()
+
+ +

Paramètres

+ +

None.

+ +

Valeur retournée

+ +

Une Promise qui sera remplie sans arguments, lorsque l'opération sera terminée.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webRequest.handlerBehaviorChanged")}}

+ +

Exemples

+ +

Dans le snippet suivant, nous vidons le cache en mémoire via un appel à handlerBehaviorChanged(),  et signalons cette action en enregistrant un message approprié à la console.

+ +
function onFlushed() {
+  console.log(`In-memory cache flushed`);
+}
+
+function onError(error) {
+  console.log(`Error: ${error}`);
+}
+
+var flushingCache = browser.webRequest.handlerBehaviorChanged();
+flushingCache.then(onFlushed, onError);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.webRequest. Cette documentation est dérivée de web_request.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Un tableau d'en-tetes HTTP. Chaque en-tête est représenté comme un objet avec deux propriétés : name et valeur ou binaryValue.

+ +

Type

+ +

Un tableau d'objets. Chaque objet a les propriétés suivantes :

+ +
+
name
+
string. Nom de l'en-tête HTTP.
+
value{{optional_inline}}
+
string. 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.
+
binaryValue{{optional_inline}}
+
array d'integer. 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 valeur doit être présente.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webRequest.HttpHeaders")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.webRequest. Cette documentation est dérivée de web_request.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +

{{AddonSidebar}}

+ +

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.

+ +

Chaque événement est déclenché à un stade particulier de la demande. La séquence typique des événements est la suivante :

+ +

+ +

{{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 HSTS, l'événement onBeforeRedirect sera déclenché immédiatement après onBeforeRequest.

+ +

Tous les évènements (excepté onErrorOccurred) peuvent prendre trois arguments pour addListener():

+ + + +

Une fonction d'écoute reçoit un objet details 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.

+ +

Pour utiliser l'API webRequest pour un hôte donné, une extension doit avoir la permission API  "webRequest" et la permission hôte pour cet hôte. Pour utiliser la fonction "blocking", l'extension doit également avoir la permission API "webRequestBlocking".

+ +

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.

+ +

Modifier une requête

+ +

Sur certains de ces événements, vous pouvez modifier la demande. Plus précisément, vous pouvez  :

+ + + +

Pour ce faire, vous devez transmettre une option avec la valeur "blocking" dans l'argument extraInfoSpec à la fonction addListener() 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.

+ +
+

Avertissement : Les protocoles non-HTTP(S) ne supportent pas actuellement la fonctionnalité de "blockage", donc la modification de ces requêtes n'est pas disponible pour le moment. Voir {{bug(1475832)}} pour plus de détails.

+
+ +

Accéder aux informations de sécurité

+ +

Dans l'écouteur {{WebExtAPIRef("webRequest.onHeadersReceived", "onHeadersReceived")}} vous pouvez accéder aux propriétés TLS d'une requête en appelant {{WebExtAPIRef("webRequest.getSecurityInfo()", "getSecurityInfo()")}}. Pour ce faire, vous devez également transmettre le "blockage" dans l'argument extraInfoSpec à la fonction addListener() de l'évènement.

+ +

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.

+ +

Modifier les réponses

+ +

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.

+ +

Pour ce faire, vous devez disposer de la permission de l'API "webRequestBlocking" ainsi que la permission de l'API "webRequest" et la permission de l'hôte pour l'hôte concerné.

+ +

Types

+ +
+
{{WebExtAPIRef("webRequest.BlockingResponse")}}
+
+

Un objet de ce type est renvoyé par les auditeurs d'événements qui ont défini le "blockage" dans leur argument extraInfoSpec. En définissant des propriétés particulières dans BlockingResponse, the listener can modify network requests.

+
+
{{WebExtAPIRef("webRequest.CertificateInfo")}}
+
Un objet décrivant un seul certificat X.509.
+
{{WebExtAPIRef("webRequest.HttpHeaders")}}
+
Un tableau d'en-têtes HTTP. Chaque en-tête est représenté comme un objet avec deux propriétés : name et valeur ou binaryValue.
+
{{WebExtAPIRef("webRequest.RequestFilter")}}
+
Un objet décrivant les filtres à appliquer aux événements webRequest.
+
{{WebExtAPIRef("webRequest.ResourceType")}}
+
Représente un type particulier de ressources récupérées dans une requête Web.
+
{{WebExtAPIRef("webRequest.SecurityInfo")}}
+
Un objet décrivant les propriétés de sécurité d'une requête Web particulière.
+
{{WebExtAPIRef("webRequest.StreamFilter")}}
+
Un objet qui peut être utilisé pour surveiller et modifier les réponses HTTP pendant leur réception.
+
{{WebExtAPIRef("webRequest.UploadData")}}
+
Contient des données téléchargées dans une requête URL.
+
+ +

Propriétés

+ +
+
{{WebExtAPIRef("webRequest.MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES", "webRequest.MAX_​HANDLER_​BEHAVIOR_​CHANGED_​CALLS_​PER_​10_​MINUTES")}}
+
Le nombre de fois que handlerBehaviorChanged() peut être appelé dans une période de 10 minutes.
+
+ +

Méthodes

+ +
+
{{WebExtAPIRef("webRequest.handlerBehaviorChanged()")}}
+
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.
+
{{WebExtAPIRef("webRequest.filterResponseData()")}}
+
Retourne un objet {{WebExtAPIRef("webRequest.StreamFilter")}} pour une requête donnée.
+
{{WebExtAPIRef("webRequest.getSecurityInfo()")}}
+
Obtient des informations détaillées sur la connexion TLS associée à une requête donnée.
+
+ +

Evénements

+ +
+
{{WebExtAPIRef("webRequest.onBeforeRequest")}}
+
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.
+
{{WebExtAPIRef("webRequest.onBeforeSendHeaders")}}
+
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.
+
{{WebExtAPIRef("webRequest.onSendHeaders")}}
+
Lancé juste avant l'envoi des en-têtes. Si votre add-on ou d'autres en-têtes modifiés dans {{WebExtAPIRef("webRequest.onBeforeSendHeaders", "onBeforeSendHeaders")}}, vous verrez la version modifiée ici.
+
{{WebExtAPIRef("webRequest.onHeadersReceived")}}
+
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.
+
{{WebExtAPIRef("webRequest.onAuthRequired")}}
+
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.
+
{{WebExtAPIRef("webRequest.onResponseStarted")}}
+
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.
+
{{WebExtAPIRef("webRequest.onBeforeRedirect")}}
+
Déclenché lorsqu'une redirection initiée par le serveur est sur le point de se produirer.
+
{{WebExtAPIRef("webRequest.onCompleted")}}
+
C'est déclenché lorsqu'une demande est complétée.
+
{{WebExtAPIRef("webRequest.onErrorOccurred")}}
+
Déclenché lorsqu'une erreur se produit.
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.webRequest")}}

+ +

Extra notes on Chrome incompatibilities.

+ +

{{WebExtExamples("h2")}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.webRequest. Cette documentation est dérivée de web_request.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +

{{AddonSidebar}}

+ +

Le nombre maximum de fois que {{WebExtAPIRef("webRequest.handlerBehaviorChanged", "handlerBehaviorChanged()")}} peut être appelé dans une période de 10 minutes.

+ +

Cette propriété est en lecture seule.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webRequest.MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.webRequest. Cette documentation est dérivée de web_request.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

L'auditeur peut répondre de l'une des quatre façons suivantes :

+ +

Ne rien faire : 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.

+ +

Annuler la demande : 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 :

+ + + +

Fournir des informations d'identification de manière synchrone : 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.
+ L'auditeur peut fournir des informations d'identification de manière synchrone comme suit :

+ + + +

Fournir les informations d'identification de manière asynchrone : 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 :

+ + + +

Voir Exemples.

+ +

Si vous utilisez le "blockage" vous devez avoir la permission de l'API "webRequestBlocking" dans votre manifest.json.

+ +

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.

+ +

Autorisation de proxy

+ +

En général, Firefox ne déclenche pas d'événements webRequest 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.

+ +

Si une extension a les permissions "webRequest", "webRequestBlocking", "proxy", et "<all_urls>", alors elle pourra utiliser onAuthRequired 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.

+ +

Syntaxe

+ +
browser.webRequest.onAuthRequired.addListener(
+  listener,                    // function
+  filter,                      //  object
+  extraInfoSpec                //  optional array of strings
+)
+browser.webRequest.onAuthRequired.removeListener(listener)
+browser.webRequest.onAuthRequired.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback, filter, extraInfoSpec)
+
Ajoute un écouteur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si écouteur est enregistré à cet événement. Retourne true s'il est à l'écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

 Une fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants :

+ +
+
details
+
object. Détails sur la demande. Voir les détails ci-dessous.
+
+ +

Retourne : {{WebExtAPIRef('webRequest.BlockingResponse')}} ou une Promise.

+ +
    +
  • Pour traiter la requête de manière synchrone, inclure"blocking" dans le paramètre extraInfoSpec et retourner un objet BlockingResponse, avec son cancel ou ses propriétés authCredentials.
  • +
  • Pour traiter la requête de manière asynchrone, inclure "blocking" dans le paramètre extraInfoSpec et retourner une Promise qui est résolue avec un objet  BlockingResponse, avec son cancel ou ses propriétés authCredentials.
  • +
+
+
filter
+
{{WebExtAPIRef('webRequest.RequestFilter')}}. Un filtre qui restreint les événements qui seront envoyés à cet auditeur.
+
extraInfoSpec{{optional_inline}}
+
array de string. Options supplémentaires pour l'événement. Vous pouvez passer n'importe laquelle des valeurs suivantes :
+
+
    +
  • "blocking": faire le blocage de la demande, afin que vous puissiez annuler la demande ou fournir des informations d'authentification.
  • +
  • "responseHeaders": inclure responseHeaders dans l'objet details transmis à l'auditeur
  • +
+
+
+ +

Objets supplémentaires

+ +

détails

+ +
+
challenger
+
object. Le serveur demandant l'authentification. C'est un objet avec les propriétés suivantes :
+
+
+
host
+
string. Le nom d'hôte du serveur.
+ Warning: Contrairement à chrome, Firefox retournera l'hôte demandé au lieu du proxy demandant l'authentification, même si isProxy est true.
+
port
+
integer. Le numéro de port du serveur.
+
+
+
frameId
+
integer. 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é (type is main_frame or sub_frame), frameId indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet.
+
isProxy
+
boolean. true pour Proxy-Authenticate, false pour WWW-Authenticate. Note: webRequest.onAuthRequired 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.
+
method
+
string. Méthode HTTP standard : par exemple, "GET" ou "POST".
+
parentFrameId
+
integer. 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.
+
proxyInfo
+
+

object. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes :

+ +
+
host
+
string. Le nom d'hôte du serveur proxy.
+
port
+
integer. Le numéro de port du serveur proxy.
+
type
+
+

string. Le type de serveur proxy. L'un des :

+ +
    +
  • "http": proxy HTTP (ou SSL CONNECT pour HTTPS)
  • +
  • "https": proxy HTTP sur connexion TLS vers proxy
  • +
  • "socks": SOCKS v5 proxy
  • +
  • "socks4": SOCKS v4 proxy
  • +
  • "direct": pas de proxy
  • +
  • "unknown": proxy inconnu
  • +
+
+
username
+
string. Nom d'utilisateur pour le service proxy.
+
proxyDNS
+
boolean. 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.
+
failoverTimeout
+
integer. 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 FindProxyForURL() sera utilisé.
+
+
+
realm{{optional_inline}}
+
string. La zone d'authentification realm fournie par le serveur, s'il y en a un.
+
requestId
+
string. 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.
+
+
+
+
+
responseHeaders{{optional_inline}}
+
{{WebExtAPIRef('webRequest.HttpHeaders')}}. Les en-têtes de réponse HTTP qui ont été reçus avec cette réponse.
+
scheme
+
string. Le schéma d'authentification : "basic" ou "digest".
+
statusCode
+
integer. Code d'état HTTP standard renvoyé par le serveur.
+
statusLine
+
string. 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
+
tabId
+
integer. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet.
+
timeStamp
+
number. L'heure à laquelle cet événement s'est déclenché, en millisecondes depuis l'époque.
+
type
+
{{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet".
+
url
+
string. Cible de la demande.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webRequest.onAuthRequired", 10)}}

+ +

Exemples

+ +

Ce code n'observe que les demandes d'authentification pour l'URL cible :

+ +
var target = "https://intranet.company.com/";
+
+function observe(requestDetails) {
+  console.log("observing: " + requestDetails.requestId);
+}
+
+browser.webRequest.onAuthRequired.addListener(
+  observe,
+  {urls: [target]}
+);
+ +

Ce code annule les demandes d'authentification pour l'URL cible :

+ +
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"]
+);
+ +

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 :

+ +
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]}
+);
+ +

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 :

+ +
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]}
+);
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.webRequest. Cette documentation est dérivée de web_request.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Déclenché lorsqu'une redirection initiée par le serveur est sur le point de se produire.

+ +

Notez que vous ne pouvez pas passer le "blockage" pour cet événement, donc vous ne pouvez pas modifier ou annuler la demande de cet événement : c'est uniquement à titre d'information.

+ +

Syntaxe

+ +
browser.webRequest.onBeforeRedirect.addListener(
+  listener,             // function
+  filter,               //  object
+  extraInfoSpec         //  optional array of strings
+)
+browser.webRequest.onBeforeRedirect.removeListener(listener)
+browser.webRequest.onBeforeRedirect.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback, filter, extraInfoSpec)
+
Ajouter un auditeur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'auditeur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré à cet événement. Retourne true s'il est écouté, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Une fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants :

+ +
+
details
+
object. Détails sur la demande. Voir les détails ci-dessous.
+
+
+
filter
+
{{WebExtAPIRef('webRequest.RequestFilter')}}. Un filtre qui restreint les événements qui seront envoyés à cet auditeur.
+
extraInfoSpec{{optional_inline}}
+
array de string. Options supplémentaires pour l'événement. Vous ne pouvez passer qu'une seule valeur :
+
+
    +
  • "responseHeaders": inclure responseHeaders dans l'objet détails transmis à l'auditeur.
  • +
+
+
+ +

Objets supplémentaires

+ +

détails

+ +
+
documentUrl
+
string. 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 documentUrl pour l'image ou l'iframe sera "https://example.com". Pour un document de niveau supérieur, documentUrl n'est pas défini.
+
frameId
+
integer. 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é (type is main_frame or sub_frame), frameId indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet.
+
fromCache
+
boolean. Indique si cette réponse a été récupérée dans le cache du disque.
+
ip{{optional_inline}}
+
string. 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.
+
method
+
string. Méthode HTTP standard : par exemple, "GET" ou "POST".
+
originUrl
+
+

string. 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 originUrl de la requête résultante est "https://example.com".

+ +

L'originUrl est souvent mais pas toujours la même chose que documentUrl.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 documentUrl pour la requête résultante sera le document parent de l'iframe, mais l'originUrl sera l'URL du document dans l'iframe qui contenait le lien.

+ + +
+
parentFrameId
+
integer. 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.
+
proxyInfo
+
+

object. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes :

+ +
+
host
+
string. Le nom d'hôte du serveur proxy.
+
port
+
integer. Le numéro de port du serveur proxy.
+
type
+
+

string. Le type de serveur proxy. L'un des :

+ +
    +
  • "http": proxy HTTP (ou SSL CONNECT pour HTTPS)
  • +
  • "https": proxy HTTP sur connexion TLS vers proxy
  • +
  • "socks": SOCKS v5 proxy
  • +
  • "socks4": SOCKS v4 proxy
  • +
  • "direct": pas de proxy
  • +
  • "unknown": proxy inconnu
  • +
+
+
username
+
string. Nom d'utilisateur pour le service proxy.
+
proxyDNS
+
boolean. 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.
+
failoverTimeout
+
integer. 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.
+
+
+
redirectUrl
+
string. La nouvelle URL.
+
requestId
+
string. 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.
+
responseHeaders{{optional_inline}}
+
{{WebExtAPIRef('webRequest.HttpHeaders')}}. Les en-têtes de réponse HTTP qui ont été reçus avec cette réponse.
+
statusCode
+
integer. Code d'état HTTP standard renvoyé par le serveur.
+
statusLine
+
string. 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
+
tabId
+
integer. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet.
+
timeStamp
+
number. L'heure à laquelle cet événement s'est déclenché, en millisecondes depuis l'époque.
+
type
+
{{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet".
+
url
+
string. Cible de la demande.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webRequest.onBeforeRedirect", 10)}}

+ +

Exemples

+ +
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]}
+);
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.webRequest. Cette documentation est dérivée de web_request.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Pour annuler ou rediriger la requête, incluez d'abord "blocking" dans l'argument tableau extraInfoSpec pour addListener(). Ensuite, dans la fonction Listener, retournez un objet {{WebExtAPIRef("webRequest.BlockingResponse", "BlockingResponse")}}, en définissant la propriété appropriée :

+ + + +

Si une extension veut rediriger une URL publique (par exemple HTTPS) ver une page d'extension, de l'extension doit contenir une clé web_accessible_resources qui liste l'URL de la page d'extension.

+ +

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  requestId à nouveau si un autre gestionnaire de blocage a redirigé la requête.

+ +

A partir de Firefox 52, au lieu de renvoyer BlockingResponse, l'auditeur peut renvoyer une  Promise qui est résolue avec un BlockingResponse. Ceci permet à l'auditeur de traiter la demande de manière asynchrone.

+ +

Si vous utilisez le "blocking", vous devez avoir la permission de l'API "webRequestBlocking" dans votre manifest.json.

+ +

Syntaxe

+ +
browser.webRequest.onBeforeRequest.addListener(
+  listener,             // function
+  filter,               //  object
+  extraInfoSpec         //  optional array of strings
+)
+browser.webRequest.onBeforeRequest.removeListener(listener)
+browser.webRequest.onBeforeRequest.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback, filter, extraInfoSpec)
+
Ajoute un auditeur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument de l'écouteur est l'écouteur à supprimer.
+
hasListener(listener)
+
Vérifiez si l'écouteur est inscrit à cet événement. Renvoie true s'il est à l'écoute, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants :

+ +
+
details
+
object. Détails sur la demande. Voir les details ci-dessous.
+
+ +

Les retours : {{WebExtAPIRef('webRequest.BlockingResponse')}}. Si "blocking"est spécifié dans le paramètre extraInfoSpec, l'auditeur d'événement doit retourner un objet BlockingResponse, et peut définir soit son annulation, soit ses propriétés  redirectUrl. A partir de Firefox 52, au lieu de renvoyer BlockingResponse,l'auditeur peut renvoyer une Promise qui est résolue avec un BlockingResponse. Ceci permet à l'auditeur de traiter la demande de manière asynchrone.

+
+
filter
+
{{WebExtAPIRef('webRequest.RequestFilter')}}. Un filtre qui restreint les événements qui seront envoyés à cet auditeur.
+
extraInfoSpec{{optional_inline}}
+
array de string. Options supplémentaires pour l'événement. Vous pouvez passer n'importe laquelle des valeurs suivantes :
+
+
    +
  • "blocking": rendre la requête synchrone, de sorte que vous pouvez annuler ou rediriger la requête
  • +
  • "requestBody": include requestBody dans l'objet details transmis à l'auditeur
  • +
+
+
+ +

Objets supplémentaires

+ +

détails

+ +
+
documentUrl
+
string. 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 documentUrl pour l'image ou l'iframe sera "https://example.com". Pour un document de niveau supérieur, documentUrl n'est pas défini.
+
frameAncestors
+
array. 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.
+
+
+
url
+
string. URL à partir de laquelle le document a été chargé.
+
frameId
+
integer. Le frameId du document. details.frameAncestors[0].frameId est le même que details.parentFrameId.
+
+
+
frameId
+
integer. 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é (type is main_frame or sub_frame), frameId indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet.
+
method
+
string. Méthode HTTP standard : par exemple, "GET" ou "POST".
+
originUrl
+
+

string. 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 originUrl de la requête résultante est "https://example.com".

+ +

L'originUrl est souvent mais pas toujours la même chose que documentUrl.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 documentUrl pour la requête résultante sera le document parent de l'iframe, mais l'originUrl sera l'URL du document dans l'iframe qui contenait le lien.

+
+
parentFrameId
+
integer. 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.
+
proxyInfo
+
+

object. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes :

+ +
+
host
+
string. Le nom d'hôte du serveur proxy.
+
port
+
integer. Le numéro de port du serveur proxy.
+
type
+
+

string. Le type de serveur proxy. L'un des :

+ +
    +
  • "http": proxy HTTP (ou SSL CONNECT pour HTTPS)
  • +
  • "https": proxy HTTP sur connexion TLS vers proxy
  • +
  • "socks": SOCKS v5 proxy
  • +
  • "socks4": SOCKS v4 proxy
  • +
  • "direct": pas de proxy
  • +
  • "unknown": proxy inconnu
  • +
+
+
username
+
string. Nom d'utilisateur pour le service proxy.
+
proxyDNS
+
boolean. 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.
+
failoverTimeout
+
integer. 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.
+
+
+
requestBody{{optional_inline}}
+
object. Contient les données du corps de la requête HTTP. Seulement si extraInfoSpec contient "requestBody".
+
+
+
error{{optional_inline}}
+
string. 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.
+
formData{{optional_inline}}
+
object. 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".
+
Il s'agit d'un dictionnaire dans lequel chaque clé contient la liste de toutes les valeurs de cette clé. Par exemple: {'key': ['value1', 'value2']}. Si les données sont d'un autre type de support, ou si elles sont malformées, l'objet n'est pas présent.
+
raw{{optional_inline}}
+
array of {{WebExtAPIRef('webRequest.UploadData')}}. Si la méthode de requête est PUT ou POST, et que le corps n'est pas déjà analysé dans formData, alors ce tableau contient les éléments de corps de requête non analysés.
+
+
+
requestId
+
string. 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.
+
tabId
+
integer. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet.
+
timeStamp
+
number. L'heure à laquelle cet événement s'est déclenché, en millisecondes depuis l'époque.
+
type
+
{{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet".
+
url
+
string. Cible de la demande.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webRequest.onBeforeRequest", 10)}}

+ +

Ordre de résolution DNS lorsque BlockingResponse est utilisé

+ +

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 à la clarification du problème de BugZilla fournie par les développeurs Mozilla sur la commande de la résolution DNS

+ +

Exemples

+ +

Ce code enregistre l'URL de chaque ressource demandée qui correspond au modèle  <all_urls> :

+ +
function logURL(requestDetails) {
+  console.log("Loading: " + requestDetails.url);
+}
+
+browser.webRequest.onBeforeRequest.addListener(
+  logURL,
+  {urls: ["<all_urls>"]}
+);
+ +

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 Firefox Developer Edition):

+ +
// 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"]
+);
+
+ +

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 Firefox Developer Edition) :

+ +
// 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"]
+);
+ +

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 Promise qui définit une minuterie et se résout avec l'URL de redirection lorsque la minuterie expire :

+ +
// 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"]
+);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.webRequest. Cette documentation est dérivée de web_request.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

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 "requestHeaders" dans un tableau extraInfoSpec.

+ +

Pour modifier les en-têtes de façon synchrone : passez "blocking" dans extraInfoSpec, puis dans votre événement écouté, retournez un BlockingResponse avec une propriété nommée requestHeaders, dont la valeur est l'ensemble des en-têtes de requête à envoyer.

+ +

Pour modifier les en-têtes de façon asynchrone : passez "blocking" dans extraInfoSpec, puis dans votre event listener, retournez une Promise qui est résolue avec une BlockingResponse.

+ +

Si vous utilisez le "blocking", vous devez avoir la "permission de l'API "webRequestBlocking" dans votre manifest.json.

+ +

Il est possible d'étendre le conflit ici. Si deux extensions écoutent onBeforeSendHeaders 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 Cookie, et que le deuxième auditeur supprime tous les en-têtes Cookie, 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.

+ +

Tous les en-têtes réellement envoyés ne sont pas toujours inclus dans requestHeaders. En particulier, les en-têtes liés à la mise en cache (par exemple, Cache-Control, If-Modified-Since, If-None-Match) ne sont jamais envoyés. De plus, le comportement peut différer d'un navigateur à l'autre.

+ +

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 :

+ +
for (let header of e.requestHeaders) {
+  if (header.name.toLowerCase() === desiredHeader) {
+    // process header
+  }
+}
+ +

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é.

+ +

Syntaxe

+ +
browser.webRequest.onBeforeSendHeaders.addListener(
+  listener,             //  function
+  filter,               //  object
+  extraInfoSpec         //  optional array of strings
+)
+browser.webRequest.onBeforeSendHeaders.removeListener(listener)
+browser.webRequest.onBeforeSendHeaders.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback, filter, extraInfoSpec)
+
Ajouter un auditeur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'auditeur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré à cet événement. Retourne true s'il est écouté, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants :

+ +
+
details
+
object. Détails de la demande. Ceci inclura les en-têtes de demande si vous avez inclus "requestHeaders" dans extraInfoSpec.
+
+ +

Retourne : {{WebExtAPIRef('webRequest.BlockingResponse')}}. si "blocking" est spécifié dans le paramètre extraInfoSpec, l'auditeur d'événement doit retourner un objet BlockingResponse, et peut définir sa propriété requestHeaders.

+
+
filter
+
{{WebExtAPIRef('webRequest.RequestFilter')}}. Un ensemble de filtres qui restreint les événements qui seront envoyés à cet auditeur.
+
extraInfoSpec{{optional_inline}}
+
array de string. Options supplémentaires pour l'événement. Vous pouvez passer n'importe laquelle des valeurs suivantes :
+
+
    +
  • "blocking": rendre la requête synchrone, ce qui vous permet de modifier les en-têtes de requête
  • +
  • "requestHeaders": inclure les en-têtes de requête dans l'objet details  transmis à l'auditeur
  • +
+
+
+ +

Objets supplémentaires

+ +

détails

+ +
+
documentUrl
+
string. 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 documentUrl pour l'image ou l'iframe sera "https://example.com". Pour un document de niveau supérieur, documentUrl n'est pas défini.
+
frameId
+
integer. 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é (type is main_frame or sub_frame), frameId indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet.
+
method
+
string. Méthode HTTP standard : par exemple, "GET" ou "POST".
+
originUrl
+
+

string. 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 originUrl de la requête résultante est "https://example.com".

+ +

L'originUrl est souvent mais pas toujours la même chose que documentUrl.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 documentUrl pour la requête résultante sera le document parent de l'iframe, mais l'originUrl sera l'URL du document dans l'iframe qui contenait le lien.

+
+
parentFrameId
+
integer. 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.
+
proxyInfo
+
+

object. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes :

+ +
+
host
+
string. Le nom d'hôte du serveur proxy.
+
port
+
integer. Le numéro de port du serveur proxy.
+
type
+
+

string. Le type de serveur proxy. L'un des :

+ +
    +
  • "http": proxy HTTP (ou SSL CONNECT pour HTTPS)
  • +
  • "https": proxy HTTP sur connexion TLS vers proxy
  • +
  • "socks": SOCKS v5 proxy
  • +
  • "socks4": SOCKS v4 proxy
  • +
  • "direct": pas de proxy
  • +
  • "unknown": proxy inconnu
  • +
+
+
username
+
string. Nom d'utilisateur pour le service proxy.
+
proxyDNS
+
boolean. 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.
+
failoverTimeout
+
integer. 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.
+
+
+
requestHeaders{{optional_inline}}
+
{{WebExtAPIRef('webRequest.HttpHeaders')}}. Les en-têtes de réponse HTTP qui ont été reçus avec cette réponse.
+
requestId
+
string. 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.
+
tabId
+
integer. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet.
+
timeStamp
+
number. L'heure à laquelle cet événement s'est déclenché, en millisecondes depuis l'époque.
+
type
+
{{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet".
+
url
+
string. Cible de la demande.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webRequest.onBeforeSendHeaders", 10)}}

+ +

Exemples

+ +

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/".

+ +
"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"]
+);
+
+ +

Ce code est exactement comme l'exemple précédent, sauf que l'auditeur est asynchrone, retournant une Promise qui est résolue avec les nouveaux en-têtes :

+ +
"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"]
+);
+
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.webRequest. Cette documentation est dérivée de web_request.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Utilisé lorsqu'une demande est complétée.

+ +

Cet événement est à titre d'information seulement.

+ +

Syntaxe

+ +
browser.webRequest.onCompleted.addListener(
+  listener,             // function
+  filter,               //  object
+  extraInfoSpec         //  optional array of strings
+)
+browser.webRequest.onCompleted.removeListener(listener)
+browser.webRequest.onCompleted.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback, filter, extraInfoSpec)
+
Ajouter un auditeur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'auditeur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré à cet événement. Retourne true s'il est écouté, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Une fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants :

+ +
+
details
+
object. Details sur la demande. voir les détails ci-dessous.
+
+
+
filter
+
{{WebExtAPIRef('webRequest.RequestFilter')}}. Un filtre qui restreint les événements qui seront envoyés à cet auditeur.
+
extraInfoSpec{{optional_inline}}
+
array of string. Options supplémentaires pour l'événement. Vous ne pouvez passer qu'une seule valeur :
+
+
    +
  • "responseHeaders": inclure responseHeaders dans l'objet details transmis à l'auditeur
  • +
+
+
+ +

objets supplémentaires

+ +

détails

+ +
+
documentUrl
+
string. 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 documentUrl pour l'image ou l'iframe sera "https://example.com". Pour un document de niveau supérieur, documentUrl n'est pas défini.
+
frameId
+
integer. 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é (type is main_frame or sub_frame), frameId indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet.
+
fromCache
+
boolean. Indique si cette réponse a été récupérée dans le cache du disque.
+
ip{{optional_inline}}
+
string. 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.
+
method
+
string. Méthode HTTP standard : par exemple, "GET" ou "POST".
+
originUrl
+
+

string. 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 originUrl de la requête résultante est "https://example.com".

+ +

L'originUrl est souvent mais pas toujours la même chose que documentUrl.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 documentUrl pour la requête résultante sera le document parent de l'iframe, mais l'originUrl sera l'URL du document dans l'iframe qui contenait le lien.

+
+
parentFrameId
+
integer. 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.
+
proxyInfo
+
+

object. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes :

+ +
+
host
+
string. Le nom d'hôte du serveur proxy.
+
port
+
integer. Le numéro de port du serveur proxy.
+
type
+
+

string. Le type de serveur proxy. L'un des :

+ +
    +
  • "http": proxy HTTP (ou SSL CONNECT pour HTTPS)
  • +
  • "https": proxy HTTP sur connexion TLS vers proxy
  • +
  • "socks": SOCKS v5 proxy
  • +
  • "socks4": SOCKS v4 proxy
  • +
  • "direct": pas de proxy
  • +
  • "unknown": proxy inconnu
  • +
+
+
username
+
string. Nom d'utilisateur pour le service proxy.
+
proxyDNS
+
boolean. 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.
+
failoverTimeout
+
integer. 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.
+
+
+
requestId
+
string. 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.
+
responseHeaders{{optional_inline}}
+
{{WebExtAPIRef('webRequest.HttpHeaders')}}. Les en-têtes de réponse HTTP qui ont été reçus avec cette réponse.
+
statusCode
+
integer. Code d'état HTTP standard renvoyé par le serveur.
+
statusLine
+
string. 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
+
tabId
+
integer. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet.
+
timeStamp
+
number. L'heure à laquelle cet événement s'est déclenché, en millisecondes depuis l'époque.
+
type
+
{{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet".
+
url
+
string. Cible de la demande.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webRequest.onCompleted", 10)}}

+ +

Exemples

+ +
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]}
+);
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.webRequest. Cette documentation est dérivée de web_request.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Utilisé lorsqu'une demande n'a pas pu être traitée en raison d'une erreur : par exemple, un manque de connectivité Internet.

+ +

L'erreur est transmise à l'auditeur en tant que propriété d'erreur de l'objet details.

+ +

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 details.statusCode pour signaler l'erreur.

+ +

Cet événement est à titre d'information seulement.

+ +

Syntaxe

+ +
browser.webRequest.onErrorOccurred.addListener(
+  listener,             // function
+  filter                //  object
+)
+browser.webRequest.onErrorOccurred.removeListener(listener)
+browser.webRequest.onErrorOccurred.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback, filter, extraInfoSpec)
+
Ajouter un auditeur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'auditeur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré à cet événement. Retourne true s'il est écouté, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Une fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants :

+ +
+
details
+
object. Détails sur la demande. Voir les details ci-dessous.
+
+
+
filter
+
{{WebExtAPIRef('webRequest.RequestFilter')}}. Un filtre qui restreint les événements qui seront envoyés à cet auditeur.
+
+ +

objets supplémentaires

+ +

détails

+ +
+
documentUrl
+
string. 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 documentUrl pour l'image ou l'iframe sera "https://example.com". Pour un document de niveau supérieur, documentUrl n'est pas défini.
+
error
+
string. 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.
+
frameId
+
integer. 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é (type is main_frame or sub_frame), frameId indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet.
+
fromCache
+
boolean. Indique si cette réponse a été récupérée dans le cache du disque.
+
ip{{optional_inline}}
+
string. 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.
+
method
+
string. Méthode HTTP standard : par exemple, "GET" ou "POST".
+
originUrl
+
+

string. 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 originUrl de la requête résultante est "https://example.com".

+ +

L'originUrl est souvent mais pas toujours la même chose que documentUrl.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 documentUrl pour la requête résultante sera le document parent de l'iframe, mais l'originUrl sera l'URL du document dans l'iframe qui contenait le lien.

+
+
parentFrameId
+
integer. 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.
+
proxyInfo
+
+

object. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes :

+ +
+
host
+
string. Le nom d'hôte du serveur proxy.
+
port
+
integer. Le numéro de port du serveur proxy.
+
type
+
+

string. Le type de serveur proxy. L'un des :

+ +
    +
  • "http": proxy HTTP (ou SSL CONNECT pour HTTPS)
  • +
  • "https": proxy HTTP sur connexion TLS vers proxy
  • +
  • "socks": SOCKS v5 proxy
  • +
  • "socks4": SOCKS v4 proxy
  • +
  • "direct": pas de proxy
  • +
  • "unknown": proxy inconnu
  • +
+
+
username
+
string. Nom d'utilisateur pour le service proxy.
+
proxyDNS
+
boolean. 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.
+
failoverTimeout
+
integer. 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.
+
+
+
requestId
+
string. 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.
+
tabId
+
integer. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet.
+
timeStamp
+
number. L'heure à laquelle cet événement s'est déclenché, en millisecondes depuis l'époque.
+
type
+
{{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet".
+
url
+
string. Cible de la demande.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webRequest.onErrorOccurred", 10)}}

+ +

Exemples

+ +
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]}
+);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.webRequest. Cette documentation est dérivée de web_request.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

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 "responseHeaders" dans le tableau extraInfoSpec.

+ +

Pour modifier les en-têtes, passez "blocking" dans extraInfoSpec. Ensuite, dans votre écouteur d'événements, retournez un objet avec une propriété nommée responseHeaders, 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.

+ +

A partir de Firefox 52, au lieu de renvoyer BlockingResponse, l'auditeur peut renvoyer une Promesse qui est résolue avec un BlockingResponse. Ceci permet à l'auditeur de traiter la demande de manière asynchrone.

+ +

Si vous utilisez le "blocking", vous devez avoir la permission de l'API "webRequestBlocking" dans votre manifest.json.

+ +

Notez qu'il est possible que des extensions entrent en conflit ici. Si deux extensions écoutent onHeadersReceived pour la même requête et retournent responseHeaders essayant de définir le même en-tête (par exemple, Content-Security-Policy), 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
+  

+ +

Syntaxe

+ +
browser.webRequest.onHeadersReceived.addListener(
+  listener,             // function
+  filter,               //  object
+  extraInfoSpec         //  optional array of strings
+)
+browser.webRequest.onHeadersReceived.removeListener(listener)
+browser.webRequest.onHeadersReceived.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback, filter, extraInfoSpec)
+
Ajouter un auditeur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'auditeur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré à cet événement. Retourne true s'il est écouté, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants :

+ +
+
details
+
object. Détails de la demande. Ceci inclura les en-têtes de réponse si vous avez inclus "responseHeaders" dans extraInfoSpec.
+
+ +

Retourne : {{WebExtAPIRef('webRequest.BlockingResponse')}}. Si "blocking" est spécifié dans le paramètre extraInfoSpec, l'auditeur d'événement doit retourner un objet BlockingResponse, et peut définir sa propriété responseHeaders.

+
+
filter
+
{{WebExtAPIRef('webRequest.RequestFilter')}}. Un ensemble de filtres qui restreint les événements qui seront envoyés à cet auditeur.
+
extraInfoSpec{{optional_inline}}
+
array de string. Options supplémentaires pour l'événement. Vous pouvez passer n'importe laquelle des valeurs suivantes :
+
+
    +
  • "blocking" pour rendre la requête synchrone, de sorte que vous pouvez modifier les en-têtes de requête et réponse.
  • +
  • "responseHeaders" pour inclure les en-têtes de réponse dans l'objet  détails transmis à l'auditeur
  • +
+
+
+ +

objets supplémentaires

+ +

détails

+ +
+
documentUrl
+
string. 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 documentUrl pour l'image ou l'iframe sera "https://example.com". Pour un document de niveau supérieur, documentUrl n'est pas défini.
+
frameId
+
integer. 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é (type is main_frame or sub_frame), frameId indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet.
+
method
+
string. Méthode HTTP standard : par exemple, "GET" ou "POST".
+
originUrl
+
+

string. 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 originUrl de la requête résultante est "https://example.com".

+ +

L'originUrl est souvent mais pas toujours la même chose que documentUrl.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 documentUrl pour la requête résultante sera le document parent de l'iframe, mais l'originUrl sera l'URL du document dans l'iframe qui contenait le lien.

+
+
parentFrameId
+
integer. 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.
+
proxyInfo
+
+

object. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes :

+ +
+
host
+
string. Le nom d'hôte du serveur proxy.
+
port
+
integer. Le numéro de port du serveur proxy.
+
type
+
+

string. Le type de serveur proxy. L'un des :

+ +
    +
  • "http": proxy HTTP (ou SSL CONNECT pour HTTPS)
  • +
  • "https": proxy HTTP sur connexion TLS vers proxy
  • +
  • "socks": SOCKS v5 proxy
  • +
  • "socks4": SOCKS v4 proxy
  • +
  • "direct": pas de proxy
  • +
  • "unknown": proxy inconnu
  • +
+
+
username
+
string. Nom d'utilisateur pour le service proxy.
+
proxyDNS
+
boolean. 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.
+
failoverTimeout
+
integer. 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.
+
+
+
requestId
+
string. 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.
+
responseHeaders{{optional_inline}}
+
{{WebExtAPIRef('webRequest.HttpHeaders')}}. Les en-têtes de réponse HTTP qui ont été reçus avec cette réponse.
+
statusCode
+
integer. Code d'état HTTP standard renvoyé par le serveur.
+
statusLine
+
string. 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
+
tabId
+
integer. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet.
+
timeStamp
+
number. L'heure à laquelle cet événement s'est déclenché, en millisecondes depuis l'époque.
+
type
+
{{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet".
+
url
+
string. Cible de la demande.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webRequest.onHeadersReceived", 10)}}

+ +

Exemples

+ +

Ce code définit un cookie supplémentaire lors de la demande d'une ressource à partir de l'URL cible :

+ +
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"]
+);
+ +

Ce code fait la même chose que l'exemple précédent, sauf que l'auditeur est asynchrone, retournant une Promise qui est résolue avec les nouveaux en-têtes :

+ +
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"]
+);
+
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.webRequest. Cette documentation est dérivée de web_request.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Lancé lorsque le premier octet du corps de réponse est reçu.

+ +

Cet événement est à titre d'information seulement.

+ +

Syntaxe

+ +
browser.webRequest.onResponseStarted.addListener(
+  listener,             // function
+  filter,               //  object
+  extraInfoSpec         //  optional array of strings
+)
+browser.webRequest.onResponseStarted.removeListener(listener)
+browser.webRequest.onResponseStarted.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback, filter, extraInfoSpec)
+
Ajouter un auditeur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'auditeur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré à cet événement. Retourne true s'il est écouté, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Une fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants :

+ +
+
details
+
object. Détails sur la demande. Voir les details ci-dessous.
+
+
+
filter
+
{{WebExtAPIRef('webRequest.RequestFilter')}}. Un filtre qui restreint les événements qui seront envoyés à cet auditeur.
+
extraInfoSpec{{optional_inline}}
+
array de string. Options supplémentaires pour l'événement. Vous ne pouvez passer qu'une seule valeur :
+
+
    +
  • "responseHeaders": inclure responseHeaders dans l'objet détails transmis à l'auditeur
  • +
+
+
+ +

Objets supplémentaires

+ +

détails

+ +
+
documentUrl
+
string. 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 documentUrl pour l'image ou l'iframe sera "https://example.com". Pour un document de niveau supérieur, documentUrl n'est pas défini.
+
frameId
+
integer. 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é (type is main_frame or sub_frame), frameId indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet.
+
fromCache
+
boolean. Indique si cette réponse a été récupérée dans le cache du disque.
+
ip{{optional_inline}}
+
string. 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.
+
method
+
string. Méthode HTTP standard : par exemple, "GET" ou "POST".
+
originUrl
+
+

string. 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 originUrl de la requête résultante est "https://example.com".

+ +

L'originUrl est souvent mais pas toujours la même chose que documentUrl.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 documentUrl pour la requête résultante sera le document parent de l'iframe, mais l'originUrl sera l'URL du document dans l'iframe qui contenait le lien.

+
+
parentFrameId
+
integer. 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.
+
proxyInfo
+
+

object. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes :

+ +
+
host
+
string. Le nom d'hôte du serveur proxy.
+
port
+
integer. Le numéro de port du serveur proxy.
+
type
+
+

string. Le type de serveur proxy. L'un des :

+ +
    +
  • "http": proxy HTTP (ou SSL CONNECT pour HTTPS)
  • +
  • "https": proxy HTTP sur connexion TLS vers proxy
  • +
  • "socks": SOCKS v5 proxy
  • +
  • "socks4": SOCKS v4 proxy
  • +
  • "direct": pas de proxy
  • +
  • "unknown": proxy inconnu
  • +
+
+
username
+
string. Nom d'utilisateur pour le service proxy.
+
proxyDNS
+
boolean. 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.
+
failoverTimeout
+
integer. 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.
+
+
+
requestId
+
string. 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.
+
responseHeaders{{optional_inline}}
+
{{WebExtAPIRef('webRequest.HttpHeaders')}}. Les en-têtes de réponse HTTP qui ont été reçus avec cette réponse.
+
statusCode
+
integer. Code d'état HTTP standard renvoyé par le serveur.
+
statusLine
+
string. 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
+
tabId
+
integer. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet.
+
timeStamp
+
number. L'heure à laquelle cet événement s'est déclenché, en millisecondes depuis l'époque.
+
type
+
{{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet".
+
url
+
string. Cible de la demande.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webRequest.onResponseStarted", 10)}}

+ +

Exemples

+ +
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]}
+);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.webRequest. Cette documentation est dérivée de web_request.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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  {{WebExtAPIRef("webRequest.onBeforeSendHeaders", "onBeforeSendHeaders")}}, vous verrez la version modifiée ici.

+ +

Cet événement est à titre d'information seulement.

+ +

Syntaxe

+ +
browser.webRequest.onSendHeaders.addListener(
+  listener,             // function
+  filter,               //  object
+  extraInfoSpec         //  optional array of strings
+)
+browser.webRequest.onSendHeaders.removeListener(listener)
+browser.webRequest.onSendHeaders.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback, filter, extraInfoSpec)
+
Ajouter un auditeur à cet événement.
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument listener est l'auditeur à supprimer.
+
hasListener(listener)
+
Vérifiez si listener est enregistré à cet événement. Retourne true s'il est écouté, sinon false.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants :

+ +
+
details
+
object. Détails sur la demande. Voir les details ci-dessous.
+
+
+
filter
+
{{WebExtAPIRef('webRequest.RequestFilter')}}. Un filtre qui restreint les événements qui seront envoyés à cet auditeur.
+
extraInfoSpec{{optional_inline}}
+
array de string. Options supplémentaires pour l'événement. Vous ne pouvez passer qu'une seule valeur ici :
+
+
    +
  • "requestHeaders": inclure les en-têtes de requête dans l'objet détails transmis à l'auditeur
  • +
+
+
+ +

Objets supplémentaires

+ +

détails

+ +
+
documentUrl
+
string. 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 documentUrl pour l'image ou l'iframe sera "https://example.com". Pour un document de niveau supérieur, documentUrl n'est pas défini.
+
frameId
+
integer. 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é (type is main_frame or sub_frame), frameId indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet.
+
method
+
string. Méthode HTTP standard : par exemple, "GET" ou "POST".
+
originUrl
+
+

string. 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 originUrl de la requête résultante est "https://example.com".

+ +

L'originUrl est souvent mais pas toujours la même chose que documentUrl.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 documentUrl pour la requête résultante sera le document parent de l'iframe, mais l'originUrl sera l'URL du document dans l'iframe qui contenait le lien.

+
+
parentFrameId
+
integer. 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.
+
proxyInfo
+
+

object. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes :

+ +
+
host
+
string. Le nom d'hôte du serveur proxy.
+
port
+
integer. Le numéro de port du serveur proxy.
+
type
+
+

string. Le type de serveur proxy. L'un des :

+ +
    +
  • "http": proxy HTTP (ou SSL CONNECT pour HTTPS)
  • +
  • "https": proxy HTTP sur connexion TLS vers proxy
  • +
  • "socks": SOCKS v5 proxy
  • +
  • "socks4": SOCKS v4 proxy
  • +
  • "direct": pas de proxy
  • +
  • "unknown": proxy inconnu
  • +
+
+
username
+
string. Nom d'utilisateur pour le service proxy.
+
proxyDNS
+
boolean. 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.
+
failoverTimeout
+
integer. 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.
+
+
+
requestId
+
string. 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.
+
requestHeaders{{optional_inline}}
+
{{WebExtAPIRef('webRequest.HttpHeaders')}}. Les en-têtes de réponse HTTP qui ont été reçus avec cette réponse.
+
tabId
+
integer. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet.
+
timeStamp
+
number. L'heure à laquelle cet événement s'est déclenché, en millisecondes depuis l'époque.
+
type
+
{{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet".
+
url
+
string. Cible de la demande.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webRequest.onSendHeaders", 10)}}

+ +

Exemples

+ +

Ce code enregistre tous les cookies qui seront envoyés en faisant des demandes au modèle de match cible :

+ +
// 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"]
+);
+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.webRequest. Cette documentation est dérivée de web_request.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Un objet décrivant les filtres à appliquer aux événements webRequest.

+ +

Type

+ +

Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :

+ +
+
urls
+
array de string. Un tableau de motifs (Match patterns). 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.
+
types{{optional_inline}}
+
array de {{WebExtAPIRef('webRequest.ResourceType')}}. 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.
+
tabId{{optional_inline}}
+
integer. L'auditeur ne sera appelé que pour les requêtes provenant du {{WebExtAPIRef("tabs.Tab", "tab")}} identifié par cet ID.
+
windowId{{optional_inline}}
+
integer. L'auditeur ne sera appelé que pour les requêtes provenant du  {{WebExtAPIRef("windows.Window", "window")}} identifié par cet ID.
+
incognito {{optional_inline}}
+
boolean. Si elles sont fournies, les demandes qui ne correspondent pas à l'état incognito (true ou false) seront filtrées.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webRequest.RequestFilter")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.webRequest. Cette documentation est dérivée de web_request.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Il est utilisé pour filtrer 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.

+ +

Type

+ +

Les valeurs de ce type sont des chaînes de caractères. Les valeurs possibles sont :

+ +
+
beacon
+
Demandes envoyées par le biais de l'API Beacon.
+
csp_report
+
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.
+
font
+
Polices Web chargées pour un {{cssxref("@font-face")}} règle CSS.
+
image
+
Les ressources chargées pour être rendues sous forme d'image, à l'exception de  imageset sur les navigateurs qui prennent en charge ce type (voir la compatibilité des navigateurs ci-dessous).
+
imageset
+
Images chargées par un élément {{HTMLElement("picture")}} ou données dans un attribut {{htmlattrxref("srcset", "img")}} d'un élement <img>.
+
+ +
+
main_frame
+
Documents de niveau chargés dans un objet.
+
media
+
Ressources chargées par un élément  {{HTMLElement("video")}} ou  {{HTMLElement("audio")}}.
+
object
+
Ressources chargées par un élément {{HTMLElement("object")}} ou {{HTMLElement("embed")}}.
+
Les navigateurs qui n'ont pas de type object_subrequest dédié (voir compatibilité des navigateurs ci-dessous), étiquettent également les requêtes ultérieures envoyées par le plugin en tant object.
+
object_subrequest
+
Requêtes envoyées par plugins.
+
ping
+
Demandes envoyées à l'URL donnée dans l'attribut {{htmlattrxref("ping", "a")}} d'un hyperlien, lorsque l'hyperlien est suivi..
+
 Les navigateurs qui n'ont pas de type de balise dédié (voir la compatibilité des navigateurs ci-dessous), étiquettent également les requêtes envoyées par l'API Beacon en tant que ping.
+
script
+
Code chargé pour être exécuté par un élément {{HTMLElement("script")}} ou exécuté dans un Worker.
+
speculative
+
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.
+
stylesheet
+
Feuilles de style CSS chargées pour décrire la représentation d'un document.
+
sub_frame
+
Documents chargés dans un élément {{HTMLElement("iframe")}} ou {{HTMLElement("frame")}}.
+
web_manifest
+
Manifests Web App chargés pour les sites Web qui peuvent être installés sur l'écran d'accueil.
+
websocket
+
Requêtes initiant une connexion à un serveur via l'API WebSocket.
+
xbl
+
XBL bindings chargés pour étendre le comportement des éléments d'un document.
+
xml_dtd
+
DTDs chargées pour un document XML.
+
xmlhttprequest
+
Requêtes envoyées par un objet {{domxref("XMLHttpRequest")}} ou par l'API Fetch.
+
xslt
+
Feuilles de style XSLT chargées pour transformer un document XML
+
other
+
Ressources qui ne sont couvertes par aucun autre type disponible.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webRequest.ResourceType")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.webRequest. Cette documentation est dérivée de web_request.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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()")}}.

+ +

Si la requête n'est pas sécurisée par TLS, alors cet objet ne contiendra que l'état de la propriété state, dont la valeur sera "insecure".

+ +

Type

+ +

Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :

+ +
+
certificates
+
Array de {{WebExtAPIRef("webRequest.CertificateInfo", "CertificateInfo")}}. Si {{WebExtAPIRef("webRequest.getSecurityInfo()")}} a été appelé avec l'option certificateChain présente et définie sur true, cela contiendra un objet CertificateInfo pour chaque certificat de la chaîne, depuis le certificat du serveur jusqu'à et y compris la racine de confiance.
+
Sinon, il contiendra un seul objet CertificateInfo, pour le certificat du serveur.
+
certificateTransparencyStatus {{optional_inline}}
+
+

String. Indique l'état de la transparence des certificats pour la connexion. Ceci peut prendre l'une des valeurs suivantes :

+ +
    +
  • "not_applicable"
  • +
  • "policy_compliant"
  • +
  • "policy_not_enough_scts"
  • +
  • "policy_not_diverse_scts"
  • +
+
+
cipherSuite {{optional_inline}}
+
String. Suite de chiffrement utilisée pour la connexion, formatée selon la specification TLS : par exemple, "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256".
+
errorMessage {{optional_inline}}
+
+

String. 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 status will be "broken" and the errorMessage property will contain a string describing the error, taken from Firefox's internal list of error codes.

+ +

Note though that at present you can only call getSecurityInfo() in the onHeaderReceived listener, and the onHeaderReceived event is not fired when the handshake fails. So in practice this will never be set. 

+
+
hpkp {{optional_inline}}
+
Boolean. true si l'hôte utilise Public Key Pinning, sinon false.
+
hsts {{optional_inline}}
+
Boolean. true si l'hôte utilise Strict Transport Security, sinon false.
+
isDomainMismatch {{optional_inline}}
+
Boolean. true si le nom de domaine du serveur ne correspond pas au nom de domaine dans son certificat, sinon false.
+
isExtendedValidation {{optional_inline}}
+
Boolean. true si le serveur possède un Extended Validation Certificate, sinon false.
+
isNotValidAtThisTime {{optional_inline}}
+
Boolean. true 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 false.
+
isUntrusted {{optional_inline}}
+
Boolean. true si une chaîne de retour à un certificat racine de confiance n'a pas pu être construite, sinon false.
+
keaGroupName {{optional_inline}}
+
String. Si state est "sécurisé" cela décrit l'algorithme d'échange de clé utilisé dans cette requête.
+
protocolVersion {{optional_inline}}
+
+

String. Version du protocole TLS utilisé. L'un des :

+ +
    +
  • "TLSv1"
  • +
  • "TLSv1.1"
  • +
  • "TLSv1.2"
  • +
  • "TLSv1.3"
  • +
  • "inconnu" (si la version n'est pas valide)
  • +
+
+
signatureSchemeName {{optional_inline}}
+
String. Si state est "sécurisé", cela décrit le schéma de signature utilisé dans cette requête.t.
+
state
+
+

String. État de la connexion. L'un des :

+ +
    +
  • "broken": la poignée de main TLS a échoué (par exemple, le certificat a expiré)
  • +
  • "insecure": la connexion n'est pas une connexion TLS
  • +
  • "secure": la connexion est une connexion TLS sécurisée
  • +
  • "weak": la connexion est une connexion TLS mais est considérée comme faible. Vous pouvez examiner les weaknessReasons pour découvrir le problème.
  • +
+ +

Notez cependant qu'actuellement, vous ne pouvez appele getSecurityInfo() que dans l'écouteur onHeaderReceived, et l'événement onHeaderReceived n'est pas déclenché lorsque la poignée de main échoue. Ainsi, dans la pratique, il ne sera jamais réglé sur "cassé".

+
+
weaknessReasons {{optional_inline}}
+
String. Si l'état 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.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webRequest.SecurityInfo", 10)}}

+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Notez la différence entre cette fonction et  {{WebExtAPIRef("webRequest.StreamFilter.disconnect()", "disconnect()")}}. Avec  disconnect(), le navigateur continuera à traiter d'autres données de réponse, mais il ne sera pas accessible par le filtre. Avec close(), le navigateur ignorera toutes les données de réponse qui n'ont pas déjà été transmises au moteur de rendu.

+ +

Vous devriez toujours appeler close() ou disconnect() une fois que vous n'avez plus besoin d'interagir avec la réponse.

+ +

Vous ne pouvez pas appeler cette fonction avant que l'événement  {{WebExtAPIRef("webRequest.StreamFilter.onstart", "onstart")}} ne soit déclenché.

+ +

Syntaxe

+ +
filter.close()
+
+ +

Paramètres

+ +

None.

+ +

Valeur retournée

+ +

None.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webRequest.StreamFilter.close", 10)}}

+ +

Exemples

+ +

Cet exemple remplacera le contenu de la page par "texte de remplacement"  :

+ +
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"]
+);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +
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.
+ +
+ +
Notez la différence entre cette fonction et {{WebExtAPIRef("webRequest.StreamFilter.close()", "close()")}}. Avec  disconnect(), le navigateur continuera à traiter d'autres données de réponse, mais il ne sera pas accessible par le filtre. Avec close(), le navigateur ignorera toutes les données de réponse qui n'ont pas déjà été transmises au moteur de rendu.
+ +
+ +

Vous devriez toujours appeler disconnect() ou close() une fois que vous n'avez plus besoin d'interagir avec la réponse.

+ +

Vous ne pouvez pas appeler cette fonction avant que l'événement {{WebExtAPIRef("webRequest.StreamFilter.onstart", "onstart")}} ne soit déclenché.

+ +

Syntaxe

+ +
filter.disconnect()
+
+ +

Paramètres

+ +

None.

+ +

Valeur retournée

+ +

None.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webRequest.StreamFilter.disconnect", 10)}}

+ +

Exemples

+ +

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 :

+ +
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"]
+);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +
+

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")}}.

+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webRequest.StreamFilter.error", 10)}}

+ +

Exemples

+ +

Cet exemple ajoute un écouteur {{WebExtAPIRef("webRequest.StreamFilter.onerror", "onerror")}} qui enregistre la valeur de error.

+ +
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"]
+);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Un StreamFilter est un objet que vous pouvez utiliser pour surveiller et modifier les réponses HTTP.

+ +

Pour créer un StreamFilter, appelez {{WebExtAPIRef("webRequest.filterResponseData()")}}, en lui passant l'ID de la requête web que vous voulez filtrer.

+ +

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.

+ +

Le filtre génère quatre événements différents :

+ + + +

Vous pouvez écouter chaque événement en assignant une fonction d'écoute à son attribut :

+ +
filter.onstart = event => {
+  console.log("started");
+}
+ +

Notez que la demande est bloquée pendant l'exécution de n'importe quel auditeur d'événement.

+ +

Le filtre fournit une fonction {{WebExtAPIRef("webRequest.StreamFilter.write()", "write()")}}. A tout moment à partir de l'événement onstart, vous pouvez utiliser cette fonction pour écrire des données dans le flux de sortie.

+ +

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 write(): donc si vous ajoutez un auditeur mais n'appelez pas write(), alors la page rendue sera vide.

+ +

Une fois que vous avez terminé d'interagir avec la réponse, vous appelez l'un ou l'autre des éléments suivants :

+ + + +

Le filtre fournit également des fonctions à {{WebEXTAPIRef("webRequest.StreamFilter.suspend()", "suspend()")}} et {{WebEXTAPIRef("webRequest.StreamFilter.resume()", "resume()")}} la requête.

+ +

Méthodes

+ +
+
{{WebExtAPIRef("webRequest.StreamFilter.close()")}}
+
Ferme la demande.
+
{{WebExtAPIRef("webRequest.StreamFilter.disconnect()")}}
+
Déconnecte le filtre de la requête.
+
{{WebExtAPIRef("webRequest.StreamFilter.resume()")}}
+
Reprend le traitement de la demande.
+
+ +
+
{{WebExtAPIRef("webRequest.StreamFilter.suspend()")}}
+
Suspend le traitement de la demande.
+
{{WebExtAPIRef("webRequest.StreamFilter.write()")}}
+
Écrit quelques données dans le flux de sortie.
+
+ +

Propriétés

+ +
+
{{WebExtAPIRef("webRequest.StreamFilter.ondata")}}
+
Gestionnaire d'événements qui est appelé lorsque les données entrantes sont disponibles.
+
{{WebExtAPIRef("webRequest.StreamFilter.onerror")}}
+
Gestionnaire d'événements qui est appelé lorsqu'une erreur s'est produite.
+
{{WebExtAPIRef("webRequest.StreamFilter.onstart")}}
+
Gestionnaire d'événements qui est appelé lorsque le flux est sur le point de commencer à recevoir des données.
+
{{WebExtAPIRef("webRequest.StreamFilter.onstop")}}
+
Gestionnaire d'événements qui est appelé lorsque le flux n'a plus de données à livrer et qu'il s'est fermé.
+
{{WebExtAPIRef("webRequest.StreamFilter.error")}}
+
Quand {{WebExtAPIRef("webRequest.StreamFilter.onerror")}} est appelé, cela décrira l'erreur.
+
{{WebExtAPIRef("webRequest.StreamFilter.status")}}
+
Décrit l'état actuel du flux.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webRequest.StreamFilter", 10)}}

+ +

Exemples

+ +

Ce code écoute pour onstart, ondata et onstop. Il enregistre simplement ces événements et les données de réponse elles-mêmes :

+ +
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"]
+);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}} +

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 event qui contient une propriété de data, qui contient un morceau des données de réponse sous la forme d'un {{domxref("ArrayBuffer")}}.

+
+ +

Exemples

+ +

Cet exemple ajoute un écouteur ondata qui remplace "Example" dans la réponse par  "WebExtension Example".

+ +

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.

+ +
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"]
+);
+ +

Un autre exemple pour le traitement de documents volumineux :

+ +
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"]
+);
+ +

L'exemple ci-dessus peut aussi s'écrire ainsi :

+ +
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"]
+);
+ +

Cet exemple utilise un {{domxref("Blob")}}:

+ +
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"]
+);
+ +

Cet exemple combine tous les tampons en un simple tampon :

+ +
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"]
+);
+ +

{{WebExtExamples}}

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webRequest.StreamFilter.ondata", 10)}}

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 +--- +
{{AddonSidebar()}}
+ +
+

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()")}}.

+ +

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.

+ +

Notez que cet événement n'est pas déclenché pour les erreurs réseau.

+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webRequest.StreamFilter.onerror", 10)}}

+ +

Exemples

+ +

Cet exemple ajoute un écouteur onerror qui enregistre la valeur de  {{WebExtAPIRef("webRequest.StreamFilter.error")}}.

+ +
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"]
+);
+
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +
+

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()")}}.

+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webRequest.StreamFilter.onstart", 10)}}

+ +

Exemples

+ +

Cet exemple remplacera le contenu de la page par "texte de remplacement" :

+ +
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"]
+);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +
+

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()")}}.

+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webRequest.StreamFilter.onstop", 10)}}

+ +

Exemples

+ +

Cet exemple ajoutera des "extra stuff" à la réponse  :

+ +
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"]
+);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Reprend une requête qui a été précédemment suspendue par un appel à {{WebExtAPIRef("webRequest.StreamFilter.suspend()", "suspend()")}}.

+ +

Vous ne pouvez pas appeler cette fonction avant que l'événement  {{WebExtAPIRef("webRequest.StreamFilter.onstart", "onstart")}} ne soit déclenché.

+ +

Syntaxe

+ +
filter.suspend()
+
+ +

Paramètres

+ +

None.

+ +

Valeur retournée

+ +

None.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webRequest.StreamFilter.suspend", 10)}}

+ +

Exemples

+ +

Cet exemple utilise la suspend/resume pour retarder une requête web

+ +
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"]
+);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +
+

Une chaîne de caractères qui décrit l'état actuel de la demande. Ce sera l'une des valeurs suivantes :

+ +
+
"uninitialized"
+
Le filtre n'est pas entièrement initialisé. Aucune fonction de filtrage ne peut être appelée.
+
"transferringdata"
+
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()")}}.
+
"finishedtransferringdata"
+
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.
+
"suspended"
+
 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.
+
"closed"
+
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.
+
"disconnected"
+
 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.
+
"failed"
+
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.
+
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webRequest.StreamFilter.status", 10)}}

+ +

Exemples

+ +
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"]
+);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

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()")}}.

+ +

Vous ne pouvez pas appeler cette fonction avant que l'événement {{WebExtAPIRef("webRequest.StreamFilter.onstart", "onstart")}} ne soit déclenché.

+ +

Syntaxe

+ +
filter.suspend()
+
+ +

Paramètres

+ +

None.

+ +

Valeur retournée

+ +

None.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webRequest.StreamFilter.suspend", 10)}}

+ +

Exemples

+ +

Cet exemple utilise la suspend/resume pour retarder une requête web.

+ +
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"]
+);
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +
Écrit quelques données de réponse dans le flux de sortie..
+ +
+ +
Vous ne pouvez appeler cette fonction qu'après le déclenchement de l'événement {{WebExtAPIRef("webRequest.StreamFilter.onstart", "onstart")}}.
+ +
+ +

Syntaxe

+ +
filter.write(
+  data    // ArrayBuffer or Uint8Array
+)
+
+ +

Paramètres

+ +
+
data
+
Uint8Array ou ArrayBuffer: tableau d'octets contenant les données à transmettre au moteur de rendu du navigateur.
+
+ +

Valeur retournée

+ +

None.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webRequest.StreamFilter.write", 10)}}

+ +

Exemples

+ +

Cet exemple utilise write() pour remplacer "Example" dans la réponse par  "WebExtension Example".

+ +
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"]
+);
+
+ +

{{WebExtExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

Contient les données téléchargées dans une requête URL..

+ +

Type

+ +

Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :

+ +
+
bytes{{optional_inline}}
+
any. Un ArrayBuffer avec une copie des données.
+
file{{optional_inline}}
+
string. Une chaîne de caractères avec le chemin et le nom du fichier.
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.webRequest.UploadData")}}

+ +

{{WebExtExamples}}

+ +
Remerciements : + +

Cette API est basée sur l'API Chromium chrome.webRequest. Cette documentation est dérivée de web_request.json dans le code Chromium.

+ +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Crée une nouvelle fenêtre.

+ +

Lorsque vous créez la fenêtre, vous pouvez :

+ + + +

Il s'agit d'une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var creating = browser.windows.create(
+  createData            // optional object
+)
+
+ +

Paramètres

+ +
+
createData{{optional_inline}}
+
object.
+
+
+
allowScriptsToClose {{optional_inline}}
+
+

boolean. Lorsque la fenêtre est ouverte, elle contiendra un seul onglet, ou plus d'un onglet si url 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 window.close(). Si vous incluez allowScriptsToClose et le mettez à true ,  alors ce comportement par défaut est modifié, de sorte que les scripts peuvent fermer leurs onglets. Notez cela :

+ +
    +
  • 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.
  • +
  • Si la ou les url(s) donnée(s) dans url pointent vers les pages d'extension (c'est-à-dire qu'il s'agit de pages incluses avec cette extension et chargées avec le protocole "moz-extension:") alors les scripts sont par défaut autorisés à fermer ces onglets.
  • +
+
+
cookieStoreId {{optional_inline}}
+
integer. S'il est présent, spécifie le CookieStoreId pour tous les onglets qui seront créés lorsque la fenêtre sera ouverte.
+
focused {{optional_inline}}
+
boolean. Si c'est vrai, la nouvelle fenêtre sera concentrée. Si c'est false, 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 true.
+
height {{optional_inline}}
+
integer. 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.
+
incognito {{optional_inline}}
+
boolean. Que la nouvelle fenêtre soit une fenêtre privée. Notez que si vous spécifiez incognito et tabId, c'est-à-dire, vous ne pouvez pas déplacer un onglet privé dans une fenêtre privée.
+
left {{optional_inline}}
+
integer. 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().)
+
state {{optional_inline}}
+
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.
+
tabId {{optional_inline}}
+
integer. Si inclus, déplace un onglet de l'ID spécifié d'une fenêtre existante dans la nouvelle fenêtre.
+
titlePreface {{optional_inline}}
+
string. 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).
+
top {{optional_inline}}
+
integer. 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().)
+
type {{optional_inline}}
+
Une valeur {{WebExtAPIRef('windows.CreateType')}} spécifie le type de fenêtre du navigateur à créer. Spécifié le panneau ou la fenêtre contextuelle ici pour ouvrir une fenêtre sans l'interface utilisateur (barre d'adresse, barre d'outils, etc).
+
url {{optional_inline}}
+
string ou array of strings. 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 http://www.google.com, et non www.google.com). Les URL relatives seront relatives à la page actuelle dans l'extension. Par défaut, la nouvelle page d'onglet.
+
width {{optional_inline}}
+
integer. 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.
+
+
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Exemples

+ +

Ouvrir une fenêtre contenant deux onglets :

+ +
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);
+});
+ +

Ouvrez une fenêtre lorsque l'utilisateur clique sur une action du navigateur et déplacez l'onglet actif actuellement :

+ +
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);
+});
+ +

Ouvrez une petite fenêtre de style panneau et chargez-en un fichier local:

+ +
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);
+
+});
+ +

{{WebExtExamples}}

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.windows.create", 10)}}

+ +
Remerciements + +

Cette API est basée sur l'API de Chromnium chrome.windows. Cette documentation provient de windows.json dans le code de Chromium.

+ +

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.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Spécifie le type de fenêtre du navigateur à créer.

+ +

Type

+ +

Les valeurs de ce type sont des objets strings. Les valeurs possibles sont :

+ + + +

Compatibilité du navigateur

+ + + + + +

{{Compat("webextensions.api.windows.CreateType")}}

+ + + +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API de Chromnium chrome.windows. Cette documentation provient de windows.json dans le code de Chromium.

+ +

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.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Obtient les détails sur une fenêtre, compte tenu de son identifiant. Les détails sont transmis à un rappel.

+ +

Il s'agit d'une fonction asynchrone qui renvoit une Promise.

+ +

Syntaxe

+ +
var getting = browser.windows.get(
+  windowId,              // integer
+  getInfo                // optional object
+)
+
+ +

Paramètres

+ +
+
windowId
+
integer. L'ID de l'objet de fenêtre souhaité est retourné.
+
getInfo{{optional_inline}}
+
object. Contient des options pour filtrer le type de fenêtre. +
+
populate{{optional_inline}}
+
boolean. 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 url, title et favIconUrl  i le fichier manifeste de l'extension comprend la permission "tabs".
+
windowTypes{{optional_inline}}
+
Ensemble d'objets {{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 ['normal', 'panel', 'popup'], avec des types de fenêtres 'panel' qui sont limités aux propres fenêtres de l'extension.
+
+
+
+ +
Note: + +

Si fourni, le composant windowTypes de getInfo est ignoré. L'utilisation de  windowTypes a été dépréciée à partir de Firefox 62.

+
+ +

Valeur de retour

+ +

Une Promise 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.windows.get",2)}}

+ +

Exemples

+ +

Cet exemple obtient la fenêtre actuelle et enregistre les URL des onglets qu'il contient. Notez que vous aurez besoin des permission "onglets" pour accéder aux URL des onglets.

+ +
+

Note: Cet exemple est un peu irréaliste: dans cette situation, vous utiliserez probablement  {{WebExtAPIRef("windows.getCurrent()")}}.

+
+ +
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);
+});
+
+ +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API de Chromnium chrome.windows. Cette documentation provient de windows.json dans le code de Chromium.

+ +

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.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Obtient des informations sur toutes les fenêtres ouvertes, en les passant dans un rappel.

+ +

Il s'agit d'une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var gettingAll = browser.windows.getAll(
+  getInfo                // optional object
+)
+
+ +

Paramètres

+ +
+
getInfo{{optional_inline}}
+
object. Cela contrôle ce que les objets {{WebExtAPIRef('windows.Window')}} sont récupérés.
+
+
+
populate{{optional_inline}}
+
boolean Par défaut à false.  S'il est défini sur true, chaque objet {{WebExtAPIRef('windows.Window')}} aura une propriété tabs qui contient une liste d'objets {{WebExtAPIRef('tabs.Tab')}} représentant les tabs de cette fenêtre. Les objets Tab contiendront les propriétés url, title et favIconUrl uniquement si le fichier manifest de l'extension contient les permissions "tabs".
+
windowTypes{{optional_inline}}
+
Un ensemble d'objets {{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 ['normal', 'panel', 'popup'], avec des types de fenêtres 'panel' qui sont limités aux propres fenêtres de l'extension.
+
+
+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Compatibilité du navigateur

+ + + + + +

{{Compat("webextensions.api.windows.getAll")}}

+ + + +

Exemples

+ +

Enregistrez les URL pour les onglets sur toutes les fenêtres de navigateur "normales". Notez que vous aurez besoin de permission "onglets" pour accéder aux URLs des onglets.

+ +
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);
+});
+
+ +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API de Chromnium chrome.windows. Cette documentation provient de windows.json dans le code de Chromium.

+ +

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.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Obtient la fenêtre actuelle du navigateur, en passant ses détails dans un rappel.

+ +

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 getCurrent(), il renverra la fenêtre de ce document de la barre latérale.

+ +

Il s'agit d'une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var gettingCurrent = browser.windows.getCurrent(
+  getInfo               // optional object
+)
+
+ +

Paramètres

+ +
+
getInfo{{optional_inline}}
+
object.
+
+
+
populate{{optional_inline}}
+
boolean. 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 url, title et favIconUrl si le fichier manifest de l'extension comprend la permission "tabs".
+
windowTypes{{optional_inline}}
+
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 ['normal', 'panel', 'popup'], avec des types de fenêtres 'panneau' qui sont limités aux propres fenêtres de l'extension.
+
+
+
+ +
Note: + +

Si fourni, le composant windowTypes de getInfo est ignoré. L'utilisation de  windowTypes a été dépréciée à partir de Firefox 62.

+
+ +

Valeur retournée

+ +

Une Promise qui sera remplie avec un objet windows.Window object contenant les détails de la fenêtre. Si une erreur survient, la promesse sera rejetée avec un message d'erreur.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.windows.getCurrent",2)}}

+ +

Exemples

+ +

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 permission "tabs" pour accéder aux URL des onglets.

+ +
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);
+});
+
+ +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API de Chromnium chrome.windows. Cette documentation provient de windows.json dans le code de Chromium.

+ +

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.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Obtient la fenêtre qui a été recentrée récemment — généralement la fenêtre 'en haut'.

+ +

Il s'agit d'une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var gettingWindow = browser.windows.getLastFocused(
+  getInfo               // optional object
+)
+
+ +

Paramètres

+ +
+
getInfo{{optional_inline}}
+
object.
+
+
+
populate{{optional_inline}}
+
boolean. 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 url, title et favIconUrl si le fichier manifest de l'extension comprend la permission "tabs".
+
windowTypes{{optional_inline}}
+
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 ['normal', 'panel', 'popup'], avec le type de fenêtre 'panel' qui sont limités aux propres fenêtres de l'extension.
+
+
+
+ +
Note: + +

Si fourni, le composant windowTypes de getInfo est ignoré. L'utilisation de windowTypes a été dépréciée à partir de Firefox 62.

+
+ +

Valeur retournée

+ +

Une Promise 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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.windows.getLastFocused",2)}}

+ +

Exemples

+ +

Obtenez la dernière fenêtre ciblée et enregistrez les onglets qu'elle contient. Notez que vous aurez besoin de la permission "tabs" pour accéder aux URL des onglets.

+ +
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);
+});
+
+ +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API de Chromnium chrome.windows. Cette documentation provient de windows.json dans le code de Chromium.

+ +

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.

+
+ + 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 +--- +
{{AddonSidebar}}
+ +

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.

+ +

Types

+ +
+
{{WebExtAPIRef("windows.WindowType")}}
+
Le type de fenêtre du navigateur ici.
+
{{WebExtAPIRef("windows.WindowState")}}
+
L'état de cette fenêtre du navigateur.
+
{{WebExtAPIRef("windows.Window")}}
+
Contient des informations sur une fenêtre de navigateur.
+
{{WebExtAPIRef("windows.CreateType")}}
+
Spécifie le type de fenêtre du navigateur à créer.
+
+ +

Constantes

+ +
+
{{WebExtAPIRef("windows.WINDOW_ID_NONE")}}
+
La valeur windowId qui représente l'absence d'une fenêtre de navigateur.
+
{{WebExtAPIRef("windows.WINDOW_ID_CURRENT")}}
+
Une valeur qui peut être utilisée à la place d'un windowId dans certaines APIs pour représenter la fenêtre courante.
+
+ +

Méthodes

+ +
+
{{WebExtAPIRef("windows.get()")}}
+
Obtient les détails sur une fenêtre, compte tenu de son identifiant.
+
{{WebExtAPIRef("windows.getCurrent()")}}
+
Obtient les informations de la fenêtre courante.
+
{{WebExtAPIRef("windows.getLastFocused()")}}
+
Obtient la fenêtre qui a été recentrée plus récemment — généralement la fenêtre « en haut ».
+
{{WebExtAPIRef("windows.getAll()")}}
+
Obtient les informations de toutes les fenêtres
+
{{WebExtAPIRef("windows.create()")}}
+
+

Crée une nouvelle fenêtre.

+
+
{{WebExtAPIRef("windows.update()")}}
+
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.
+
{{WebExtAPIRef("windows.remove()")}}
+
Ferme une fenêtre et tous ses onglets.
+
+ +

Evénements

+ +
+
{{WebExtAPIRef("windows.onCreated")}}
+
Lancé quand une fenêtre est créée.
+
{{WebExtAPIRef("windows.onRemoved")}}
+
Lancé quand une fenêtre est fermée.
+
{{WebExtAPIRef("windows.onFocusChanged")}}
+
Lancé quand la fenêtre courante change.
+
+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.api.windows")}}

+ +

{{WebExtExamples("h2")}}

+ +
Remerciements + +

Cette API est basée sur l'API de Chromnium chrome.windows. Cette documentation provient de windows.json dans le code de Chromium.

+ +

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.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Lancer quand la fenêtre est créée

+ +

Syntaxe

+ +
browser.windows.onCreated.addListener(listener)
+browser.windows.onCreated.removeListener(listener)
+browser.windows.onCreated.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un auditeur à cet événement.
+
removeListener(listener)
+
Arrêter d'écouter cet événement. L'argument de l'auditeur est l'auditeur à supprimer.
+
hasListener(listener)
+
Vérifiez si un auditeur est enregistré pour cet événement. Renvoie vrai si elle répond, Faux sinon.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lors de l'événement. La fonction passera les arguments suivants :

+ +
+
window
+
Un objet {{WebExtAPIRef('windows.Window')}} contenant les détails de la fenêtre qui a été créée.
+
+
+
+ +

Compatibilité du navigateur

+ + + + + +

{{Compat("webextensions.api.windows.onCreated")}}

+ + + +

Exemples

+ +

Enregistrez les ID des nouvelles fenêtres lorsqu'elles sont créées

+ +
browser.windows.onCreated.addListener((window) => {
+  console.log("New window: " + window.id);
+});
+ +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API de Chromnium chrome.windows. Cette documentation provient de windows.json dans le code de Chromium.

+ +

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.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Attiré lorsque la fenêtre actuellement change. Sera {{WebExtAPIRef('windows.WINDOW_ID_NONE')}} si toutes les fenêtres du navigateur ont perdu le focus.

+ +
+

Note: 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.

+
+ +

Syntaxe

+ +
browser.windows.onFocusChanged.addListener(listener)
+browser.windows.onFocusChanged.removeListener(listener)
+browser.windows.onFocusChanged.hasListener(listener)
+
+ +

Les événements ont trois événements :

+ +
+
addListener(callback)
+
Ajoute un auditeur à cet événement
+
removeListener(listener)
+
Arrêtez d'écouter cet événement. L'argument de l'auditeur est l'auditeur à supprimer.
+
hasListener(listener)
+
Vérifiez si un auditeur est enregistré pour cet événement. Renvoie vrai si elle écoute, faux sinon..
+
+ +

syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lors de l'événement. La fonction passera les arguments suivants :

+ +
+
windowId
+
integer. ID de la fenêtre nouvellement localisée.
+
+
+
+ +

Compatibilité du navigateur

+ + + + + +

{{Compat("webextensions.api.windows.onFocusChanged")}}

+ + + +

Exemples

+ +

Changements de mise au point du journal :

+ +
browser.windows.onFocusChanged.addListener((windowId) => {
+  console.log("Newly focused window: " + windowId);
+});
+ +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API de Chromnium chrome.windows. Cette documentation provient de windows.json dans le code de Chromium.

+ +

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.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Lancer quand une fenêtre est fermée.

+ +

Syntax

+ +
browser.windows.onRemoved.addListener(listener)
+browser.windows.onRemoved.removeListener(listener)
+browser.windows.onRemoved.hasListener(listener)
+
+ +

Les événements ont trois fonctions :

+ +
+
addListener(callback)
+
Ajoute un auditeur à cet événement.
+
removeListener(listener)
+
Arrêter d'écouter cet événement. L'argument de l'auditeur est l'auditeur supprimer.
+
hasListener(listener)
+
Vérifie si un auditeur est enregistré pour cet événement. Renvoie vrai si elle écoute, faux sinon.
+
+ +

Syntaxe addListener

+ +

Paramètres

+ +
+
callback
+
+

Fonction qui sera appelée lors de l'événement. La fonction passera les arguments suivants :

+ +
+
windowId
+
integer. ID de la fenêtre fermée.
+
+
+
+ +

Compatibilité du navigateur

+ + + + + +

{{Compat("webextensions.api.windows.onRemoved")}}

+ + + +

Exemples

+ +

Enregistrer les identifiants de la fenêtre lorsqu'ils sont supprimés

+ +
browser.windows.onRemoved.addListener((windowId) => {
+  console.log("Closed window: " + windowId);
+});
+
+ +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API de Chromnium chrome.windows. Cette documentation provient de windows.json dans le code de Chromium.

+ +

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.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Ferme une fenêtre et tous les onglets à l'intérieur, compte tenu de l'ID de la fenêtre.

+ +

Il s'agit d'une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var removing = browser.windows.remove(
+  windowId        // integer
+)
+
+ +

Paramètres

+ +
+
windowId
+
integer. ID of the window to close.
+
+ +

Valeur retournée

+ +

Une Promesse 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.

+ +

Compatibilité du navigateur

+ + + + + +

{{Compat("webextensions.api.windows.remove")}}

+ + + +

Exemples

+ +

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:

+ +
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);
+
+});
+ +


+ Fermez la fenêtre en cours, par exemple une fenêtre contextuelle, lorsque l'utilisateur clique sur un bouton de la page :

+ +
// 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); } });
+ +

Dans Firefox, la même chose pourrait être réalisée avec la propriété de création de fenêtre  .allowScriptsToClose et window.close().

+ +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API de Chromnium chrome.windows. Cette documentation provient de windows.json dans le code de Chromium.

+ +

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.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Il s'agit d'une fonction asynchrone qui renvoie une Promise.

+ +

Syntaxe

+ +
var updating = browser.windows.update(
+  windowId,              // integer
+  updateInfo             // object
+)
+
+ +

Paramètres

+ +
+
windowId
+
integer. ID de la fenêtre à mettre à jour.
+
updateInfo
+
object. Objet contenant les propriétés de mise à jour.
+
+
+
drawAttention {{optional_inline}}
+
boolean. 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 drawAttention.
+
focused {{optional_inline}}
+
boolean. 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.
+
height {{optional_inline}}
+
integer. Hauteur pour redimensionner la fenêtre en pixels. Cette valeur est ignorée pour les panneaux.
+
left {{optional_inline}}
+
integer. 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.
+
state{{optional_inline}}
+
{{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.
+
titlePreface {{optional_inline}}
+
string. 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).
+
top {{optional_inline}}
+
integer. 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.
+
width {{optional_inline}}
+
integer. La largeur pour redimensionner la fenêtre en pixels. Cette valeur est ignorée pour les panneaux.
+
+
+
+ +

Valeur de retour

+ +

Une Promise 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.

+ +

Compatibilité du navigateur

+ + + + + +

{{Compat("webextensions.api.windows.update")}}

+ + + +

Exemples

+ +

Lorsque l'utilisateur clique sur l'icône d'une action du navigateur, déplacez la fenêtre vers le coin supérieur gauche:

+ +
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);
+
+});
+
+ +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API de Chromnium chrome.windows. Cette documentation provient de windows.json dans le code de Chromium.

+ +

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.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Informations sur une fenêtre du navigateur.

+ +

Type

+ +

Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :

+ +
+
alwaysOnTop
+
boolean. Que la fenêtre soit configurée pour toujours être sur le dessus.
+
focused
+
boolean.  Que la fenêtre soit actuellement la fenêtre ciblée.
+
height{{optional_inline}}
+
integer. La hauteur de la fenêtre, y compris le cadre, en pixels.
+
+ +
+
id{{optional_inline}}
+
integer. L'ID de la fenêtre. Les identifiants de fenêtre sont uniques dans une session de navigateur.
+
incognito
+
boolean. Que la fenêtre soit incognito (privé).
+
left{{optional_inline}}
+
integer. Le décalage de la fenêtre du bord gauche de l'écran en pixels.
+
sessionId{{optional_inline}}
+
string. L'ID de session utilisé pour identifier de manière unique une fenêtre obtenue à partir de l'API {{WebExtAPIRef ('sessions')}}.
+
state{{optional_inline}}
+
Une valeur {{WebExtAPIRef('windows.WindowState')}} représentant l'état de cette fenêtre du navigateur - maximisé, minimisé, etc.
+
tabs{{optional_inline}}
+
Tableau d'objets {{WebExtAPIRef('tabs.Tab')}} représentant les onglets courants dans la fenêtre.
+
title {{optional_inline}}
+
Le titre de la fenêtre du navigateur. Nécessite la permission "tabs". Lecture seulement.
+
top{{optional_inline}}
+
integer. Le décalage de la fenêtre du bord supérieur de l'écran en pixels.
+
type{{optional_inline}}
+
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.
+
width{{optional_inline}}
+
integer. La largeur de la fenêtre, y compris le cadre, en pixels.
+
+ +

Compatibilité du navigateur

+ + + + + +

{{Compat("webextensions.api.windows.Window")}}

+ + + +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API de Chromium chrome.windows. Cette documentation provient de windows.json dans le code de Chromium.

+ +

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.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

browser.windows.WINDOW_ID_CURRENT est une valeur qui peut être utilisée comme paramètre windowId dans certaines APIs pour représenter la fenêtre courante.

+ +

Compatibilité du navigateur

+ + + + + +

{{Compat("webextensions.api.windows.WINDOW_ID_CURRENT")}}

+ + + +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API de Chromnium chrome.windows. Cette documentation provient de windows.json dans le code de Chromium.

+ +

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.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

La valeur windowId que représente l'absence d'une fenêtre du navigateur.

+ +

Compatibilité du navigateur

+ + + + + +

{{Compat("webextensions.api.windows.WINDOW_ID_NONE")}}

+ + + +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API de Chromnium chrome.windows. Cette documentation provient de windows.json dans le code de Chromium.

+ +

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.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

L'état de cette fenêtre du navigateur.

+ +

Type

+ +

Les valeurs de ce type sont des chaînes. Les valeurs possibles sont:

+ +
+
"normal"
+
La fenêtre est à la taille par défaut ou à la taille sélectionnée par l'utilisateur.
+
"minimized"
+
La fenêtre n'est visible que sous la forme d'une icône dans la barre des tâches ou .
+
"maximized"
+
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.
+
"fullscreen"
+
La fenêtre s'exécute en plein écran ou le contenu d'un onglet utilise l'API Fullscreen
+
"docked"
+
Une fenêtre ancrée occupe une position fixe par rapport aux autres fenêtres appartenant à la même application.
+
+ +

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". fullscreen fait référence à la fois au navigateur fonctionnant en plein écran et lorsque le contenu dans un onglet utilise l'API Fullscreen.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.api.windows.WindowState")}}

+ +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API de Chromnium chrome.windows. Cette documentation provient de windows.json dans le code de Chromium.

+ +

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.

+
+ + 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 +--- +
{{AddonSidebar()}}
+ +

Le type de la fenêtre du navigateur est comme çà.

+ +

Type

+ +

Les valeurs de ce type sont des chaînes. Les valeurs possibles sont :

+ + + +

Browser compatibility

+ + + + + +

{{Compat("webextensions.api.windows.WindowType")}}

+ + + +

{{WebExtExamples}}

+ +
Remerciements + +

Cette API est basée sur l'API de Chromnium chrome.windows. Cette documentation provient de windows.json dans le code de Chromium.

+ +

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.

+
+ + 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 +--- +

{{AddonSidebar}}

+ +

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.

+ +

Pour vous aider à fournir les mises à jour les plus productives, voici quelques conseils de la communauté des développeurs d'extensions Firefox :

+ + 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 +--- +
{{AddonSidebar}}
+ +

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.

+ +

+ +

Il existe deux façons de spécifier une action du navigateur : avec une fenêtre contextuelle, ou sans fenêtre contextuelle.

+ +

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 browserAction.onClicked:

+ +
browser.browserAction.onClicked.addListener(handleClick);
+ +

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.

+ +

Notez que votre extension ne peut avoir qu'une seule action du navigateur.

+ +

Specification de l'action de navigateur

+ +

Vous définissez les propriétés de l'action du navigateur - icône, titre, popup - en utilisant la clé browser_action dans manifest.json:

+ +
"browser_action": {
+  "default_icon": {
+    "19": "button/geo-19.png",
+    "38": "button/geo-38.png"
+  },
+  "default_title": "Whereami?",
+  "default_popup": "popup/geo.html"
+}
+ +

La seule clé obligatoire est default_icon. Vous pouvez changer n'importe laquelle de ces propriétés par programme à l'aide de l'API browserAction .

+ +

Exemples

+ +

Le repo webextensions-examples sur GitHub contient plusieurs exemples d'extensions qui utilisent les actions du navigateur :

+ + 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 +--- +
{{AddonSidebar}}
+ + + +

{{Compat("webextensions.manifest",2)}}

+ +
Remerciements + +

Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.

+
+ +

Voir aussi

+ + 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 +--- +

{{AddonSidebar}}

+ +

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.

+ +

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.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Edition

+
+

Version

+
+

Stable

+
+

Outils pour le développement de l'extension

+
+

Installe les extensions non signées

+
+

Utilisation recommandée pour le développement de l'extension

+
+

Release

+
+

Courant

+
+

Oui

+
+

Oui

+
+

Non

+
+

Tests de régression

+ +

Tests alpha et bêta par l'utilisateur

+
+

Beta

+
+

Courant+1

+
+

Oui

+
+

Oui

+
+

Non

+
+

Tests de régression

+ +

Tests alpha et bêta par l'utilisateur

+
+

Developer Edition

+
+

Courant +1

+
+

Oui

+
+

Oui

+
+

Oui

+
+

Développement de l'extension

+
+

Nightly

+
+

Courant +2

+
+

Non

+
+

Oui

+
+

Oui

+
+

Accès anticipé à la dernière API WebExtension

+
+

ESR

+
+

Courant - >1

+
+

Oui

+
+

Oui

+
+

Oui

+
+

Développement de la vulgarisation au sein des entreprises

+
+ +

Firefox version and their web extension development capabilities

+ +

Finale

+ +

C'est la version de Firefox que la plupart des gens utilisent, c'est la version offerte quand quelqu'un visite la page principale de téléchargement Firefox.

+ +

Vous chargez les extensions en cours de développement dans cette version de Firefox en utilisant about:debugging ou web-ext et avez accès à la fenêtre de débogage de l'addon.  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.

+ +

Le développement d'extensions pour Firefox pour Android est entièrement supporté.

+ +

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.

+ +

Téléchargement

+ +

Béta

+ +

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.

+ +

Vous chargez les extensions en cours de développement dans cette version de Firefox en utilisant about:debugging ou web-ext et avez accès à la fenêtre de débogage de l'addon.  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.

+ +

Le développement d'extensions pour Firefox pour Android est entièrement supporté.

+ +

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.

+ +

Téléchargement

+ +

Edition développeur

+ +

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.

+ +

Vous chargez les extensions en cours de développement dans cette version de Firefox en utilisant about:debugging ou web-ext et avez accès à la fenêtre de débogage de l'addon. 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.

+ +

Le développement d'extensions pour Firefox pour Android est entièrement supporté.

+ +

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.

+ +

Téléchargement

+ +

Nightly

+ +

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.

+ +

Vous chargez les extensions en cours de développement dans cette version de Firefox en utilisant about:debugging our web-ext et avez accès à la fenêtre de débogage de l'addon. 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.

+ +

Le développement d'extensions pour Firefox pour Android est entièrement supporté.

+ +

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.

+ +

Download

+ +

ESR

+ +

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.

+ +

Vous chargez les extensions en cours de développement dans cette version de Firefox en utilisant about:debugging ou web-ext et avez accès à la fenêtre de débogage de l'addon. 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).

+ +

Le développement d'extensions pour Firefox pour Android est entièrement supporté.

+ +

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.

+ +

Téléchargement

+ + 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 +--- +
{{AddonSidebar}}
+ +

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.

+ +
+

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.

+
+ +

Si vous souhaitez porter une extension de surcouche ou une extension bootstrappée, consultez la page de comparaison des extensions XUL/XPCOM.

+ +

Les WebExtensions et add-ons SDK partagent les mêmes concepts et structures de base. Ces deux technologies utilisent :

+ + + +

Au-delà de ces ressemblances, il existe de nombreuses différences énumérées ci-après.

+ +

Les fichiers de manifeste

+ +

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é package.json ; pour les WebExtensions, ce fichier s'intitule manifest.json. Les deux fichiers contiennent des métadonnées de base telles que le nom, la description et les icônes de l'extension.

+ +

Cependant, manifest.json 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 :

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
FonctionnalitéSDKWebExtensions
Scripts de contenu correspondant aux modèles d'URLAPI page-modClé de manifeste content_scripts
Boutons de la barre d'outilsAPI ui/button/actionClé de manifeste browser_action
Accéder aux API privilégiéesFonction require()Clé de manifeste permissions
+ +

Les WebExtensions sont donc plus déclaratives et moins programmables que les add-ons construits avec le SDK.

+ +

Pour le  SDK, on utilisera généralement jpm init afin de créer un nouveau package.json. La technologie WebExtensions n'a pas d'équivalent de jpm init, le fichier de manifeste sera probablement écrit à partir de zéro ou adapté d'un fichier existant.

+ +

En savoir plus

+ + + +

Scripts persistants

+ +

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.

+ +

Dans le SDK, par défaut, ce script est appelé index.js et il peut charger d'autres scripts à l'aide du chargeur de module.

+ +

Avec les WebExtensions, ces scripts sont appelés scripts d'arrière-plan. Vous pouvez définir un ensemble de scripts listés via la clé de manifeste background 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é background.

+ +

Une différence importante est que les scripts d'arrière-plan ont accès à la variable globale  window 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 XMLHttpRequest ou IndexedDB).

+ +

On notera également que, par défaut, les extensions ont une politique de sécurité de contenu (CSP) 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'eval().

+ +

En savoir plus

+ + + +

Scripts de contenus

+ +

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 :

+ + + +

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 :

+ + + + + + + + + + + + + + + + + + + + + +
OpérationSDKWebExtensions
Attacher des scripts à des pages dont l'URL correspond à un motifAPI page-modClé de manifeste content_scripts
Attacher des scripts à des pages hébergées dans un onglettab.attach()tabs.executeScript()
+ +

Les motifs de correspondance utilisés pour les URL sont différentes :

+ + + +

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 contentScriptOptions et, si on veut transmettre les options de configuration à un script de contenu, il faudra les envoyer via un message ou les stocker dans storage.local.

+ +

Dans les deux technologies, les scripts de contenu peuvent communiquer avec des scripts persistants grâce à une API de communication asynchrone :

+ + + + + + + + + + + + + + + + + + + + + +
OpérationSDKWebExtensions
Envoi de  messageport.emit()runtime.sendMessage() / tabs.sendMessage()
Réception de  messageport.on()runtime.onMessage
+ + + +

Dans les deux cas, les scripts de contenus peuvent communiquer avec les scripts chargés par la page à l'aide de window.postMessage et window.addEventListener.

+ +

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.

+ +

Dans le SDK, les scripts de contenu peuvent partager des objets avec des scripts de page, en utilisant des techniques comme unsafeWindow et createObjectIn. Avec les WebExtensions, la unsafeWindow est disponible par l'intermédiaire de wrappedJSObject. Toutes les fonctions d'aide à l'exportation sont également disponibles.

+ +

En savoir plus

+ + + +

Les éléments d'interface utilisateur (UI)

+ +

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.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Elément d'interfaceSDKWebExtensions
Boutonui/button/actionbrowser_action / page_action
Interrupteur / Bouton à basculeui/button/togglebrowser_action / page_action
Barre d'outilsui/toolbarAucun
Barre latéraleui/sidebarsidebar_action
Panneaupanelbrowser_action / page_action popup
Menu contextuelcontext-menucontextMenus
+ +

Panneaux et fenêtres contextuelles

+ +

Les panneaux et les fenêtres contextuelles sont des boites de dialogue transitoires définies à l'aide de HTML, CSS et JavaScript.

+ +

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.

+ +

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  runtime.getBackgroundPage().

+ +

Paramètres

+ +

Les extensions SDK et les WebExtensions permettent toutes les deux de gérer des paramètres (aussi appelées options ou préférences).

+ +

Avec le fichier SDK, il est possible d'indiquer des paramètres via la clé preferences dans le fichier package.json. 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 simple-prefs.

+ +

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 storage pour la mémorisation.

+ +

L'URL du fichier HTML pour l'écran des paramètres doit être indiqué avec la clé options_ui du fichier manifest.json. 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 à browser.runtime.openOptionsPage.

+ +

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 preferences/service). Toutefois, il est possible de modifier certains paramètres du navigateur grâce aux API privacy et browserSettings.

+ +

En apprendre plus

+ + + +

Internationalisation

+ +

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 :

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FonctionnalitésSDKWebExtensions
Chaînes dans les scripts d'arrière-planOuiOui
Chaînes dans les scripts de contenuNonOui
Chaînes dans les fichiers HTMLOuiNon
Chaînes dans les fichiers CSSNonOui
Titre et descriptionsOuiOui
Gestion des formes pluriellesOuiNon
Textes de substitution (placeholders)OuiOui
+ +

Dans les deux systèmes, les chaînes traduites sont fournies via un ensemble de fichier : un pour chaque locale.

+ +

Pour récupérer les chaînes localisées dans le code de l'extension, on peut utiliser l'API JavaScript l10n dans le SDK et l'API i18n pour les WebExtensions.

+ +

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.

+ +

En savoir plus

+ + + +

Outil en ligne de commande

+ +

Le SDK livré avec un outil en ligne de commande : jpm qu'on peut utiliser pour tester et empaqueter les extensions. Il existe un outil équivalent pour les WebExtensions : web-ext. Web-ext ne prend pas en charge les mêmes commandes que jpm, mais gère run, build et sign.

+ +

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 l'installation temporaire dans Firefox.

+ +

En savoir plus

+ + + +

Les API JavaScript

+ +

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.

+ +

Une grande limitation de WebExtensions par rapport au SDK est que les modules complémentaires SDK peuvent utiliser require("chrome") pour accéder à la gamme complète des API XPCOM dans Firefox. Ceci n'est pas possible avec WebExtensions.

+ +

Pour accéder aux API privilégiées dans le SDK, on utilise require() :

+ +
var tabs = require("sdk/tabs");
+tabs.open("https://developer.mozilla.org/");
+ +

Avec WebExtensions, la plupart des API sont déjà disponibles, sans avoir besoin de les importer :

+ +
browser.tabs.create({
+  "url": "/"
+});
+ +

Pour certaines API WebExtension, vous devez d'abord demander la permission, en utilisant la clé des permissions de manifest.json. Dans l'exemple ci-dessous, l'extension doit demander l'autorisation "tabs" si elle souhaite accéder à l'URL de l'onglet :

+ +

manifest.json

+ +
...
+
+"permissions": [
+    "tabs"
+  ]
+
+...
+ +

Script d'arrière-plan

+ +
function logUrl(tabs) {
+  console.log(tabs[0].url);
+}
+
+var querying = browser.tabs.query(
+  {active: true, currentWindow: true}
+);
+
+querying.then(logUrl);
+
+ +

Comparaison des API SDK / WebExtension

+ +

Les tableaux de cette section répertorient chaque API du SDK et indiquent l'API WebExtension équivalente si elle existe.

+ +

Le premier tableau couvre les API SDK de haut niveau, le second couvre les API bas niveau.

+ +

API haut niveau

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SDKWebExtensions
addon-pagetabs.create() peut être utilisé pour charger des pages packagées avec l'add-on dans des onglets de navigateur.
base64window.atob() et btoa()
clipboarddocument.execCommand sans select() sur la page d'arrière-plan.
context-menucontextMenus
hotkeyscommands
indexed-dbwindow.indexedDB
l10ni18n
notificationsnotifications
page-modcontent_scripts
page-worker +

Le portage n'est pas terminé et est décrit dans le bug 1318532

+ +

Les méthodes de contournement (qui peuvent avoir besoin de webrequestBlocking pour accéder à l'ensemble des  pages [exemple]) :

+ +
    +
  • Utiliser la page d'arrière-plan
  • +
  • Charger des iframes distantes dans la page d'arrière-plan
  • +
  • Effectuer un appel XHR pour obtenir les informations statiques de la page.
  • +
+
panelVoir la section sur les interfaces utilisateur.
passwordsL'API expérimentale logins
private-browsingTab.incognito et Window.incognito.
querystringwindow.URLSearchParams
requestwindow.fetch ou window.XMLHttpRequest
selectionUtiliser 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 selectionText (contextMenus.OnClickData).
selfruntime.getManifest() et extension.getURL() pour data.url()
simple-prefsstorage et options_ui
simple-storagestorage
systemPartiellement couvert par runtime.
tabstabs
timersalarms
uiVoir la section sur les éléments d'interface.
urlwindow.URL
widgetAucun
windowswindows
+ +

API bas niveau

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SDKWebExtensions
loaderAucun
chromeAucun
console/plain-textAucun
console/tracebackAucun
content/contentAucun
content/loaderAucun
content/modAucun
content/symbiontAucun
content/workerAucun
core/heritageAucun
core/namespaceAucun
core/promisePromise
dev/paneldevtools.panels
event/coreAucun
event/targetAucun
frame/hidden-frameAucun
frame/utilsAucun
fs/pathAucun
io/byte-streamsAucun
io/fileAucun
io/text-streamsAucun
lang/functionalAucun
lang/typeAucun
loader/cuddlefishAucun
loader/sandboxAucun
net/urlAucun
net/xhrwindow.fetch ou window.XMLHttpRequest
places/bookmarksbookmarks
places/faviconAucun
places/historyhistory
platform/xpcomAucun
preferences/event-targetAucun
preferences/servicePrise en charge partielle via les API privacy et browserSettings
remote/childAucun
remote/parentAucun
stylesheet/styleAucun
stylesheet/utilsAucun
system/child_processruntime.connectNative
system/environmentAucun
system/eventsAucun
system/runtimePrise en charge partielle via runtime.getPlatformInfo
system/xul-appPrise en charge partielle via runtime.getBrowserInfo
tabs/utilsAucun
ui/button/actionbrowser_action / page_action
ui/button/togglebrowser_action / page_action
ui/frameAucun
ui/idAucun
ui/sidebarsidebarAction
ui/toolbarAucun
util/arrayAucun
util/collectionAucun
util/deprecateAucun
util/listAucun
util/match-patternAucun
util/objectAucun
util/uuidAucun
window/utilsAucun
diff --git "a/files/fr/mozilla/add-ons/webextensions/compatibilit\303\251_navigateurs_api_javascript/index.html" "b/files/fr/mozilla/add-ons/webextensions/compatibilit\303\251_navigateurs_api_javascript/index.html" new file mode 100644 index 0000000000..d7d80b6988 --- /dev/null +++ "b/files/fr/mozilla/add-ons/webextensions/compatibilit\303\251_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 +--- +
{{AddonSidebar}}
+ + + +

{{WebExtAllCompatTables}}

+ +
Remerciements + +

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.

+
+ +

Voir aussi

+ + 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 +--- +

{{AddonSidebar}}

+ +

Les comptes développeurs pour addons.mozilla.org sont intégrés aux comptes Firefox, 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 accounts.firefox.com/settings.

+ +

Définition d'un nom d'affichage

+ +

Il est important de définir un nom d'affichage sur votre profil sur addons.mozilla.org pour augmenter la transparence avec les utilisateurs, les évaluateurs et la communauté.

+ +
+

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

+
+ +

Comptes bloqués

+ +

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 Politiques de add-on.

+ +

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.

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 +--- +

{{AddonSidebar()}}

+ +

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.

+ +

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.

+ +

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.

+ +

Obstacles lors du codage d'extension multiplateforme

+ +

Il y a six domaines que vous devez aborder lorsque vous vous attaquez à une extension multiplateforme :

+ + + +

Espace de nommage de l'API

+ +

Deux espaces de noms API sont utilisés parmi les quatre principaux navigateurs :

+ + + +

Firefox prend également en charge l'espace de noms chrome.* pour les API compatibles avec Chrome, principalement pour faciliter le portage. Cependant, il est préférable d'utiliser l'espace de nommage browser.*. En plus d'être la norme proposée, browser.* utilise des promesses — un mécanisme moderne et pratique pour gérer les événements asynchrones.

+ +

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.

+ +

Gestion asynchrone des événements API

+ +

Il existe deux approches pour gérer les événements asynchrones utilisées par les quatre principaux navigateurs :

+ + + +

Firefox prend également en charge les rappels pour les API qui prennent en charge l'espace de noms chrome.*. Cependant, il est recommandé d'utiliser des promesses (et l'espace de noms browser.* 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.

+ +

Si vous n'êtes pas familier avec les différences entre ces deux méthodes, jetez un coup d'oeil à Apprendre à connaître le Javascript asynchrone : Rappels, promesses et synchronisation/attente ou la page des promesses d'utilisation de MDN.

+ +

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 navigateur WebExtension API Polyfill. 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.

+ +

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 versions de GitHub. Vous référencerez alors browser-polyfill.js dans :

+ + + +

Ainsi, par exemple, ce code manifest.json rend le polyfill disponible pour vos scripts d'arrière-plan :

+ +
{
+ // ...
+ "background": {
+   "scripts": [
+     "browser-polyfill.js",
+     "background.js"
+   ]
+ }
+}
+ +

Votre but est de vous assurer que le polyfill s'exécute dans votre extension avant tout autre script qui attend le browser.* API namespace s'exécute.

+ +

Pour plus de détails et d'informations sur l'utilisation du polyfill avec un module bundler, voir le readme du projet sur GitHub.

+ +

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.

+ +

Couverture des fonctions API

+ +

Les différences dans les fonctions API offertes dans chacun des quatre principaux navigateurs se répartissent en trois grandes catégories :

+ + + +

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 Browser support for JavaScript APIs page. Browser compatibility information is also included with each function and its methods, types, and events in the Mozilla Developer Network JavaScript APIs reference pages.

+ +

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.

+ +

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.

+ +

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.

+ +

The following code enables you to perform a runtime check:

+ +
if (typeof <function> === "function") {
+   // safe to use the function
+}
+ +

Manifest keys

+ +

The differences in the manifest.json file keys supported by the four main browsers fall broadly into three categories:

+ + + +

Browser compatibility information is included with each key in the Mozilla Developer Network manifest.json key reference pages.

+ +

As manifest.json 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.

+ +

Extension packaging

+ +

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 manifest.json file to be at the root of the zip package. However, submitting to the Microsoft store requires additional packaging of the extension file.

+ +

For details on packaging, refer to the guidance on the respective extension’s developer portals.

+ +

Publishing

+ +

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:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Registration fee

+
+

Upload utility

+
+

Pre-publication review process

+
+

Account two factor authentication

+
+

Firefox

+
+

No

+
+

web-ext

+
+

Automatic, a few seconds1

+
+

No

+
+

Chrome

+
+

Yes

+
+

Yes

+
+

Automatic, less than an hour

+
+

Yes

+
+

Opera

+
+

No

+
+

No

+
+

Manual, no SLA provided

+
+

No

+
+

Edge

+
+

Yes

+
+

No

+
+

Manual, up to 72 hours2

+
+

Yes

+
+ +

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.

+ +

2) At the time of writing, Microsoft was only allowing publication of preapproved extensions.

+ +

Other considerations

+ +

Extension naming

+ +

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.

+ +

Version numbering

+ +

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.

+ +

Share content

+ +

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:

+ + + +

Conclusion

+ +

When approaching a cross-platform extension development, addressing the fundamental differences between extension API implementations can be addressed by targeting Firefox and using the WebExtension browser API Polyfill. 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.

+ +

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 manifest.json 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.

+ +

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.

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 +--- +
{{AddonSidebar}}
+ +

Un script de contenu (content script 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")}}).

+ +

Les scripts d'arrière-plan peuvent accéder à l'ensemble des API WebExtension 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.

+ +

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.

+ +

Les scripts de contenu ne peuvent accéder qu'à un sous-ensemble des API WebExtension, mais ils peuvent communiquer avec les scripts d'arrière-plan grâce à un système de messages et ainsi accéder indirectement aux API WebExtension.

+ +
+

Notez que les scripts de contenu sont bloqués sur les domaines suivants :

+ + + +

If you try to inject a content script into a page in these domains, it will fail and the page will log a CSP error.

+ +

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 onboarding page to move users away from addons.mozilla.org.

+
+ +
+

Les valeurs ajoutées à la portée globale d'un script de contenu avec var foo ou window.foo = "bar" peuvent disparaître à cause du bogue 1408996.

+
+ +

Charger des scripts de contenu

+ +

Il est possible de charger un script de contenu dans une page web de trois manières différentes :

+ +
    +
  1. Lors de la phase d'installation, pour les pages qui correspondent à certains motifs d'URL : en utilisant la clé content_scripts dans le fichier manifest.json, vous pouvez demander au navigateur de charger un script de contenu chaque fois que le navigateur charge une page dont l'URL correspond à un motif donné.
  2. +
  3. Lors de l'exécution, pour les pages qui correspondent à certains motifs d'URL : 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 correspond à un motif donné. Cette méthode est la version dynamique de la première méthode.
  4. +
  5. Lors de l'exécution, pour certains onglets spécifiques : en utilisant la méthode  tabs.executeScript(), vous pouvez charger un script de contenu dans un onglet spécifique quand vous le souhaitez (par exemple lorsqu'un utilisateur clique sur un bouton d'action du navigateur).
  6. +
+ +

Il n'y a qu'une seule portée globale pour chaque frame 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é.

+ +

À 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 motif de correspondance.

+ +

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 about:debugging ou about:addons).

+ +

Environnement des scripts de contenu

+ +

Accès au DOM

+ +

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.

+ +

Cependant, les scripts de contenu reçoivent une « vue propre du DOM ». Cela signifie que :

+ + + +

Dans Firefox, ce comportement s'appelle Vision Xray.

+ +

Prenons par exemple la page web suivante :

+ +
<!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>
+ +

Le script « page-script.js » est écrit ci-dessous :

+ +
// 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’.");
+}
+ +

Et maintenant une extension injecte ce script de contenu dans la page :

+ +
// 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
+ +

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.

+ +

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.

+ +

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.

+ +

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.

+ +
"content_scripts": [
+  {
+    "matches": ["*://*.mozilla.org/*"],
+    "js": ["jquery.js", "content-script.js"]
+  }
+]
+ +
+

Note: Firefox fournis 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.

+ +

Voir Partage d'objets avec des scripts de page pour plus de détails.***

+
+ +

Les API WebExtension accessibles

+ +

En plus des API standard du DOM, les scripts de contenu peuvent utiliser les API WebExtension suivantes :

+ +

Depuis l'API extension :

+ + + +

Depuis l'API runtime :

+ + + +

Depuis l'API i18n :

+ + + +

A partir des menus:

+ + + +

L'ensemble des propriétés et méthodes de l'API storage.

+ +

XHR et Fetch

+ +

Les scripts de contenu peuvent effectuer des requêtes en utilisant les API classiques  window.XMLHttpRequest et window.fetch().

+ +

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é permissions dans le fichier manifest.json, ses scripts de contenu auront également accès à ce domaine.

+ +

Ceci est accompli en exposant des instances XHR et fetch privilégiées dans le script de contenu. Cela a pour effet secondaire de ne pas définir les en-têtes Origin et Referer 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 content.XMLHttpRequest et content.fetch(). 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.

+ +

Communication avec les scripts d'arrière-plan

+ +

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.

+ +

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.

+ +

Un message à la fois

+ +

Pour envoyer un message à la fois, vous pouvez utiliser les API suivantes :

+ + + + + + + + + + + + + + + + + + + + + +
Dans le script de contenuDans les scripts d'arrière-plan
Envoyer un messagebrowser.runtime.sendMessage()browser.tabs.sendMessage()
Recevoir un messagebrowser.runtime.onMessagebrowser.runtime.onMessage
+ +

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 :

+ +
// content-script.js
+
+window.addEventListener("click", notifyExtension);
+
+function notifyExtension(e) {
+  if (e.target.tagName != "A") {
+    return;
+  }
+  browser.runtime.sendMessage({"url": e.target.href});
+}
+ +

Le script d'arrière-plan écoute les messages et affiche une notification en utilisant l'API notification :

+ +
// 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
+  });
+}
+
+ +

Ce code d'exemple est légèrement dérivé de l'exemple notify-link-clicks-i18n sur GitHub.

+ +

Les messages en flux continu

+ +

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.

+ +

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.

+ +

De chaque côté (contenu d'une part, arrière-plan d'autre part), les scripts possèdent un objet runtime.Port dont ils peuvent se servir pour échanger des messages.

+ +

Pour créer la connexion :

+ + + +

Une fois que chaque côté possède son propre port, ils peuvent échanger en utilisant runtime.Port.postMessage() pour envoyer des message et runtime.Port.onMessage pour en recevoir.

+ +

Par exemple, dès le chargement, ce script de contenu :

+ + + +
// 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 !"});
+});
+ +

Le script d'arrière plan qui correspond ·

+ + + +
// 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 !"});
+});
+
+ +

Scripts de contenu multiples

+ +

Si plusieurs scripts de contenu communiquent en même temps, vous pouvez stocker chaque connexion dans un tableau.

+ + + +
// 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 !"})
+    })
+});
+ + + +

Communiquer avec la page web

+ +

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 window.postMessage et window.addEventListener du DOM.

+ +

Par exemple :

+ +
// 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"
+  }, "*");
+ +
// 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 + "\"");
+  }
+});
+ +

Pour un exemple complet et fonctionnel, visitez la page de démo sur Github et suivez les instructions.

+ +
+

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.

+ +

Pour donner un exemple trivial, supposons que le code du script de contenu qui reçoit le message ressemble à ceci :

+ +
// 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);
+  }
+});
+ +

Maintenant, le script de page peut exécuter n'importe quel code avec tous les privilèges du script de contenu.

+
+ +

Utilisation de eval() dans les scripts de contenu

+ +

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.

+ +

Dans Firefox :

+ + + +

Par exemple, considérons un script de contenu comme ceci  :

+ +
// 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"
+}, "*");
+ +

Ce code crée simplement des variables x et y en utilisant window.eval() et eval() puis enregistre leurs valeurs et envoie un message à la page.

+ +

À la réception du message, le script de page enregistre les mêmes variables :

+ +
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}`);
+  }
+});
+ +

Dans Chrome, cela produira le résultat suivant :

+ +
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
+ +

Dans Firefox, on aura le résultat suivant :

+ +
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
+ +

La même chose s'applique pour setTimeout(), setInterval(), et Function().

+ +
+

Lorsque vous exécutez du code dans le contexte de la page, l'avertissement précédent reste nécessaire : l'environnement de la page est contrôlé par des pages web potentiellement malveillantes qui peuvent redéfinir les objets avec lesquels vous interagissez:

+ +
// page.js redéfinit console.log
+
+var original = console.log;
+
+console.log = function() {
+  original(true);
+}
+
+ +
// content-script.js appelle la version redéfinie
+
+window.eval('console.log(false)');
+
+
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 +--- +
{{AddonSidebar}}
+ +
+

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()")}}.

+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.
+ +

La Politique de sécurité de contenu (ou Content Security Policy 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()")}}.

+ +

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 :

+ +
<!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>
+ +

À 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 :

+ + + +

Politique de sécurité du contenu par défaut

+ +

La politique de sécurité du contenu par défaut pour les extensions est la suivante :

+ +
"script-src 'self'; object-src 'self';"
+ +

Celle-ci sera appliquée à toute extension qui n'a pas explicitement défini sa propre politique via la clé content_security_policy du manifeste. Cela a les conséquences suivantes :

+ + + +

Emplacement des ressources pour <script> et <objet>

+ +

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 :

+ +
 <script src="https://code.jquery.com/jquery-2.2.4.js"></script>
+ +

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 :

+ + + +

eval() et autres équivalents

+ +

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 :

+ +
eval("console.log('un résultat');");
+ +
window.setTimeout("alert('Coucou monde!');", 500);
+ +
var f = new Function("console.log('toto');");
+ +

JavaScript écrit dans le HTML (inline)

+ +

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 <script> ainsi que les gestionnaires d'évènement intégrés dans les attributs. Autrement dit, les formes suivantes ne sont pas autorisées :

+ +
<script>console.log("toto");</script>
+ +
<div onclick="console.log('clic')">Cliquez sur ce texte !</div>
+ +

Si votre document HTML utilise une forme comme <body onload="main()">, privilégiez plutôt l'ajout d'un gestionnaire d'évènement sur DOMContentLoaded ou load.

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) +--- +
{{AddonSidebar}}
+ +
+

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.

+ +

Si vous utilisez Firefox 50 ou version ultérieure, consultez l'article principal sur les extensions de débogage.

+
+ +

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 débogueur de module complémentaire.

+ + + + + +

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 dépôt d'exemples d'extensions sur GitHub.

+ +

L'extension se compose de :

+ + + +

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.

+ +

Lorsque le script d'arrière-plan reçoit le message, il affiche une notification contenant la href.

+ +

Voici "content-script.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);
+
+ +

Voici "background-script.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);
+
+ +

Si vous voulez suivre, clonez le référentiel webextensions-examples, puis package et installez "notify-link-clicks-i18n".

+ +

La boite à outils du navigateur

+ +

Nous utiliserons la boîte à outils du navigateur pour déboguer l'extension.

+ +

Conditions préalables

+ +

Avant de pouvoir utiliser la boîte à outils du navigateur, vous devez être configuré.

+ + + +

{{EmbedYouTube("LJAM2vXJ790")}}

+ +

Ouverture de la boîte à outils du navigateur

+ +

Ensuite, nous ouvrirons la boîte à outils du navigateur..

+ + + +

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 :

+ +

{{EmbedYouTube("fZ492zAAy3o")}}

+ +

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 :

+ +

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".

+ +

Affichage de la sortie du journal

+ +

Nous pouvons utiliser la console pour voir la sortie des journaux : Cela inclus les messages de :

+ + + +

Il inclut les messages de vos journaux de code à l'aide de l'API de console que les messages d'erreur enregistrés par le moteur JavaScript lors de l'exécution de votre code.

+ +

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 :

+ +

{{EmbedYouTube("Qpx0n8gP3Qw")}}

+ +

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  comment filtrer les messages de journal pour obtenir de l'aide à ce sujet.

+ +

Débogage JavaScript

+ +

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.

+ +

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 debogueur ; instruction au début du script.

+ +

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 cliquez dans la boite de recherche et tapez le nom de la source.

+ +

Une fois que vous avez trouvé votre source, vous pouvez définir des points d'arrêt, passer en revue le code et  faire tout ce que vous vous attendez à pouvoir faire dans un débogueur.

+ +

{{EmbedYouTube("3edeJiG38ZA")}}

+ +

Interpréteur en ligne de commande JavaScript

+ +

La console comprend un interpréteur de ligne de commande 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.

+ +

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.

+ +

Cette fonction est particulièrement utile en combinaison avec une autre fonction : la console split. 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) :

+ +

{{EmbedYouTube("xprf58qOtLY")}}

+ +

Débogage des scripts de contenus

+ +

Une grande limitation de la Browser Toolbox est la suivante : si vous développez avec firefox multiprocessus, vous ne pouvez pas utiliser la Toolbox du navigateur pour attacher le débogueur JavaScript aux scripts de contenu.

+ +

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.

+ +

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..

+ +

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 debuggueur ; instruction au début de votre script.

+ +
+

Note : vous n'avez besoin et ne pouvez accéder à la Browser Content Toolbox que si vous développez contre Firefox multiprocessus.

+
+ +
+

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 Bug 1236892 devrait régler ce problème..

+
+ +

{{EmbedYouTube("xAt3Q0PgJP4")}}

+ +

Débogage des fenêtres contextuelles

+ +
Nouveau dans Firefox 47
+ +

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 :

+ + + +

{{EmbedYouTube("EEU4NeAS1s4")}}

+ +

Désactiver l'autohide

+ +

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 :

+ +

Maintenant, lorsque vous ouvrez un panneau dans Firefox, il restera ouvert jusqu'à ce que vous appuyiez sur Escape.

+ +
+

Notez que ce changement s'applique aux fenêtre contextuelles intégrés au navigateur, cpùùe le menu Hamburger (), ainsi qu'aux fenêtres contextuelles d'extension.

+ +

Notez également que le changement est persistant, même si le navigateur redémarre. Nous travaillons à résoudre ce problème dans le bug 1251658, 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.

+ +

En interne, ce bouton bascule juste la préférence  ui.popup.disable_autohide que vous pouvez basculer manuellement en utilisant using about:config.

+
+ +

Ouvrir la fenêtre contextuelle

+ +

Ensuite, ouvrez le popup. Vous pouvez ensuite revenir à la boîte à outils du navigateur, et le panneau restera ouvert.

+ +

Sélectionner le cadre de la fenêtre popup

+ +

Le popup est chargé dans son propre cadre. Ensuite, sélectionnez le document de votre popup à l'aide du bouton sélection de cadre boîte à outils du navigateur :Le document s'appellera quelque chose comme

+ +
moz-extension://<some-uuid>/path/to/your-popup.html
+ +

{{EmbedYouTube("/9jdHDCKIN-U")}}

+ +

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.

+ +

Qu'en est-il de l'Add-on Deboguer ?

+ +

Le deboguer des modules complémentaires est destiné à être l'évanir du débogage des add-on dans Firefox.

+ +

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.

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 +--- +

{{AddonSidebar}}

+ +

Ou comment éviter les permissions décourageant les utilisateurs d'installer vos extensions.

+ +

Introduction

+ +

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:

+ +

Example of the permissions messages from the Gesturefy extension

+ +

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 :

+ +

Example of the message displayed when an extension update requests additional permissions

+ +

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.

+ +

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.

+ +

É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 explication de ces messages de permissions et des conseils sur comment juger s'ils sont appropriés. 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 :

+ + + +

Conseil: Les avertissements d'autorisation ne sont pas émis lorsque vous chargez une extension décompressée. Pour plus d'informations sur l'affichage du flux d'autorisations d'exécution standard, voir Test de demandes de permission.

+ +

Permissions conseillées

+ +

Toutes les permissions 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 :

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PermissionPermissions messages
+

Host permissions

+
+

Accédez à vos données pour tous les sites Web
+ Accédez à vos données pour les sites du domaine[named].
+ Accédez à vos données dans # d'autres domaines
+ Accédez à vos données pour[site nommé].
+ Accédez à vos données sur # autres sites".

+
API permissions:
+
    +
  • bookmarks
  • +
+
Lire et modifier les marques pages
+
    +
  • browserSettings
  • +
+
Lire et modifier les paramètres du navigateur
+
    +
  • browsingData
  • +
+
Effacer l'historique de navigation récent, les cookies et les données associées.
+
    +
  • downloads
  • +
+
Télécharger des fichiers et lire et modifier l'historique des téléchargements du navigateur.
+
    +
  • downloads.open
  • +
+
Ouvrir les fichiers téléchargés sur votre ordinateur
+
    +
  • find
  • +
+
Lire le texte de tous les onglets ouverts
+
    +
  • geolocation
  • +
+
Accédez à votre localisation
+
    +
  • history
  • +
+
Historique de navigation
+
    +
  • management
  • +
+
Surveiller l'utilisation des extensions et gérer les thèmes
+
    +
  • nativeMessaging
  • +
+
Échanger des messages avec des programmes autres que Firefox
+
    +
  • notifications
  • +
+
Afficher les notifications qui vous sont destinées
+
    +
  • pkcs11
  • +
+
Fournir des services d'authentification cryptographique
+
    +
  • privacy
  • +
+
Lire et modifier les paramètres de confidentialité
+
    +
  • proxy
  • +
+
Contrôler les paramètres de proxy du navigateur
+
    +
  • sessions
  • +
+
Accéder aux onglets récemment fermés
+
    +
  • tabs
  • +
+
Onglets du navigateur d'accès
+
    +
  • topSites
  • +
+
Historique de navigation
+
    +
  • webNavigation
  • +
+
Accéder à l'activité du navigateur pendant la navigation
Clipboard access
+
    +
  • clipboardWrite
  • +
+
Saisie des données dans le presse-papiers
+
    +
  • clipboardRead
  • +
+
Obtenir les données du presse-papiers
unlimitedStorageStocker un nombre illimité de données côté client
The manifest key "devtools_page"Étendre les outils de développement pour accéder à vos données dans des onglets ouverts.
+ +
+ + +

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 Affichage des avertissements.

+ + +
+ +

Les permissions suivantes ne sont pas alertées aux utilisateurs :

+ + + +

Évitez les permissions inutiles

+ +

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.

+ +

Ne demandez que les permissions que votre extension utilise

+ +

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 ("permissions" et "optional_permissions") que vous demandez dans le manifest.json de l'extension.

+ +

Utilisez "activeTab" plutôt que "tabs" et permissions d'hôte

+ +

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 "tabs" et la permission d'hôte "<all_urls>".

+ +
"permissions": [
+  "<all_urls>",
+  "tabs"
+]
+ +

Demander ces permissions, permet à l'utilisateur d'obtenir ce conseil :

+ +

Example of the "Access your data for all websites" permission message

+ +

L'alternative est de demander "activeTab". 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).

+ +

Fait important, "activeTab" n'entraîne pas l'affichage d'un message de permission lors de l'installation de l'extension.

+ +

Evitez la permission d'hôte "<all_urls>" si vous pouvez

+ +

Comme indiqué dans l'exemple précédent, demander la permission d'hôte "<all_urls>" 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.

+ +

Example of the permissions message when host permission for four websites as requested

+ +

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.

+ +

Example of the permissions message when hosts permission for 5 or more website is requested

+ +

Evitez la permission "unlimitedStorage"

+ +

Ne demandez la permission "unlimitedStorage" 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.

+ +

Example of the permission message when requesting access to unlimited client-side data storage

+ +

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.

+ +

Demander les permissions à éxécuter

+ +

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'API permissions, et à fournir ainsi un contexte à l'utilisateur.

+ +

Un scénario typique pour utiliser cette approche est la permission "geoLocation". 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.

+ +

Example of an additional or runtime permission request message

+ +

Faire une demande de permission d'exécution est simple. Incluez les permissions que vous souhaitez demander sous la clé manifest.json "optional_permissions". 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.

+ +

Vous ne pouvez pas demander toutes les permissions disponibles aux "permissions" en utilisant des permissions facultatives. Vous ne pouvez pas demander les permissions d'API suivantes:

+ + + +

Il y a un certain nombre de choses à noter :

+ + + +

Pour plus d'informations sur les permissions facultatives, consultez optional_permissions et l'exemple permissions.

+ +

Ajouter des informations sur les permissions à vos extensions page AMO

+ +

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.

+ +

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.

+ +

Un bon exemple de cette approche est Gesturefy, qui offre aux utilisateurs les conseils suivants :

+ +

Extract from Gesturefy's AMO description providing information on thepermissions requested by this extension

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 +--- +

{{AddonSidebar}}

+ +

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.

+ +

Comportement de l'octroi de la permission pendant le test

+ +

Lorsque vous testez avec une extension non compressée utilisant about:debugging ou web-ext et les permissions d'installation et d'exécution sont traitées comme suit :

+ + + +

Observeer ou vérifier des demandes de permissions lors de l'installation

+ +

Vous suivez différents processus selon que vous souhaitez observer les demandes de permissions associées à une installation ou à une mise à niveau.

+ +

Demandes de permission pour l'installation d'extensions

+ +

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.

+ +

Pour ce faire, vous devez utiliser un fichier *.xpi ou *.zip non signé :

+ + + +

Installez ensuite l'extension à l'aide de l'option Installer Add-on à partir du fichier dans le gestionnaire de modules complémentaires (about:addons). Au fur et à mesure que l'extension s'installe, la demande d'octroi des permissions s'affiche lors de l'installation, comme ceci :

+ +

Example of the doorhanger displayed when installing an extension through about:addons

+ +

Notez que le message d'avertissement concerne une extension non signée ; ce message ne s'affiche pas pendant l'installation depuis addons.mozilla.org.

+ +

Demande de permission  pour la mise à niveau de l'extension

+ +
+

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 Mises à jour.

+
+ +

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.

+ +

Vous pouvez utiliser un serveur HTTP (tel qu'un simple serveur localhost python) 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.

+ +

Pour effectuer le test, vous devrez :

+ + + + + +
+

Si la mise à niveau n'a pas lieu, recherchez dans les logs addons.update-checker de la console du navigateur. Toute erreur rencontrée au cours du processus de mise à niveau sera signalée dans le journal de logs.

+
+ +

Re-tester les permissions d'éxécution octroyées

+ +

Pour tester à nouveau les permissions d'exécution de votre extension et son comportement post-installation, vous avez deux choix :

+ + + +

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.

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 +--- +

{{AddonSidebar}}{{Draft}}

+ +

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.

+ +

Différences des API

+ +
+

Voir la documentation de l'API WebExtension de ReadTheDocs pour Thunderbird.

+
+ +

Étant tous deux basés sur Gecko, Thunderbird supporte plusieurs des APIs que Firefox supporte, avec quelques différences, voir la compatibilité du navigateur pour manifest.json et le support du navigateur pour les APIs JavaScript pour les détails.

+ +

Voir aussi

+ + 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 +--- +
{{AddonSidebar}}
+ +

L'API d'extension de navigateur est encore un standard emergent. 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

+ +

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.

+ +

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.

+ +

Espace de nommage

+ +

Vous faites référence à toutes les fonctions de l'API des extensions en utilisant un espace de noms, par exemple, browser.alarms.create({delayInMinutes}); créerait une alarme dans Firefox qui se déclenche après le temps spécifié dans delayInMinutes.

+ +

Deux espaces de noms API sont utilisés :

+ + + +

Traitement asynchrone des événements

+ +

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

+ +

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 Apprendre à connaître Javascript Asynchrone : Callbacks, Promises et Async/Await ou la page des promises d'utilisation de MDN.

+ +

Firefox est le seul navigateur majeur à avoir implémenté des promises pour les extensions API. Tous les autres navigateurs utilisent des callbacks.

+ +

Couverture API

+ +

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 :

+ + + +

Touches Manifest

+ +

Les différences entre les clés clés manifest.json prises en charge par les navigateurs se répartissent en deux grandes catégories :

+ + + +

Plus d'information

+ +

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 :

+ + 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 +--- +
{{AddonSidebar}}
+ +
+

À 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.

+ +

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.

+
+ +

A partir de Firefox 51, vous pouvez intégrer une WebExtension dans une extension bootstrapped classique ou dans une extension dans le SDK des extensions.

+ +

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")}}.

+ +

+ +

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 migrer des données stockées à 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, simple-prefs ou le service de préférence) et les écrit en utilisant les APIs WebExtension (par exemple, {{WebExtAPIRef("storage")}}).

+ +

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 comment porter à partir d'un add-on amorcé, et l'autre montre comment porter à partir d'un add-on sdk.

+ +

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 jpm 1.2.0.

+ +
+

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 date de sortie de Firefox 57, 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.

+
+ +

Incorporation d'une WebExtension

+ +

Si l'extension héritée est une extension bootstrap avec un install.rdf, incluez la propriété  "hasEmbeddedWebExtension" dans le RDF, contenant la valeur "true":

+ +
<em:hasEmbeddedWebExtension>true</em:hasEmbeddedWebExtension>
+ +
Si le complément hérité est une SDK add-on, incluez la clé "hasEmbeddedWebExtension" dans le package.json, définissez sur true:
+ +
 
+ +
"hasEmbeddedWebExtension": true
+
+ +
La WebExtension elle-même vit dans un dossier de niveau supérieur appelé "webextension" dans l'add-on. Par exemple:
+ +
 
+ +
my-boostrapped-addon/
+    chrome/
+    webextension/
+        manifest.json
+        background.js
+        ...
+    bootstrap.js
+    chrome.manifest
+    install.rdf
+ +
 
+ +
+
my-sdk-addon/
+    index.js
+    package.json
+    webextension/
+        manifest.json
+        background.js
+        ...
+
+ +

Notez que la WebExtension intégrée doit se trouver directement dans le répertoire webextension/.  Il ne peut pas être dans un sous-répertoire. Cela signifie également que vous ne pouvez pas intégrer plus d'une WebExtension.

+ +

Firefox ne traite pas les WebExtensions intégrées comme une extension indépendante. Pour cette raison, vous ne devez pas spécifier une identification d'extension pour elle. Si vous le faites, il sera simplement ignoré.

+ +

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'application pour l'identifiant soit identique à un ID d'extension original. De cette façon, addons.mozilla.org reconnaîtra que WebExtension est une mise à jour de l'extension existante.

+ +

Démarré la WebExtension

+ +

La WebExtension intégrée doit être explicitement démarré par l'extension d'intégration.

+ +

Si l'extension d'intégration est un add-on bootstrap, l'argument de données passé à la fonction de startup() obtiendra une propriété supplémentaire à la webExtension :

+ +
// bootstrapped add-on
+
+function startup({webExtension}) {
+
+...
+ +

Si l'add-on d'intégration est une extension SDK, il pourra accéder à un objet WebExtension à l'aide du module sdk/webextension :

+ +
// SDK add-on
+
+const webExtension = require("sdk/webextension");
+ +

Quoi qu'il en soit, cet objet a une seule fonction, startup(), qui renvoie une Promise. 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é :

+ + + +

Pour exemple:

+ +
// bootstrapped add-on
+
+function startup({webExtension}) {
+  webExtension.startup().then(api => {
+    const {browser} = api;
+    browser.runtime.onMessage.addListener(handleMessage);
+  });
+}
+ +
// SDK add-on
+
+const webExtension = require("sdk/webextension");
+
+webExtension.startup().then(api => {
+  const {browser} = api;
+  browser.runtime.onMessage.addListener(handleMessage);
+});
+
+ +

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 onMessage, et peut accepter des requêtes de connexion en utilisant onConnect.

+ +

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 boite à outils de la console du navigateur.

+ +

Echange des messages

+ +

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")}} :

+ + + +

Messagerie sans connexion

+ +

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 :

+ +
browser.runtime.sendMessage("message-from-webextension").then(reply => {
+  if (reply) {
+    console.log("response from legacy add-on: " + reply.content);
+  }
+});
+ +

L'add-on d'intégration peut recevoir (et répondre facultativement) ce message en utilisant l'objet {{WebExtAPIRef("runtime.onMessage")}} :

+ +
// 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"
+        });
+      }
+    });
+  });
+}
+ +

Messagerie orientée connexion

+ +

Pour configurer une connexion plus longue entre la WebExtension et l'extension héritée, la WebExtension peut utiliser {{WebExtAPIRef("runtime.connect()")}}.

+ +
var port = browser.runtime.connect({name: "connection-to-legacy"});
+
+port.onMessage.addListener(function(message) {
+  console.log("Message from legacy add-on: " + message.content);
+});
+
+ +

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 :

+ +
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"
+      });
+    });
+  });
+}
+ +

Migration de données à partir d'extensions existantes

+ +

Une utilisation majeure pour les WebExtensions intégrées sont de migrer les données stockées d'une extension.

+ +

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 simple-prefs  pour stocker les préférences, la version WebExtension ne pourra pas accéder à ces données.

+ +

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.

+ + + +

Nous avons fourni deux exemples illustrant ce modèle : "embedded-webextension-bootstrapped" montre la migration à partir d'un add-on bootstrap, tandis que "embedded-webextension-sdk" montre la migration à partir du SDK de l'extension.

+ +

Préférences

+ +

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, simple-prefs ou le service des préférences) ou dans la WebExtension intégrée (en utilisant options_ui).

+ +

Si les deux parties définissent les préférences, que les préférences de la WebExtension intégrée annuleront les anciennes.

+ +

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 commencée. 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 console du navigateur lorsque "about:addons" is ouvert.

+ +

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 webExtension.startup() dans le bootstrap de démarrage. Pour une extension SDK supplémentaire, cela signifie que vous devez appeler  webExtension.startup() dans le point d'entrée de l'add-on (par défaut, index.js).

+ +

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".

+ +

Limitations

+ +

Debogage

+ +

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'ancien flux de travail de débogage, basé sur la boite d'outils du navigateur.

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 +--- +
{{AddonSidebar}}
+ +

Pour illustrer la manière d'utiliser les API WebExtension, nous disposons d'un répertoire d'exemples d'extensions sur le site https://github.com/mdn/webextensions-examples. Cet article décrit comment exécuter ces exemples et énumère les exemples ainsi que les API WebExtension qu'ils illustrent.

+ +

Ces exemples fonctionnent dans Firefox Nightly : la plupart travaillent dans les versions antérieures de Firefox, mais vérifiez la version minimum strict_min_version dans le fichier manifest.json de l'extension pour en être sur.

+ +
+

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 Extensions dans la navigation privée pour plus de détails.

+
+ +

Pour essayer ces exemples, clonez ensuite le dépôt :

+ +
    +
  1. Charger l'extension à partir de son dossier source en utilisant la fonction Charger temporairement l'extension. L'extension reste chargée jusqu'à ce que vous redémarriez Firefox.
  2. +
  3. Couvrir le dossier source de l'extension en ligne de commande et utiliser le  web-ext pour exécuter l'extension. L'extension reste chargée jusqu'à ce que vous redémarriez Firefox.
  4. +
  5. Dans Firefox utilisez File > Open File et trouvez l'exemple dans le dossier de  build. Le dossier build contient les versions construites et signées de tous les exemples. L'exemple est ainsi installé de façon permanente.
  6. +
+ +
+

Important: 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.

+
+ +

Si vous souhaitez contribuer au dépôt, envoyez-nous une demande

+ +

{{WebExtAllExamples}}

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 +--- +
{{AddonSidebar()}}
+ +

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 addons.mozilla.org (AMO).

+ +

Si vous êtes nouveau sur le sujet de rendre un logiciel utilisable. un bon point de départ pour démarrer est l'Heuristique d'usabilité 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 test de votre expérience utilisateur (UX).

+ +

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.

+ +

En plus des étapes décrites ici, votre extension doit suivre les règles d'Add-on Policies, qui incluent la transparence avec les utilisateurs sur la sécurité, la confidentialité et le contrôle de l'utilisateur.

+ +

1. Gardez le cap

+ +

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.

+ +

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 :

+ + + +

2. Donner aux utilisateurs ce dont ils ont besoin, là où ils en ont besoin

+ +

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 :

+ +

Est-ce que mon extension fonctionne sur la plupart des sites et pages web ?

+ +

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 bouton de la barre d'outils en utilisant l'action du navigateur.

+ + + +

+ +

Lorsque vous voulez donner l'accès à l'utilisateur à plusieurs fonctions, vous pouvez ajouter  popup 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).

+ +

Est-ce que mon extension ne fonctionne que pour certains sites et pages web ?

+ +

 

+ +

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 bouton de la barre d'outils en utilisant l'action du navigateur.

+ + + +

 

+ +

+ +

Lorsque vous souhaitez donner accès à plusieurs fonctions à l'utilisateur, vous pouvez ajouter une fenêtre contextuelle au bouton.

+ +

Mon extension doit-elle afficher des informations ou proposer des actions en parallèle avec des pages web ?

+ +

Si votre extension contient des informations ou des actions auxquelles un utilisateur souhaite accéder immédiatement lorsqu'il consulte une page Web, utilisez une barre latérale.

+ + + +

+ +

Mon extension offre-t-elle des fonctionnalités spécifiques au contenu de la page ou à d'autres fonctions du navigateur ?

+ +

Si votre extension offre des fonctionnalités auxquelles l'utilisateur peut vouloir accéder en contexte, ajoutez-les à un menu contextuel approprié.

+ + + +

Example of content menu items added by a WebExtension, from the context-menu-demo example

+ +

Est-ce que mon poste possède des paramètres que l'utilisateur peut régler ?

+ +

Si votre extension permet à l'utilisateur de modifier et d'enregistrer les paramètres qui affectent le comportement de l'extension, utilisez une page d'options pour fournir un lien Préférences standard vers les paramètres du gestionnaire des extensions

+ +

Typical preferences button, to access an extension's settings, from the Add-on Manager

+ +
+

Dans le système d'exploitation Windows, le bouton "Préférences" est appelé "Options".

+
+ +

Est-ce que mon extension a besoin de collecter beaucoup d'informations ou d'afficher du contenu en plus des onglets actuels ?

+ +

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 alerte ou qu'un formatage supplémentaire serait avantageux) utilisez pages webs groupées pour fournir des formulaires et un contenu similaire.

+ +

Example of a simple bundled page displayed as a detached panel.

+ +

Est-ce que mon extension essaie d'aider l'utilisateur à trouver des pages web ou du contenu ?

+ +

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 suggessions de la barre d'adresse pour fournir ces recommandations.

+ +

Example showing the result of the firefox_code_search WebExtension's customization of the address bar suggestions.

+ +

Mon extension offre-t-elle des outils pour les développeurs ?

+ +

Si vous fournissez des outils pour les développeurs, ajoutez-les aux outils de développement Firefox en utilisant les panneaux des outils de développement.

+ +

3. Tenir l'utilisateur informé

+ +

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.

+ +

Dites à l'utilisateur ce qui va se passer, avant qu'il ne se produise.

+ +

Les utilisateurs doivent comprendre ce qui se passe lorsqu'ils cliquent sur un bouton :

+ + + +

Si quelque chose est vraiment important et que l'utilisateur n'en est pas conscient, informez-le.

+ +

Si votre extension a terminé une tâche d'arrière-plan critique et de longue durée, utilisez les  notifications 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.

+ +

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, n'utilisez pas de notifications.

+ +

+ +

Utiliser les badges browserAction avec parcimonie

+ +

Pour informer les utilisateurs des événements importants, vous pouvez ajouter un badge au dessus de l'icône de la barre browserAction. Faites-le avec parcimonie - n'utilisez pas de badges pour fournir des mises à jour régulières ou persistantes de l'état.

+ +

Lorsqu'il s'agit de coloriser un badge, il est recommandé d'utiliser l'une des quatre couleurs pour les notifications de gravité différente :

+ + + +
+

L'utilisation des couleurs Firefox est suggérée, pour plus de détails voir Firefox Colors. Cependant, pour des raisons de compatibilité avec Chrome et Opera, nous prenons en charge toutes les couleurs que vous souhaitez utiliser.

+
+ +

4. Soyez Firefoxy dans l'apparence et la convivialité

+ +

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 Firefox Photon Design System.

+ +

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.

+ +

5. Grande expérience d'intégration

+ +

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.

+ +

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 Bonnes pratiques pour les utilisateurs d'embarquement, d'embarquement, et de débarquement.

+ +

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.

+ +

6. Testez, testez, puis testez à nouveau

+ +

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:

+ +
    +
  1. 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.
  2. +
  3. 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.
  4. +
+ +

Conseils de test :

+ + + +

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.

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 +--- +
{{AddonSidebar}}
+ +
+

Cette page décrit les API  de devtools telles qu'elles existent dans Firefox 55. Bien que les API soient basées sur les  API devtools de chrome, 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 Limitations des APIs devtools.

+
+ +

Vous pouvez utiliser les API WebExtensions pour étendre les outils de développement intégrés du navigateur. Pour créer une extension devtools, incluez la clé "devtools_page" dans manifest.json:

+ +
"devtools_page": "devtools/devtools-page.html"
+ +

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.

+ +

Le fichier HTML définit une page spéciale dans l'extension, appelée la page devtools.

+ +

La page devtools

+ +

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.

+ +

La page devtools n'a pas de DOM visible, mais peut inclure des sources JavaScript en utilisant les balises <script>. Les sources doivent être regroupées avec l'extension. Les sources ont accès à :

+ + + +

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'éxécution. Voici un exemple :

+ +
<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8">
+  </head>
+  <body>
+    <script src="devtools.js"></script>
+  </body>
+</html>
+ +

Le fichier devtools.js contiendra le code réel créant vos extensions d'outils de développement.

+ +

Creations de panneaux

+ +

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".

+ +

A l'aide de l'API devtools.panel.create(), vous pouvez créer votre propre panneau dans la fenêtre devtools :

+ +
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);
+});
+ +

Cela nécessite trois arguments obligatoires: le titre, l'icône et le contenu du panneau. Il renvoie une promesse qui résout un objet devtools.panels.ExtensionPanel représentant le nouveau panneau.

+ +

Interaction avec la fenêtre cible

+ +

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  devtools.inspectedWindow.

+ +

Code d'exécution dans la fenêtre cible

+ +

la fonction devtools.inspectedWindow.eval() fournit une façon d'exécuter le code dans la fenêtre inspectée.

+ +

C'est un peu comme utiliser {{WebExtAPIRef("tabs.executeScript()")}}  pour injecter un script de contenu, mais avec une différence importante :

+ + + +
+

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.

+
+ +

Les scripts chargés à l'aide de devtools.inspectedWindow.eval() ne voient pas non plus de variables JavaScript définies par les scripts de contenu.

+ +

Travailler avec les scripts de contenus

+ +

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 devtools.inspectedWindow.tabId  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()")}}:

+ +
// 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
+  });
+});
+ +
// background.js
+
+function handleMessage(request, sender, sendResponse) {
+  browser.tabs.executeScript(request.tabId, {
+    code: request.script
+  });
+}
+
+browser.runtime.onMessage.addListener(handleMessage);
+ +

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.

+ +

+ +

Limitations des API des devtools

+ +

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.

+ +

devtools.inspectedWindow

+ +

Les éléments suivants ne sont pas pris en charge :

+ + + +

Aucune des options à inspectedWindow.eval() n'est prise en charge.

+ +

Les scripts injectés à l'aide de inspectedWindow.eval() ne peuvent pas utiliser toutes les fonctions d'assistance en ligne de commande de la console, mais $0 et inspect(...) sont tous deux pris en charge (à partir de Firefox 55).

+ +

devtools.panels

+ +

Les éléments suivants ne sont pas pris en charge :

+ + + +

Examples

+ +

The webextensions-examples repo on GitHub contains several examples of WebExtensions that use devtools panels:

+ + 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 +--- +

{{AddonSidebar}}

+ +

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 browser.* 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.

+ +

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:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Aider les utilisateurs à séparer les activités de leur navigateur avec les identités contextuelles (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.

+
Illustration of the containers menu
+

Enregistrez et affichez des informations supplémentaires ou complémentaires sur une page Web à l'aide du composant de l'interface utilisation Sidebar, un panneau situé à côté des pages Web.

+
Illustration of the annotation example sidebar sitting alongside a webpage
+

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 manifest.json, les URLs où une action de page est affichée ou masquée, et choisissez où placer l'icône d'action du navigateur.

+
Illustration of a browser action icon placed in the menu panel
+

Aidez les utilisateurs à localiser le contenu qui les intéresse dans une page web, avec la possibilité de trouver et mettre en surbrillance le texte dans une page web.

+
Illustration of find highlighting text in page content
+

Effectuez des recherches directement à partir de votre extension, avec des fonctions pour obtenir des détails sur les moteurs de recherche et effectuer une recherche.

+
Wikipedia page showing the results of the search for "extension"
+

Ajoutez une dimension supplémentaire à vos thèmes en  mettant à jour le thème du navigateur au moment de l'exécution. 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.

+
Illustration suggesting the theme is changing by time
+

Effectuez des recherches directement à partir de votre extension, avec des fonctions pour obtenir les détails avec la possibilité de modifier (certains) paramètres globaux du navigateur.

+
Example of a Firefox setting showing that it is being controlled by an extension
+

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é enregistrer et de désinscrire des scripts de contenu au moment de l'exécution.

+
Illustration of example code used to inject a  content script on demand
+

Profitez des services externes pour gérer les protocoles ou les types de contenu en enregistrant les gestionnaires de protocole dans le manifest.json.

+
Illustration of code setting a protocol handler
+

Effectuer des tâches Web supplémentaires telles que la résolution des noms de domaines et proxying des requêtes web.

+
Example of Firefox proxy settings
+

Ajoutez des fonctionnalités de sécurité avancées à l'aide des modules de sécurités PKCS #11 aux clés et certificats source.

+
Illustration of the certificate and key
+ +

Icônes de icon8

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 +--- +

{{AddonSidebar}}

+ + + + + + + + + + + + + + + + + + +
Firefox workflow prepare step graphicFirefox workflow code step graphicFirefox workflow publish step graphicFirefox workflow enhance step graphicFirefox workflow retire step graphic
+ + + + + + + + + +
+ +

* Ou distribuez votre extension pour le chargement latéral, les applications de bureaux, ou dans une enteprise.

+ +

Vous avez une extension que vous souhaitez porter à Firefox?  Nous fournissons des conseils, des directives et des outils pour vous aider à rendre le portage simple. Pour commencer, visitez Portage d'une extension Google Chrome.

diff --git "a/files/fr/mozilla/add-ons/webextensions/incompatibilit\303\251s_chrome/index.html" "b/files/fr/mozilla/add-ons/webextensions/incompatibilit\303\251s_chrome/index.html" new file mode 100644 index 0000000000..71d20cc62b --- /dev/null +++ "b/files/fr/mozilla/add-ons/webextensions/incompatibilit\303\251s_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 +--- +

{{AddonSidebar}}

+ +

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.

+ +

Toutefois, il existe certaines différences significatives entre Chrome, Firefox et Edge et notamment :

+ + + +

La suite de cette page détaille ces problèmes ainsi que d'autres points d'incompatibilité.

+ +

Les API JavaScript

+ +

Les callbacks et l'espace de noms chrome.*

+ +

Dans Chrome, les extensions peuvent accéder aux API JavaScript privilégiées à l'aide de l'espace de noms chrome :

+ +
chrome.browserAction.setIcon({path: "path/to/icon.png"});
+ +

Les WebExtensions accèdent aux API équivalentes à l'aide de l'espace de noms browser :

+ +
browser.browserAction.setIcon({path: "path/to/icon.png"});
+
+ +

Beaucoup d'API sont asynchrones. Dans Chrome, les API asynchrones utilisent des fonctions de rappel (callback) pour renvoyer des valeurs et {{WebExtAPIRef("runtime.lastError")}} pour communiquer les erreurs :

+ +
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
+);
+ +

Les API WebExtensions équivalentes utilisent plutôt les promesses :

+ +
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);
+
+ +

Firefox : les espaces de noms chrome et browser

+ +

Afin d'aider au portage, l'implémentation de Firefox des WebExtensions prend en charge l'espace de noms chrome, l'utilisation des callbacks, l'espace de noms browser 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.

+ +

Si vous écrivez votre extension en utilisant browser et les promesses, l'équipe de Firefox a également développé une prothèse (polyfill) qui lui permettra de fonctionner sur Chrome : https://github.com/mozilla/webextension-polyfill.

+ +

Les API partiellement prises en charge

+ +

La page sur la compatibilité des navigateurs pour les API JavaScript WebExtension 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.

+ +

Ces tableaux sont générés à partir des données de compatibilité stockées en tant que  fichiers JSON dans GitHub.

+ +

Le reste de cette section décrit les problèmes de compatibilité qui ne sont pas encore pris en compte dans ces tableaux.

+ +

notifications

+ + + +

proxy

+ + + +

tabs

+ + + +

webRequest

+ + + +

windows

+ + + +

API non prises en charge

+ +

declarativeContent

+ +

l'API declarativeContent de Chrome n'a pas encore été implémentée in Firefox.

+ +

Firefox ne supportera pas l'API declarativeContent.RequestContentScript, qui est rarement utilisée et n'est pas disponible dans les versions stables de Chrome.

+ +

Incompatibilités diverses

+ +

Gestion des URL dans CSS

+ +

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é.

+ +

Incompatibilités supplémentaires

+ +

Firefox ne prend pas en charge alert(), confirm() ou prompt() à partir des pages d'arrière-plan.

+ +

web_accessible_resources

+ +

Dans Chrome, lorsqu'une ressource est répertoriée dans web_accessible_resources, elle est accessible via chrome-extension://<id-de-l-extension>/<chemin/vers/la/ressource>. L'identifiant de l'extension est fixé pour une extension donnée.

+ +

Firefox l'implémente différemment en utilisant un UUID aléatoire qui change pour chaque instance de Firefox : moz-extension://<UUID-aleatoire>/<chemin/vers/la/ressource>. 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.

+ +

La propriété key du manifeste

+ +

Lorsque vous travaillez avec une extension décompressée, Chrome permet d'ajouter une propriété key au manifeste afin de fixer l'identifiant de l'extension sur différentes machines. Ceci s'avère notamment utile lorsqu'on travaille avec web_accessible_resources. Puisque Firefox utilise des UUID aléatoires pour les web_accessible_resources, cette propriété n'est pas prise en charge.

+ +

Les requêtes sont relatives au contexte de l'extension et pas à celui du contenu de la page

+ +

Dans Chrome, lorsque la requête est appelée (par exemple, en utilisant fetch()) pour une URL relative comme /api du script de contenu, elle sera envoyée à https://example.com/api. Dans Firefox, vous devez fournir des URL absolues.

+ +

Les clés de manifest.json

+ +

La page relative à manifest.json 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é.

+ +

Ces tables sont générées à partir des données de compatibilité stockées en tant que fichiers JSON dans GitHub.

+ +

Communication avec le système natif

+ +

Arguments de messagerie basée sur la connexion

+ +

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 : chrome-extension://[extensionID]. Cela permet à l'application d'identifier l'extension.

+ +

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.

+ +

allowed_extensions

+ +

Dans Chrome, la clé de manifeste allowed_extensions s'appelle allowed_origins.

+ +

Emplacement du fichier de manifeste d'application

+ +

Chrome s'attend à trouver le manifeste de l'application dans un autre endroit. Se référer à la documentation Chrome pour l'emplacement de l'hôte de messagerie natif.

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 +--- +
{{AddonSidebar}}
+ +

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.

+ +

La technologie d'extensions Firefox est, en grande partie, compatible avec l'API d'extension 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 seulement quelques modifications.

+ +
+ + +

Si vous avez des idées ou des questions ou si vous avez besoin d'aide, vous pouvez nous contacter sur la mailing-liste dev-addons ou sur la room Add-ons sur Matrix.

+ +
+
+

Premiers pas

+ +

Découvrez ce que peuvent faire les extensions Firefox avant d'en faire une. Découvrez comment est structurée une extension et obtenez un aperçu du processus de développement et de publication d'extension, style Firefox. Explorez un peu plus en profondeur leurs fonctionnements avec une sélection exhaustif d'exemples d'extensions que vous pouvez exécuter directement sur Firefox.

+ +

Concepts

+ +

Obtenez des informations détaillées sur les concepts fondamentaux des extensions à l'aide d'une vue d'ensemble de l'API Javascript, en passant par les scripts de contenu, les Motifs (Match patterns), le travail avec les fichiers, l'internationalisation, et les bonnes pratiques de sécurité, jusqu'à des sujets plus avancés tels que les messages natifs, l'utilisation d'APIs d'outils de dévelopment, et des Manifests Natifs.

+ +

Interface utilisatrice

+ +

Découvrez tous les composants possibles d'une interface utilisatrice que vous pouvez utiliser dans vos extensions, avec des exemples contenant des astuces et leur code.

+ +

Tutoriels

+ +

Vous trouverez une série de tutoriels pour vous aider à commencer couvrant des modèles que vous utiliserez régulièrement, tels que le travail avec l'API Tabs et l'ajout d'un bouton à la barre d'outils ainsi que des sujets plus avancés tels que comment Intercepter les requêtes HTTP et comment travailler avec les identités contextuelles,

+ +

Méthode de travail Firefox

+ +

Lorsque vous êtes prêt à créer votre extension Firefox ou à faire un portage de votre extension de Chrome à Firefox, dirigez-vous vers l'atelier d'extension. Vous trouverez ici des détails sur :

+ + +
+ +
+

Références

+ +

JavaScript APIs

+ +

Obtenez des détails complets sur les méthodes, les propriétés, les types et les événements pour toutes les API Javascript. 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.

+ +

Clés de Manifest

+ +

Obtenez tous les détails sur les clés du manifeste, y compris toutes leurs propriétés et paramètres. Vous y trouverez également des informations détaillées sur la compatibilité de chaque clé avec les principaux navigateurs

+
+
+ + +
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 +--- +
{{AddonSidebar}}
+ +
{{Index("/fr/Add-ons/WebExtensions")}}
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 +--- +

{{AddonSidebar}}

+ +

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.

+ +

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 <script></script>. 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.

+ +

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.

+ +

Cet article examine comment travailler en toute sécurité avec des données distantes et l'ajouter à un DOM.

+ +

Travailler avec des chaînes arbitraires

+ +

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.

+ +

Méthodes de création de noeud DOM

+ +

Une approche légère pour insérer des chaînes dans une page consiste à utiliser les méthodes de manipulation DOM natives : document.createElement, Element.setAttribute, et Node.textContent. L'approche sécurisée consiste à créer les nœuds séparément et à affecter leur contenu à l'aide de textContent :

+ +
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);
+ +

Cette approche est sûre car l'utilisation de .textContent échappe automatiquement à tout code HTML distant dans data.color.

+ +

Cependant, attention, vous pouvez utiliser des méthodes natives qui ne sont pas sécurisées. Prenez le code suivant :

+ +
var data = JSON.parse(responseText);
+addonElement.innerHTML = "<div class='" + data.className + "'>" +
+                         "Your favorite color is now " + data.color +
+                         "</div>";
+ +

Ici, le contenu de data.className ou de data.color peut contenir du HTML qui peut fermer le tag plus tôt, insérer du contenu HTML arbitraire, puis ouvrir une autre balise.

+ +

jQuery

+ +

Lors de l'utilisation de jQuery, des fonctions telles que attr() et text() é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:

+ +
var node = $("</div>");
+node.addClass(data.className);
+node.text("Your favorite color is now " + data.color); 
+ +

Travailler avec du contenu HTML

+ +

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.

+ +

Désinfection HTML

+ +

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. DOMPurify, qui a été examiné par divers experts en sécurité, est une bibliothèque appropriée pour cette tâche dans les extensions.

+ +

Pour l'utilisation en production, DOMPurify 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 :

+ +
"content_scripts": [
+  {
+    "matches" : ["<all_urls>"],
+    "js": ["purify.min.js", "myinjectionscript.js"]
+  }
+]
+ +

Ensuite, dans myinjectionscript.js, vous pouvez lire le code HTML externe, le désinfecter et l'ajouter au DOM d'une page :

+ +
var elem = document.createElement("div");
+var cleanHTML = DOMPurify.sanitize(externalHTML);
+elem.innerHTML = cleanHTML;
+ +

Vous pouvez utiliser n'importe quelle méthode pour ajouter le HTML aseptisé à votre DOM, par exemple la fonction .html() de jQuery’s. Souvenez-vous cependant que le drapeau SAFE_FOR_JQUERY doit être utilisé dans ce cas :

+ +
var elem = $("<div/>");
+var cleanHTML = DOMPurify.sanitize(externalHTML, { SAFE_FOR_JQUERY: true });
+elem.html(cleanHTML);
+ +

Moteur de modèle

+ +

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.

+ +

Par exemple, lorsque vous utilisez des modèles moustache, vous devez utiliser la double moustache, \{{variable}}, qui échappe à tout code HTML. L'utilisation de la triple moustache, \{\{{variable}}}, doit être évitée car cela injecte une chaîne HTML brute et pourrait ajouter du code exécutable à votre modèle. Handlebars fonctionne d'une manière similaire, avec des variables dans le double guidon, \{{variable}}, é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  Handlebars.SafeString utilisez Handlebars.escapeExpression() pour échapper tous les paramètres dynamiques transmis à l'assistant. C'est une exigence car la variable résultante de Handlebars.SafeString est considérée comme sûre et elle n'est pas échappée lorsqu'elle est insérée avec des guidons doubles.

+ +

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.

+ +

Lecture supplémentaire

+ +

Pour plus d'informations sur ce sujet, consultez les articles suivants :

+ + 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 +--- +
{{AddonSidebar}}
+ +

Cet article décrit comment une extension 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 extensions bootstrap et les extensions utilisant le SDK des Add-ons.

+ +

Notez que les utilisateurs ne devraient pas 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 Publier votre extension.

+ +

Pour installer une extension temporairement :

+ + + +

L'extension sera installée et restera installée jusqu'à ce que vous redémarriez Firefox.

+ +

{{EmbedYouTube("cer9EUKegG4")}}

+ +

Recharger une extension temporaire

+ +

À partir de Firefox 48, il y a un nouveau bouton appelé "Recharger" à côté du nom de l'extension dans about:debugging :

+ +

Il fait ce qu'il dit :

+ + + +

{{EmbedYouTube("NuajE60jfGY")}}

+ +
+

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.

+
+ +

Utilisation de la ligne de commande

+ +

Si vous utilisez déjà la ligne de commande pour le développement, consultez l'outil web-ext. Il automatise temporairement l'installation et recharge automatiquement votre extension quand le code source a changé.

+ +

Détection d'installation temporaire

+ +

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 addons.mozilla.org. Écoutez l'événement {{WebExtAPIRef("runtime.onInstalled")}} et vérifiez la valeur de details.temporary.

+ +

Limitations

+ +

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.

+ +

Pour plus d'informations sur la façon de traiter ces situations, voir les demandes de permissions et Test des fonctionnalités persistantes et de redémarrage.

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 +--- +
{{AddonSidebar}}
+ +

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'API Presse-papiers.

+ +

La méthode {{domxref("Document.execCommand()")}} peut être utilisée, en spécifiant la commande désirée :

+ + + +

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 :

+ +
navigator.clipboard.readText().then(text => outputElem.innerText = text);
+ +

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.

+ +
+

Note: 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.

+
+ +

Ecrire dans le presse-papiers

+ +

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.

+ +

Utiliser execCommand()

+ +

Les commandes {{domxref("Document.execCommand", "document.execCommand()")}} de la méthode "couper" et "copier" 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).

+ +

Par exemple, supposons que vous ayez un popup qui inclut le HTML suivant :

+ +
<input id="input" type="text"/>
+<button id="copy">Copy</button>
+
+ +

Pour que le bouton "copier" copie le contenu de l'élément {{HTMLElement("input")}}, vous pouvez utiliser du code comme ceci :

+ +
function copy() {
+  var copyText = document.querySelector("#input");
+  copyText.select();
+  document.execCommand("copy");
+}
+
+document.querySelector("#copy").addEventListener("click", copy);
+ +

Parce que l'appel execCommand() se trouve à l'intérieur d'un gestionnaire d'événements click, vous n'avez pas besoin de permissions spéciales ici.

+ +

Cependant, disons que vous déclenchez plutôt la copie à partir d'une alarme  :

+ +
function copy() {
+  var copyText = document.querySelector("#input");
+  copyText.select();
+  document.execCommand("copy");
+}
+
+browser.alarms.create({
+  delayInMinutes: 0.1
+});
+
+browser.alarms.onAlarm.addListener(copy);
+ +

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 :

+ +
document.execCommand(‘cut’/‘copy’) was denied because it was not called from inside a short running user-generated event handler.
+ +

Pour activer ce cas d'utilisation, vous devez demander permission "clipboardWrite". Alors :  "clipboardWrite" vous permet d'écrire dans le presse-papiers en dehors d'un gestionnaire d'événements de courte durée pour une action utilisateur.

+ +

Utilisation de l'API Presse-papiers

+ +

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.

+ +

L'utilisation de l'API nécessite que vous ayez les permissons de l'API "clipboard-write". Vous pouvez vérifier cette permission en utilisant {{domxref("Permissions.query", "navigator.permissions.query()")}}:

+ +
navigator.permissions.query({name: "clipboard-write"}).then(result => {
+  if (result.state == "granted" || result.state == "prompt") {
+    /* write to the clipboard now */
+  }
+});
+
+ +

Cette fonction prend une chaîne de caractères comme entrée et met à jour le presse-papiers pour contenir cette chaîne :

+ +
function updateClipboard(newClip) {
+  navigator.clipboard.writeText(newClip).then(function() {
+    /* clipboard successfully set */
+  }, function() {
+    /* clipboard write failed */
+  });
+}
+
+ +
+

Note: Le nom de la permission clipboard-write n'est pas supporté actuellement dans Firefox - seulement les navigateurs Chromium.

+
+ +

***Considérations spécifiques du navigateur

+ +

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.

+ +

Dans Chrome:

+ + + +

Dans Firefox:

+ + + +
+

L'API execCommand('copy') n'est pas supporté dans Safari

+
+ + + +

Lecture à partir du presse-papiers

+ +

La méthode execCommand() fournit la commande "coller", 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()")}}.

+ +

Utilisation de execCommand()

+ +

Tout d'abord, vous devez avoir la permission "clipboardRead" établie pour votre extension. C'est le cas même si vous utilisez la commande "coller" à partir d'un gestionnaire d'événements généré par l'utilisateur tel que {{event("click")}} ou {{event("keypress")}}.

+ +

Considérez le HTML qui inclut quelque chose comme ceci :

+ +
<textarea id="output"></textarea>
+<button id="paste">Paste</button>
+
+ +

Pour définir le contenu de l'élément {{HTMLElement("textarea")}} avec l'ID "output" du presse-papiers lorsque l'utilisateur clique sur le {{HTMLElement("button")}} "coller", vous pouvez utiliser du code comme ceci :

+ +
function paste() {
+  var pasteText = document.querySelector("#output");
+  pasteText.focus();
+  document.execCommand("paste");
+  console.log(pasteText.textContent);
+}
+
+document.querySelector("#paste").addEventListener("click", paste);
+ +

Utilisation de l'API Presse-papiers

+ +

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.

+ +

Une fois que vous avez la permission "clipboard-read" de l'API permissions, vous pouvez lire facilement à partir du presse-papiers :

+ +
navigator.clipboard.readText().then(clipText =>
+  document.getElementById("outbox").innerText = clipText);
+ +

Cet extrait de code récupère le texte du presse-papiers et remplace le contenu actuel de l'élément par l'ID "outbox" avec ce texte.

+ +

Considérations spécifiques au navigateur

+ +

Firefox supporte la permission "clipboardRead" à partir de la version 54, mais ne supporte pas que le collage dans les élements en mode édition de contenu, 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.

+ +

Voir aussi

+ + diff --git "a/files/fr/mozilla/add-ons/webextensions/intercepter_requ\303\252tes_http/index.html" "b/files/fr/mozilla/add-ons/webextensions/intercepter_requ\303\252tes_http/index.html" new file mode 100644 index 0000000000..f534b57be1 --- /dev/null +++ "b/files/fr/mozilla/add-ons/webextensions/intercepter_requ\303\252tes_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 +--- +
{{AddonSidebar}}
+ +

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 :

+ + + +

Cet article décrit trois utilisations possibles du module webRequest :

+ + + +

Journalisation des URL de requête

+ +

Créez un nouveau répertoire et nommez-le "requests". Dans ce répertoire, créez le fichier "manifest.json", avec le contenu suivant :

+ +
{
+  "description": "Démonstration du module webRequests",
+  "manifest_version": 2,
+  "name": "webRequest-demo",
+  "version": "1.0",
+
+  "permissions": [
+    "webRequest",
+    "<all_urls>"
+  ],
+
+  "background": {
+    "scripts": ["background.js"]
+  }
+}
+ +

Ensuite, créez un fichier nommé "background.js", avec le contenu suivant :

+ +
function logURL(requestDetails) {
+  console.log("Chargement : " + requestDetails.url);
+}
+
+browser.webRequest.onBeforeRequest.addListener(
+  logURL,
+  {urls: ["<all_urls>"]}
+);
+
+
+ +

Ici, nous utilisons l’écouteur {{WebExtAPIRef("webRequest.onBeforeRequest", "onBeforeRequest")}} pour appeler la fonction logURL() juste avant de démarrer la requête. La fonction logURL() récupère l’URL de la requête dans l’objet d’évènement et la journalise dans la console du navigateur. Le modèle {urls: ["<all_urls>"]} permet d’intercepter les requêtes HTTP vers toutes les URL.

+ +

Pour tester ce module, installez l'extension, ouvrez la console du navigateur 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 :

+ +

{{EmbedYouTube("X3rMgkRkB1Q")}}

+ +

Redirection des requêtes

+ +

Utilisons maintenant webRequest pour rediriger les requêtes HTTP. Commençons par modifier le fichier manifest.json comme suit :

+ +
{
+
+  "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"]
+  }
+
+}
+ +

Ici, il s’agit simplement d’ajouter la permission "webRequestBlocking". Cette permission supplémentaire est requise lors de toute modification active d’une requête.

+ +

Modifions ensuite le fichier « background.js » comme suit :

+ +
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"]
+);
+ +

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 redirectUrl spécifiée dans la fonction.

+ +

Cette fois-ci, toutes les requêtes ne sont pas interceptées. L’option {urls:[pattern], types:["image"]} 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.

+ +

À noter également le passage de l’option "blocking": 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 "blocking".

+ +

Pour tester ce module, ouvrez une page MDN contenant beaucoup d’images (par exemple https://developer.mozilla.org/fr/docs/Tools/Network_Monitor), rechargez l'extension, puis rechargez la page MDN :

+ +

{{EmbedYouTube("ix5RrXGr0wA")}}

+ +

Modification des en-têtes de requête

+ +

Enfin, nous pouvons utiliser le module webRequest 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/".

+ +

Il n’est pas nécessaire de modifier le fichier "manifest.json" par rapport à l’exemple précédent.

+ +

Modifiez le code du fichier "background.js" comme suit :

+ +
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"]
+);
+ +

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.

+ +

La fonction d’écouteur n’est appelée qu’en cas de requête vers des URL correspondant au modèle targetPage. Notez aussi le nouveau passage de l’option "blocking". Nous avons également passé "requestHeaders", 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.

+ +

La fonction d’écouteur recherche l’en-tête "User-Agent" dans la liste, remplace sa valeur par celle de la variable ua et renvoie la liste modifiée. Cette dernière est ensuite envoyée au serveur.

+ +

Pour tester ce module, accédez à useragentstring.com et vérifiez que le navigateur identifié est Firefox. Rechargez ensuite l'extension, rechargez useragentstring.com et vérifiez que Firefox a été remplacé par Opera :

+ +

{{EmbedYouTube("SrSNS1-FIx0")}}

+ +

En savoir plus

+ +

Pour en apprendre davantage sur toutes les possibilités de l’API webRequest, consultez la documentation de référence correspondante.

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 +--- +
{{AddonSidebar}}
+ +

L'API WebExtensions dispose d'un module assez pratique pour l'internationalisation des extensions — i18n. 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 i18n.js.

+ +
+

L'exemple d'extension présenté dans cet article — notify-link-clicks-i18n — est disponible sur GitHub. Suivez avec le code source que vous parcourez les sections ci-dessous.

+
+ +

Anatomie d'une extension internationnalisée

+ +

Une extension internationnalisée peut contenir les mêmes caractéristiques que n'importe quelle autre extension — scripts d'arrière-plan, scripts de contenu, 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 :

+ + + +

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.

+ +

Fourniture de chaînes localisées dans _locales

+ +
+
Vous pouvez rechercher des sous-étiquettes de langue à l'aide de l'outil de Rechercher de la page de recherche sous-étiquette de langue. Notez que vous devez rechercher le nom anglais de la langue.
+
+ +

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é  _locales, placé dans la racine de l'extension. Chaque environnement local a ses chaînes (appelées messages) contenues dans un fichier appelé  messages.json, qui est placé dans un sous-répertoire de _locales, nommé en utilisant la sous-étiquette de langue pour la langue de ce local.

+ +

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 _locales, le séparateur doit être un trait de soulignement :  "en_US".

+ +

Par exemple, dans notre exemple d'application nous avons des répertoires pour "en" (anglais), "de" (allemand), "nl" (néerlandais), et "ja" (Japonais). Chaque d'entre eux a un fichier messages.json à l'intérieur.

+ +

Regardons maintenant la structure de l'un de ces fichiers (_locales/en/messages.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"
+      }
+    }
+  }
+}
+ +

Ce fichier est un JSON standard — chacun de ses membres est un objet avec un nom, qui contient un message  et une description. Tous ces éléments sont des chaînes ; $URL$ est un espace réservé, qui est remplacé par une sous-chaîne au moment où le membre notificationContent est appelé par l'extension. Vous apprendrez à le faire dans la section {{anch("Récupération des chaînes de messages de JavaScript")}}.

+ +
+

Remarque : Vous pouvez trouver beaucoup plus d'informations sur le contenu des fichiers  messages.json dans notre référence spécifique aux paramètres régionaux.

+
+ +

Internationaliser manifest.json

+ +

Il y a plusieurs tâches à accomplir pour internationaliser votre manifest.json.

+ +

Récupération des chaînes localisées dans le manifest

+ +

Votre manifest.json 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.

+ +

Pour internationaliser les chaînes, spécifiez-les comme ceci :

+ +
"name": "__MSG_extensionName__",
+"description": "__MSG_extensionDescription__",
+ +

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.

+ +

Pour appeler une chaîne de message comme celle-ci, vous devez le spécifier comme ceci :

+ +
    +
  1. Deux underscores, suivi de
  2. +
  3. La chaîne "MSG", suivi de
  4. +
  5. Un trait de soulignement, suivi de
  6. +
  7. Le nom du message que vous souhaitez appeler tel que défini dans messages.json, suivi de
  8. +
  9. Deux underscores
  10. +
+ +
__MSG_ + messageName + __
+ +

Spécification d'un paramètre régional par défaut

+ +

Un autre champ que vous devez spécifier dans votre fichier manifest.json est default_locale:

+ +
"default_locale": "en"
+ +

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")}}.

+ +

CSS dépendant des paramètres régionaux

+ +

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 :

+ +
header {
+  background-image: url(../images/__MSG_extensionName__/header.png);
+}
+ +

Ceci est utile, bien que vous fassiez mieux de gérer une telle situation en utilisant {{anch("Predefined messages")}}.

+ +

Récupération des chaînes de messages de JavaScript

+ +

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' API i18n est assez simple, contenant seulement quatre méthodes principales :

+ + + +

Dans notre exemple notify-link-clicks-i18n, le script d'arrière plan contient les lignes suivantes :

+ +
var title = browser.i18n.getMessage("notificationTitle");
+var content = browser.i18n.getMessage("notificationContent", message.url);
+ +

La première récupère juste le message du champ notificationTitle du fichier messages.json 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é $URL$  que nous voyons dans le champ message du champ  notificationContent :

+ +
"notificationContent": {
+  "message": "You clicked $URL$.",
+  "description": "Tells the user which link they clicked.",
+  "placeholders": {
+    "url" : {
+      "content" : "$1",
+      "example" : "https://developer.mozilla.org"
+    }
+  }
+}
+
+ +

Le membre "placeholders" définit tous les espaces réservés et d'où ils sont extraits. L'espace réservé "url" spécifie que son contenu est pris à partir de $1, qui est la première valeur donnée dans le second paramètre de  getMessage(). Puisque l'espace réservé est appelé "url", nous utilisons $URL$ pour l'appeler dans la chaîne de message (pour "name" vous utiliserez $NAME$, 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 — [a, b, c] sera disponible en $1, $2, et $3, et ainsi de suite, à l'intérieur des  messages.json.

+ +

Parcourons un exemple: la chaîne originale du message  notificationContent dans le fichier  en/messages.json est

+ +
You clicked $URL$.
+ +

Disons que le lien a été cliqué sur https://developer.mozilla.org. Après l'appel  {{WebExtAPIRef("i18n.getMessage()")}} , le contenu du deuxième paramètre est mis à disposition dans messages.json sous la forme $1, qui remplace l'espace réservé $URL$ tel qu'il est défini dans l'espace réservé  "url". Donc, la chaîne de message final est

+ +
You clicked https://developer.mozilla.org.
+ +

Utilisation  de l'espace réservé direct

+ +

Il est possible d'insérer vos variables ($1, $2, $3, etc.) directement dans les chaînes de message, par exemple nous pourrions réécrire le membre "notificationContent" comme ceci :

+ +
"notificationContent": {
+  "message": "You clicked $1.",
+  "description": "Tells the user which link they clicked."
+}
+ +

Cela peut sembler plus rapide et moins complexe, mais l'inverse (en utilisant "placeholders") est considéré comme la meilleure pratique. En effet, avoir le nom de l'espace réservé (par exemple "url") 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 $1$8 , plus susceptibles de savoir à quoi correspondent les noms de vos espaces réservés.

+ +

Substitution codée en dur

+ +

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 :

+ +
"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/"
+    }
+  }
+}
+ +

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 $1. 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.

+ +

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.

+ +

Sélection de chaîne localisée

+ +

Les paramètres régionaux peuvent être spécifiés en utilisant uniquement un code de langue, comme fr ou en, ou ils peuvent être qualifiés avec un code de région, comme en_US ou en_GB, 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:

+ +
    +
  1. S'il existe un fichier messages.json pour l'environnement local actuel exact et qu'il contient la chaîne, renvoyez-le.
  2. +
  3. Sinon, si l'environnement local actuel est qualifié avec une région (par exemple en_US) et qu'il existe un fichier messages.json pour la version sans région de cet environnement local (par exemple en), et que ce fichier contient la chaîne, renvoyez-le.
  4. +
  5. Sinon, s'il existe un fichier messages.json pour l'argument default_locale défini dans manifest.json, et qu'il contient la chaîne, renvoyez-le.
  6. +
  7. Sinon, renvoyez une chaîne vide.
  8. +
+ +

Prenons l'exemple suivant :

+ + + +

Supposons que default_locale soit défini sur fr, et que les paramètres régionaux actuels du navigateur soient en_GB :

+ + + +

Messages prédéfinis

+ +

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 :

+ +
__MSG_extensionName__
+ +

Les messages prédéfinis utilisent exactement la même syntaxe, sauf avec @@ avant le nom du message, par exemple

+ +
__MSG_@@ui_locale__
+ +

Le tableau suivant montre les différents messages prédéfinis disponibles :

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Nom du messageDescription
@@extension_id +

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.

+ +

Vous ne pouvez pas utiliser ce message dans un fichier manifest.

+ +

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é applications 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  extensionId 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")}}.

+
@@ui_localeLes paramètres régionaux actuels vous pouvez utiliser cette chaîne pour créer des URL spécifiques aux paramètres régionaux.
@@bidi_dirLa 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.
@@bidi_reversed_dirSi le @@bidi_dir est "ltr", alors il s'agit de "rtl"; sinon, c'est "ltr".
@@bidi_start_edgeSi le @@bidi_dir est "ltr", alors c'est "gauche"; sinon, c'est "droite".
@@bidi_end_edgeSi le @@bidi_dir est "ltr", alors c'est "droite"; sinon, c'est "gauche".
+ +

Pour en revenir à notre exemple, il serait plus logique de l'écrire comme ceci :

+ +
header {
+  background-image: url(../images/__MSG_@@ui_locale__/header.png);
+}
+ +

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.

+ +

Regardons un exemple d'utilisation des messages @@bidi_* dans un fichier 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;
+}
+ +

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 :

+ +
direction: ltr;
+padding-left: 0;
+padding-right: 1.5em;
+
+ +

Pour une langue de droite à gauche comme l'arabe, vous obtiendrez :

+ +
direction: rtl;
+padding-right: 0;
+padding-left: 1.5em;
+ +

Tester votre extension

+ +

Depuis Firefox 45, vous pouvez installer temporairement des extensions à partir du disque — voir Chargement depuis le disque. Pour ce faire, puis essayez de tester notre extension notify-link-clicks-i18n. 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é.

+ +

Ensuite, changez les paramètres régionaux de Firefox en un supporté dans l'extension que vous voulez tester.

+ +
    +
  1. Ouvrez "about:config" dans Firefox, et recherchez la préférence  intl.locale.requested  (gardez à l'esprit qu'avant Firefox 59, cette préférence s'appellait general.useragent.locale).
  2. +
  3. 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.
  4. +
  5. Recherchez intl.locale.matchOS et double-cliquez sur la préférence pour qu'elle soit définie sur false.
  6. +
  7. Redémarrez votre navigateur pour terminer la modification.
  8. +
+ +
+

Remarque : Cela fonctionne pour modifier les paramètres régionaux du navigateur, même si vous n'avez pas installé le pack de language pour cette langue. Vous obtiendrez simplement l'interface du navigateur dans votre langue par défaut si c'est le cas.

+
+ +
    +
+ +

Chargez l'extension temporairement à partir du disque, puis testez vos nouveaux paramètres régionaux:

+ + + +

{{EmbedYouTube("R7--fp5pPGg")}}

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 +--- +
{{AddonSidebar}}
+ + + + + + + + + + + + + + + + +
TypeObject
ObligatoireNo
Exemple +
+"background": {
+  "scripts": ["background.js"]
+}
+
+ +

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

+ +

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

+ +

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

+ +

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

+ +

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

+ + + + + + + + + + + + +
"scripts" +

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

+ +

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

+ +

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

+ +

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

+
"page" +
+

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

+
+ +

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

+ +

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

+ +

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

+
+ +

Exemple

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

Chargez deux scripts de fond.

+ +
  "background": {
+    "page": "my-background.html"
+  }
+ +

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

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.manifest.background", 10)}}

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 +--- +
{{AddonSidebar}}
+ + + + + + + + + + + + + + + + +
Typechaîne de caractères
ObligatoireNon
Exemple +
+"author": "Walt Whitman"
+
+ +

L'auteur de l'extension, destiné à être visualisé dans l'interface utilisateur du navigateur. Si la clé du developpeur 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.

+ +

Notez que Firefox ne supporte cette clé qu'à partir de la version 52 et que cette clé est obligatoire dans Microsoft Edge.

+ +

Exemple

+ +
"author": "Walt Whitman"
+ +

Compatibilité des navigateurs

+ + + +

{{Compat("webextensions.manifest.author")}}

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 +--- +
{{AddonSidebar}}
+ + + + + + + + + + + + + + + + +
TypeObject
MandatoryNo
Example +
+"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
+  }]
+}
+
+ +

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.

+ +

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 scripts d'arrière-plan de votre extension lorsque l'utilisateur clique sur le bouton.

+ +

Vous pouvez également créer et manipuler des actions de navigateur de manière programmée à l'aide de l'API browserAction.

+ +

Syntaxe

+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
browser_styleBooléen +

Facultatif, par défaut à false.

+ +

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é browser_style. Bien que cette touche par défaut soit false, il est recommandé de l'inclure et de la mettre à true afin de rendre vos fenêtres contextuelles cohérentes avec l'apparence du reste de l'interface utilisateur du navigateur.

+ +

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  box-sizing: border-box (voir box-sizing).

+ +

Les Browser styles décrivent les classes que vous pouvez appliquer aux éléments dans le popup afin d'obtenir des styles particuliers.

+ +

L'extension de l'exemple latest-download utilise browser_style dans son popup.

+
default_areaChaîne de caractères +
Nouveau dans Firefox 54
+ +

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:

+ +
    +
  • "navbar" : le bouton est placé dans la barre d'outils principale du navigateur, à côté de la barre d'URL.
  • +
  • "menupanel" : le bouton est placé dans un panneau contextuel.
  • +
  • "tabstrip" : le bouton est placé dans la barre d'outils qui contient les onglets du navigateur.
  • +
  • "personaltoolbar" : le bouton est placé dans la barre d'outils des signets
  • +
+ +

Cette propriété est seulement supportée dans Firefox.

+ +

Cett propriété est facultative, et defaut à "navbar".

+ +

Firefox se souvient des paramètres default_area 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  default_area, l'identifiant de l'extension doit être modifié.

+ +

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.

+
default_iconObjet ou chaîne de caractères +

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.

+ +

Les icônes sont spécifiées comme des URL relatives dans le fichier manifest.json lui-même.

+ +

Vous pouvez spécifier un seul fichier d'icône en fournissant une chaîne ici:

+ +
+"default_icon": "path/to/geo.svg"
+ +

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:

+ +
+    "default_icon": {
+      "16": "path/to/geo-16.png",
+      "32": "path/to/geo-32.png"
+    }
+ +

Vous ne pouvez pas spécifier plusieurs icônes de la même taille.

+ +

Voir Choisir les tailles des icones pour plus de conseils à ce sujet.

+
default_popupchaîne de caractères +

Le chemin d'accès à un fichier HTML contenant la spécification de la fenêtre contextuelle.

+ +

Le fichier HTML peut inclure des fichiers CSS et JavaScript en utilisant des éléments <link> et <script>, tout comme une page Web normale. Cependant, <script> doit avoir l'attribut src pour charger un fichier. N'utilisez pas <script> avec du code intégré, car vous obtiendrez une erreur de politique de violation de contenu confuse.

+ +

Contrairement à une page Web normale, JavaScript en cours d'exécution dans la fenêtre contextuelle peut accéder à toutes les APIs WebExtension (soumis, bien sûr, à l'extension possédant les permissions appropriées).

+ +

Ceci est une propriété localisable.

+
default_titlechaîne de caractères +

Info-bulle pour le bouton, affichée lorsque l'utilisateur passe sa souris dessus.

+ +

Ceci est une propriété localisable.

+
theme_iconsTableau +

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.

+ +

Si cette propriété est présente, il s'agit d'un tableau contenant au moins un objet ThemeIcons. Un objet ThemeIcons contient trois propriétés obligatoires :

+ +
+
"dark"
+
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é).
+
"light"
+
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).
+
"size"
+
La taille des deux icônes en pixels.
+
+ +

Les icônes sont spécifiées en tant qu'URL par rapport au fichier manifest.json lui-même.

+ +

Vous devez fournir un ThemeIcons en taille 16x16 et un en taille 32x32 (pour l'affichage de la rétine).

+
+ +

Choisir les tailles des icônes

+ +

L'icône de l'action du navigateur peut devoir être affichée dans différentes tailles dans différents contextes:

+ + + +

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.

+ +

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 :

+ +
"default_icon": "path/to/geo.svg"
+ +

Ou vous pouvez fournir plusieurs icônes dans différentes tailles, et le navigateur choisira la meilleure.

+ +

Dans Firefox:

+ + + +

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:

+ +
    "default_icon": {
+      "16": "path/to/geo-16.png",
+      "32": "path/to/geo-32.png",
+      "64": "path/to/geo-64.png"
+    }
+ +

 

+ +

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.

+ +

 

+ +

Exemple

+ +
"browser_action": {
+  "default_icon": {
+    "16": "button/geo-16.png",
+    "32": "button/geo-32.png"
+  }
+}
+ +

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 :

+ +
 browser.browserAction.onClicked.addListener(handleClick);
+ +
"browser_action": {
+  "default_icon": {
+    "16": "button/geo-16.png",
+    "32": "button/geo-32.png"
+  },
+  "default_title": "Whereami?",
+  "default_popup": "popup/geo.html"
+}
+ +

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.

+ +

Pour une extension simple, mais complète, qui utilise une action de navigateur, consultez le tutoriel pas à pas.

+ +

Compatibilité du navigateur

+ +

{{Compat("webextensions.manifest.browser_action", 10)}}

+ +

See also

+ + 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 +--- +

{{AddonSidebar}}

+ + + + + + + + + + + + + + + + +
TypeObject
Obligatoire +

Habituellement, non (mais voir aussi Quand avec-vous besoin d'une ID Complémentaire?). Obligatoire avant Firefox 48 (desktop) et Firefox pour Android.

+
Example +
+"browser_specific_settings": {
+  "gecko": {
+    "id": "addon@example.com",
+    "strict_min_version": "42.0"
+  }
+}
+
+
+ +

Description

+ +

La clé browser_specific_settings contient des clés qui sont spécifiques à certaines applications hôtes.

+ +

Propriétés (Gecko) Firefox

+ +

Actuellement, elle contient uniquement une clé, gecko, qui est structurée ainsi :

+ + + +

Vois la liste des versions Gecko valides.

+ +

Format d'ID d'extension

+ +

L'ID d'extension doit être l'un des suivants :

+ + + +

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.

+ +

Par exemple :

+ +
"id": "extensionname@example.org"
+ +
"id": "{daf44bf7-a45e-4450-979c-91cf07434c3d}"
+ +

Propriétés Microsoft Edge

+ +
+

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.

+
+ +

Microsoft Edge stocke les paramètres spécifiques à son navigateur dans la sous-clé edge, qui possède les propriétés suivantes :

+ +
+
browser_action_next_to_addressbar
+
+

Propriété booléenne qui contrôle le placement de l'action du navigateur.

+ + +
+
+ +

Exemples

+ +

Exemple avec toutes les clés possibles. Notez que vous n'incluez normalement ni une version strict_max_version ni une clé update_url.

+ +
"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
+  }
+}
+ +

Compatibilité des navigateurs

+ + + +

{{Compat("webextensions.manifest.browser_specific_settings")}}

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 +--- +
{{AddonSidebar}}
+ +

Utilisez la clé chrome_settings_overrides pour remplacer certains paramètres du navigateur. Deux paramètres sont disponibles :

+ + + +
"chrome_settings_overrides" : {
+  "homepage": "https://developer.mozilla.org/"
+}
+ +
"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"
+  }
+}
+ + + + + + + + + + + + + + + +
clé de manifeste : chrome_settings_overrides
TypeObjet
ObligatoireNon
+ +

Syntaxe

+ +

La clé chrome_settings_overrides est un objet qui peut avoir les propriétés suivantes:

+ + + + + + + + + + + + + + + + + + + + + +
NomTypeDescription
homepageChaîne de caractères +

Définit la page à utiliser comme page d'accueil du navigateur.

+ +

Le remplacement est donné comme une URL. L'URL peut :

+ +
    +
  • pointer sur un fichier regroupé avec l'extension, auquel cas il est donné comme une URL relative au fichier manifest.json
  • +
  • être une URL distante comme "https://developer.mozilla.org/".
  • +
+ +

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é.

+ +

Pour éviter de nouveaux onglets, utilisez à la place "chrome_url_overrides".

+ +

C'est une  propriété localisable.

+
search_providerObjet +

Définit un moteur de recherche à ajouter au navigateur.

+ +

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 "{searchTerms}" pour interpoler le terme de recherche  dans l'URL, comme : https://www.discogs.com/search/?q={searchTerms}. Vous pouvez également fournir des paramètres POST à envoyer avec la recherche.

+ +

Le moteur de recherche sera présenté à l'utilisateur à côté de ceux fournis dans l'interface. Si vous incluez la propriété is_defaultet le configurez avec true, le nouveau moteur de recherche devient l'option par défaut. Avec l'utilisation de la propriétékeyword, 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é.

+ +

C'est un objet avec les propriétés listées ci-dessous. Toutes les propriétés chaîne de caractères sont localisables.

+ +
+
name
+
Chaîne de caractères : le nom du moteur de recherche, affiché pour l'utilisateur.
+
search_url
+
Chaîne de caractères : l'URL utilisée par le moteur de recherche. Il peut être une URL HTTPS.
+
is_default
+
Booléen: "True" si le moteur de recherch doit être le choix par défaut.
+
alternate_urls {{optional_inline}}
+
Tableau de chaînes de caractères : un éventail d'URL alternatives, qui peut être utilisé à la place desearch_url.
+
encoding {{optional_inline}}
+
Chaîne de caractères : codage du terme de recherche, spécifié comme un standard character encoding name, voir "UTF-8".
+
favicon_url {{optional_inline}}
+
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.
+
image_url {{optional_inline}}
+
Chaîne de caractères : URL utilisée pour une recherche d'images.
+
image_url_post_params {{optional_inline}}
+
Chaîne de caractères : paramètres POST à envoyer àimage_url.
+
instant_url {{optional_inline}}
+
Chaîne de caractères : URL utilisée pour une recherche instantanée.
+
instant_url_post_params {{optional_inline}}
+
Chaîne de caractères : paramètres POST à envoyer à instant_url.
+
keyword {{optional_inline}}
+
Chaîne de caractères : mots-clés de la barre d'adresse pour le moteur de recherche.
+
prepopulated_id {{optional_inline}}
+
L'ID d'un moteur de recherche intégré à utiliser.
+
search_url_post_params {{optional_inline}}
+
Chaîne de caractères : paramètres POST à envoyer àsearch_url.
+
suggest_url {{optional_inline}}
+
Chaîne de caractères : URL utilisée pour les suggestions de recherche. Ceci doit être une URL HTTPS
+
suggest_url_post_params {{optional_inline}}
+
Chaîne de caractères : paramètres POST à envoyer àsuggest_url.
+
+
+ +

Compatibilité de navigateur

+ + + +

{{Compat("webextensions.manifest.chrome_settings_overrides", 10)}}

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 +--- +
{{AddonSidebar}}
+ + + + + + + + + + + + + + + + +
TypeObjet
ObligatoireNon
Exemple +
+  "chrome_url_overrides" : {
+    "newtab": "my-new-tab.html"
+  }
+
+ +

Utilisez la clé chrome_url_overrides 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.

+ +

Syntaxe

+ +

La clé chrome_url_overrides est un objet qui peut avoir les propriétés suivantes:

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
NomTypeDescription
bookmarksChaîne de caractères +

Remplace la page qui affiche les signets.

+
historychaîne de caractères +

Remplace la page qui affiche l'historique de navigation.

+
newtabchaîne de caractères +

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 Ctrl/Command+T.

+ +

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".

+ +

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 API privilégiées "browser.*" comme une extension d'arrière-plan.

+ +

Il est très pratique d'inclure un <title> pour la page, ou le titre de l'onglet sera l'URL "moz-extension://..." .

+ +

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.

+ +

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.

+ +

Pour remplacer la page d'accueil du navigateur, utilisez plutôt "chrome_settings_overrides".

+
+ +

Toutes les propriétés sont localisables.

+ +

Exemple

+ +
"chrome_url_overrides" : {
+  "newtab": "my-new-tab.html"
+}
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.manifest.chrome_url_overrides")}}

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 +--- +
{{AddonSidebar}}
+ + + + + + + + + + + + + + + + +
TypeObjet
ObligatoireNon
Exemple +
+"commands": {
+  "toggle-feature": {
+    "suggested_key": {
+      "default": "Ctrl+Shift+Y",
+      "linux": "Ctrl+Shift+U"
+    },
+    "description": "Send a 'toggle-feature' event"
+  }
+}
+
+ +

Utilisez la clé commands pour définir un ou plusieurs raccourcis clavier pour votre extension.

+ +

Chaque raccourci clavier est défini avec un nom, une combination de clé, et un description. Une fois que vous avez défini des commandes dans le fichier manifest.json, de votre extension, vous pouvez écouter leurs combinaisons de touches associées avec l'API JavaScript  {{WebExtAPIRef("commands")}}.

+ +

Syntaxe

+ +

La clé commands est un objet et chaque raccourci est une propriété de celui-ci. Le nom de la propriété est le nom du raccourci.

+ +

Chaque raccourci est lui-même un objet, qui possède jusqu'à deux propriétés :

+ + + +

La propriété suggested_key est elle-même un objet pouvant avoir l'une des propriétés suivantes et qui sont toutes des chaînes :

+ + + +

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 "+". La valeur de "default" est utilisée sur toutes les plateformes qui ne sont pas listées explicitement.

+ +

Par exemple :

+ +
"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"
+    }
+  }
+}
+ +

Cela définit deux raccourcis :

+ + + +

Vous pouvez alors écouter la commande "toggle-feature" avec un code comme celui-ci :

+ +
browser.commands.onCommand.addListener(function(command) {
+  if (command == "toggle-feature") {
+    console.log("toggling the feature!");
+  }
+});
+ +

Raccourcis spéciaux

+ +

Il existe 3 raccourci spéciaux avec des actions par défaut, pour lesquels l'événement  {{WebExtAPIRef("commands.onCommand")}} n'est pas déclenché :

+ + + +

Par exemple, ce JSON définit une combinaison de touches qui clique sur l'action du navigateur de l'extension :

+ +
"commands": {
+  "_execute_browser_action": {
+    "suggested_key": {
+      "default": "Ctrl+Shift+Y"
+    }
+  }
+}
+ +

Les valeurs de raccourci

+ +

Il existe deux formats valides pour les touches de raccourci : comme une combinaison de touches ou comme une clé multimédia.

+ +

Combinaisons de touches

+ +
+
Sur Mac, "Ctrl" est interprété comme "Command", donc si vous avez réellement besoin de "Ctrl", spécifiez "MacCtrl".
+
+ +

Les combinaisons de touches doivent être composées de deux ou trois touches :

+ +
    +
  1. modificateur (obligatoire, à l'exception des touches de fonction). Il peut s'agir de "Ctrl", "Alt", "Command", ou "MacCtrl".
  2. +
  3. second modificateur (facultatif). S'il est fourni, il doit être "Shift" ou (pour Firefox ≥ 63) l'un quelconque des "Ctrl", "Alt", "Command", ou "MacCtrl". Ne doit pas être le modificateur déjà utilisé comme modificateur principal.
  4. +
  5. touche (obligatoire). Ce peut être l'une des touches : +
      +
    • lettres AZ
    • +
    • chiffres 09
    • +
    • fonctions F1F12
    • +
    • Comma(virgule), Period(point), Home (début), End (Fin), PageUp(page précédente), PageDown (page suivante), Space (espace), Insert(inser), Delete(Suppr), Up (haut), Down (bas), Left(gauche), Right (droite)
    • +
    +
  6. +
+ +

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 "+". Par exemple, "Ctrl+Shift+Z".

+ +

Si une combinaison de touches est déjà utilisée par le navigateur (comme "Ctrl+P") 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.

+ +

Touches médias

+ +

Une alternative est de spécifier le raccourci comme l'une des touches de média suivantes :

+ + + +

Mise à jour des raccourcis

+ +

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 about:addons dans Firefox, comme montré dans cette video. Dans Chrome, les utilisateurs peuvent modifier les raccourcis sur chrome://extensions/shortcuts.

+ +

Exemple

+ +

Définissez un seul raccourci clavier en utilisant uniquement la combinaison de touches par défaut :

+ +
"commands": {
+  "toggle-feature": {
+    "suggested_key": {
+      "default": "Ctrl+Shift+Y"
+    },
+    "description": "Send a 'toggle-feature' event"
+  }
+}
+ +

Définissez deux raccourcis clavier, l'un avec une combinaison de touches spécifique à la plate-forme :

+ +
"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"
+    }
+  }
+}
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.manifest.commands")}}

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 +--- +
{{AddonSidebar}}
+ + + + + + + + + + + + + + + + +
Type{{ jsxref("array", "Tableau") }}
ObligatoireNon
Exemple +
+"content_scripts": [
+  {
+    "matches": ["*://*.mozilla.org/*"],
+    "js": ["borderify.js"]
+  }
+]
+
+ +

Ordonne au navigateur de charger des scripts de contenu dans les pages web dont l’URL correspond à un modèle donné.

+ +

Cette clé est un tableau. Chaque élément est un objet qui :

+ + + +

Le tableau ci-dessous présente le détail de toutes les clés que vous pouvez inclure.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NomTypeDescription
all_frames{{ jsxref("boolean", "Booléen") }} +

true : 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.

+ +

false : injecte seulement dans le cadre le plus haut de l’onglet qui répond aux exigences d’URL.

+ +

Par défaut à false.

+
css{{ jsxref("array", "Tableau") }} +

Un tableau de chemins, relatifs à manifest.json, référençant les fichiers CSS qui seront injectés dans les pages correspondantes.

+ +

Les fichiers sont injectés dans l’ordre donné, et avant que le DOM ne soit chargé.

+ +
+

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é.

+
+
exclude_globs{{ jsxref("array", "Tableau") }} +

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.

+
exclude_matches{{ jsxref("array", "Tableau") }} +

Un tableau de modèles de correspondance. Voir les {{ anch("Les_modèles_de_correspondance_d’URL", "modèles de correpondance d’URL") }} ci-dessous.

+
include_globs{{ jsxref("array", "Tableau") }}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.
js{{ jsxref("array", "Tableau") }} +

Un tableau de chemins, relatifs au fichier manifest.json, référençant les fichiers JavaScript qui seront injectés dans les pages correspondantes.

+ +

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 :

+ +
+"js": ["jquery.js", "my-content-script.js"]
+ +

alors my-content-script.js peut utiliser jQuery.

+ +

Les fichiers sont injectés au moment spécifié par {{ anch("run_at") }}.

+
match_about_blank{{ jsxref("boolean", "Booléen") }} +

Insère les scripts de contenu dans les pages dont l’URL est about:blank ou about:srcdoc, 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é content_scripts.

+ +

Ceci est particulièrement utile pour exécuter des scripts dans des {{ htmlelement("iframe", "iframes") }} vides, dont l’URL est about:blank. Pour ce faire, vous devez également définir la clé all_frames.

+ +

Par exemple, supposons que vous disposiez d’une clé de content_scripts comme ceci :

+ +
+"content_scripts": [
+  {
+    "js": ["my-script.js"],
+    "matches": ["https://example.org/"],
+    "match_about_blank": true,
+    "all_frames": true
+  }
+]
+ +

Si l’utilisateur ou l’utilisatrice charge https://example.org/, et si cette page intègre une iframe vide, alors my-script.js sera chargé dans l’iframe.

+ +

match_about_blank 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 à "document_start" même si vous spécifiez cette valeur dans {{ anch("run_at") }}.

+
matches{{ jsxref("array", "Tableau") }} +

Un ensemble de modèles de correspondance. Voir les {{ anch("Les_modèles_de_correspondance_d’URL", "modèles de correpondance d’URL") }} ci-dessous.

+ +

C’est la seule clé obligatoire.

+
run_at{{ jsxref("string", "Chaîne") }} +

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")}} :

+ +
    +
  • "document_start" : correspond à "loading". Le DOM est toujours en cours de chargement.
  • +
  • "document_end" : correspond à "interactive". Le DOM a fini de charger, mais des ressources telles que des scripts et des images peuvent toujours être en cours de chargement.
  • +
  • "document_idle" : correspond à "complete". Le document et toutes ses ressources ont terminé de charger.
  • +
+ +

La valeur par défaut est "document_idle".

+ +

Dans tous les cas, les fichiers dans {{ anch("js") }} sont injectés après les fichiers dans {{ anch("css") }}.

+
+ +

Les modèles de correspondance d’URL

+ +

La clé content_scripts 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 content_scripts que vous pouvez utiliser pour cette spécification :

+ + + +

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 :

+ +
"matches": ["*://*.example.org/*", "*://*.example.com/*"]
+ +

Les deux adresses http://example.org/ et http://example.com/ correspondront.

+ +

Étant donné que matches 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 :

+ +
    +
  1. Correspondre à la propriété matches ;
  2. +
  3. ET associer à la propriété include_globs, si présent ;
  4. +
  5. ET NE PAS correspondre à la propriété exclude_matches, si présent ;
  6. +
  7. ET NE PAS correspondre à la propriété exclude_globs, si présent.
  8. +
+ +

globs

+ +

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 :

+ + + +

Par exemple : "*na?i" correspond à "illuminati" et à "annunaki", mais pas à "sagnarelli".

+ +

Exemple

+ +
"content_scripts": [
+  {
+    "matches": ["*://*.mozilla.org/*"],
+    "js": ["borderify.js"]
+  }
+]
+ +

Cela injecte un seul script de contenu borderify.js dans toutes les pages sous mozilla.org ou l’un de ses sous-domaines, qu’ils soient fournis via HTTP ou HTTPS.

+ +
"content_scripts": [
+  {
+    "exclude_matches": ["*://developer.mozilla.org/*"],
+    "matches": ["*://*.mozilla.org/*"],
+    "js": ["jquery.js", "borderify.js"]
+  }
+]
+ +

Cela implique deux scripts de contenu dans toutes les pages sous mozilla.org ou l’un de ses sous-domaines, à l’exception de developer.mozilla.org, qu’il s’agisse de HTTP ou HTTPS.

+ +

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 borderify.js peut voir les variables globales ajoutées par jquery.js.

+ +

Compatibilité des navigateurs

+ + + +
{{Compat("webextensions.manifest.content_scripts")}}
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 +--- +
{{AddonSidebar}}
+ + + + + + + + + + + + + + + + +
TypeString
ObligatoireNon
Exemple +
+"content_security_policy": "default-src 'self'"
+
+ +

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 <script> et <object>, et interdit les pratiques potentiellement dangereuses telles que l’utilisation d’eval(). Voir la politique de sécurité de contenu par défaut pour en savoir plus sur ces implications.

+ +

Vous pouvez utiliser la clé "content_security_policy" 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’utilisation de la politique de sécurité de contenu pour une description générale de la syntaxe de CSP.

+ +

Par exemple, vous pouvez utiliser cette clé pour :

+ + + +

Il existe des restrictions sur la politique que vous pouvez spécifier ici :

+ + + +

Exemple

+ +

Examples valides

+ +

Autoriser les scripts distants de "https://example.com" : (voir note 1)

+ +
"content_security_policy": "script-src 'self' https://example.com; object-src 'self'"
+ +

Autoriser les scripts distants depuis n’importe quel sous-domaine de « jquery.com » :

+ +
"content_security_policy": "script-src 'self' https://*.jquery.com; object-src 'self'"
+ +

Autoriser eval() et ses amis :

+ +
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self';"
+ +

Autoriser le script en ligne : "<script>alert('Hello, world.');</script>" :

+ +
"content_security_policy": "script-src 'self' 'sha256-qznLcsROx4GACP2dm0UCKCzCG+HiZ1guq6ZZDob/Tng='; object-src 'self'"
+ +

Conserver le reste de la politique, mais exiger également que les images soient empaquetées avec l’extension :

+ +
"content_security_policy": "script-src 'self'; object-src 'self'; img-src 'self'"
+ +

Exiger que tous les types de contenu soient empaquetés avec l’extension :

+ +
"content_security_policy": "default-src 'self'"
+
+ +

Exemples non valides

+ +

Politique qui omet la directive "object-src" :

+ +
"content_security_policy": "script-src 'self' https://*.jquery.com;"
+ +

Politique qui omet le mot-clé "self" dans la directive "script-src" :

+ +
"content_security_policy": "script-src https://*.jquery.com; object-src 'self'"
+ +

Le schéma pour une source distante n’est pas https: :

+ +
"content_security_policy": "script-src 'self' http://code.jquery.com; object-src 'self'"
+ +

Le caractère générique est utilisé avec un domaine générique :

+ +
"content_security_policy": "script-src 'self' https://*.blogspot.com; object-src 'self'"
+ +

La source spécifie un schéma mais aucun hôte :

+ +
"content_security_policy": "script-src 'self' https:; object-src 'self'"
+ +

La directive inclut le mot-clé non pris en charge 'unsafe-inline' :

+ +
"content_security_policy": "script-src 'self' 'unsafe-inline'; object-src 'self'"
+ +

1. Note : les exemples valides montrent l’utilisation correcte des clés dans CSP. Toutefois, les extensions avec 'unsafe-eval', 'unsafe-inline', 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.

+ +

Compatibilité des navigateurs

+ + + +

{{Compat("webextensions.manifest.content_security_policy")}}

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 +--- +
{{AddonSidebar}}
+ + + + + + + + + + + + + + + + +
Typechaîne
Obligatoire +

Il doit être présent si le sous-répertoire _locales est présent, sinon il doit être absent.

+
Exemple +
+"default_locale": "fr"
+
+ +

Cette clé doit être présente si l'extension contient le répertoire _locales, et doit être absente sinon. Il identifie un sous-répertoire de _locales, et ce sous-répertoire sera utilisé pour trouver les chaînes par défaut pour votre extension.

+ +

Voir Internationalisation.

+ +

Exemple

+ +
"default_locale": "fr"
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.manifest.default_locale")}}

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 +--- +
{{AddonSidebar}}
+ + + + + + + + + + + + + + + + +
Typechaîne
ObligatoireNon
Exemple +
+"description": "Remplace des images par des portraits de chats."
+
+ +

Une brève description de l'extension, destinée à être affichée dans l'interface utilisateur du navigateur.

+ +

Ceci est une propriété localisable.

+ +

Exemple

+ +
"description": "Remplace des images par des portraits de chats."
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.manifest.description")}}

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 +--- +
{{AddonSidebar}}
+ + + + + + + + + + + + + + + + +
TypeObjet
ObligatoireNon
Exemple +
+"developer": {
+  "name": "Walt Whitman",
+  "url": "https://en.wikipedia.org/wiki/Walt_Whitman"
+}
+
+ +

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

+ +

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

+ +

Ceci est une propriété localisable.

+ +

Exemple

+ +
"developer": {
+  "name": "Walt Whitman",
+  "url": "https://en.wikipedia.org/wiki/Walt_Whitman"
+}
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.manifest.developer")}}

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 +--- +
{{AddonSidebar}}
+ + + + + + + + + + + + + + + + +
Typechaîne
ObligatoireNon
Exemple +
+"devtools_page": "devtools/my-page.html"
+
+ +

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

+ +

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

+ +

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

+ +

Exemple

+ +
"devtools_page": "devtools/my-page.html"
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.manifest.devtools_page")}}

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 +--- +
{{AddonSidebar}}
+ + + + + + + + + + + + + + + + +
TypeObject
ObligatoireNon
Exemple +
+"dictionaries": {
+  "en-US": "dictionaries/en-US.dic"
+}
+
+ +

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

+ +

Exemple

+ +
"dictionaries": {
+  "en-US": "dictionaries/en-US.dic"
+}
+ +

Compatibilité des navigateurs

+ + + +

{{Compat("webextensions.manifest.dictionaries")}}

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 +--- +

{{AddonSidebar}}{{SeeCompatTable}}

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

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

+ +

attribut "ids"

+ +

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

+ +

attribut "matches"

+ +

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

+ +
+

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

+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.manifest.externally_connectable")}}

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 +--- +
{{AddonSidebar}}
+ + + + + + + + + + + + + + + + +
Typechaîne
ObligatoireNon
Exemple +
+"homepage_url": "https://example.org/my-addon"
+
+ +

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

+ +

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

+ +

c'est une proriété localisable.

+ +

Exemple

+ +
"homepage_url": "https://github.com/mdn/webextensions-examples/tree/master/beastify"
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.manifest.homepage_url")}}

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 +--- +
{{AddonSidebar}}
+ + + + + + + + + + + + + + + + +
TypeObjet
ObligatoireNon
Exemple +
+"icons": {
+  "48": "icon.png",
+  "96": "icon@2x.png"
+}
+
+ +

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

+ +

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

+ +

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

+ +

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

+ +

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

+ +

Exemple

+ +

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

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

SVG

+ +

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

+ +
    +
  1. Vous devez spécifier un "viewBox" dans l'image. Par exemple : +
    <svg viewBox="0 0 48 48" width="48" height="48" ...
    +
  2. +
  3. Même si vous pouvez utiliser un fichier, vous devez toujours spécifier différentes tailles de l'icône dans votre manifest. Par exemple : +
    "icons": {
    +  "48": "icon.svg",
    +  "96": "icon.svg"
    +}
    +
  4. +
+ +
+

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

+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.manifest.icons")}}

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 +--- +
{{AddonSidebar}}
+ + + + + + + + + + + + + + + + +
Typechaîne
ObligatoireNon
Exemple +
+"incognito": "spanning"
+ +
+"incognito": "split"
+ +
+"incognito": "not_allowed"
+
+ +

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

+ +

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

+ + + +

Exemple

+ +
"incognito": "spanning"
+
+ +
"incognito": "split"
+
+ +
"incognito": "not_allowed"
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.manifest.incognito")}}

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 +--- +

{{AddonSidebar}}

+ +
+

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 Web App Manifest.

+
+ +

Le fichier manifest.json est le seul fichier que chaque extension utilisant les API WebExtension doit contenir.

+ +

En utilisant manifest.json, 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).

+ +

C'est un fichier au format JSON à une exception près : il peut contenir des commentaires de type "//".

+ +

List of manifest.json keys

+ +

Les clés manifest.json sont listées ci-dessous:

+ +
{{ListSubpages("/en-US/Add-ons/WebExtensions/manifest.json")}}
+ +

Notes about manifest.json keys

+ + + +

Accessing manifest.json keys at runtime

+ +

Vous pouvez accéder au manifest de votre extension depuis le JavaScript de l'extension en utilisant la fonction {{WebExtAPIRef("runtime.getManifest()")}} :

+ +
browser.runtime.getManifest().version;
+ +

Exemple

+ +

Le bloc ci-dessous contient la syntaxe de base de certaines clés communes du manifest

+ +
+

Note : 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.

+
+ +

Pour des exemples complets d'extensions, voir Exemple d'extensions.

+ +
{
+  "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"]
+}
+ +

Compatibilité du navigateur

+ +

Pour un aperçu complet de toutes les clés de manifeste et de leurs sous-clés, voir le tableau complet de compatibilité du navigateur manifest.json.

+ + + +

{{Compat("webextensions.manifest")}}

+ +

Voir aussi

+ +

{{WebExtAPIRef("permissions")}} JavaScript API

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 +--- +

{{AddonSidebar}}

+ + + + + + + + + + + + + + + + +
TypeNumérique
ObligatoireOui
Exemple +
+"manifest_version": 2
+
+ +

Cette clé spécifie la version de manifest.json utilisée par cette extension.

+ +

Actuellement, cela doit toujours être 2.

+ +

Exemple

+ +
"manifest_version": 2
+
+ +

Comptabilité des navigateurs

+ + + +

{{Compat("webextensions.manifest.manifest_version")}}

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 +--- +
{{AddonSidebar}}
+ + + + + + + + + + + + + + + + +
Typechaîne
ObligatoireOui
Exemple +
+"name": "Mon extension"
+
+ +

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

+ +

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

+ +

C'est une propriété localisable.

+ +

Exemple

+ +
"name": "Mon extension"
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.manifest.name")}}

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 +--- +

{{AddonSidebar}}

+ + + + + + + + + + + + + + + + +
TypeString
ObligatoireNon
Exemple +
+"offline_enabled": true
+
+ +

{{Non-standard_Header}}

+ +

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

+ +

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

+ +

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

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.manifest.offline_enabled")}}

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 +--- +
{{AddonSidebar}}
+ + + + + + + + + + + + + + + + +
TypeObjet
ObligatoireNon
Exemple +
+"omnibox": {
+  "keyword": "mdn"
+}
+
+ +

Utilisez la clé omnibox pour définir un mot-clé omnibox pour votre extension.

+ +

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 omnibox. L'extension pourra ensuite remplir la liste de suggestions de la liste déroulante de la barre d'adresse avec ses propres suggestions.

+ +

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.

+ +

 

+ +

Exemple

+ +
"omnibox": {
+  "keyword": "mdn"
+}
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.manifest.omnibox")}}

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 +--- +
{{AddonSidebar}}
+ + + + + + + + + + + + + + + + +
TypeTableau
ObligatoireNon
Exemple +
+
+"optional_permissions": [
+  "*://developer.mozilla.org/*",
+  "webRequest"
+]
+
+ +

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

+ +

La clé de permissions énumère les permissions dont votre extension a besoin  si elle doit être installée. En revanche , optional_permissions liste les permissions dont votre extension n'a pas besoin au moment de l'installation, mais qu'il peut être nécessaire de demander pour l'exécution à un moment donné après son installation. Pour demander une permission, utilisez l'API  {{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.

+ +

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

+ +

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

+ +

Permissions d'hôte

+ +

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

+ +

Permissions d'API

+ +

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

+ +
+ +
+ +

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

+ +

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

+ +

Exemple

+ +
 "optional_permissions": ["*://developer.mozilla.org/*"]
+ +

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

+ +
  "optional_permissions": ["tabs"]
+ +

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

+ +
  "optional_permissions": ["*://developer.mozilla.org/*", "tabs"]
+ +

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

+ +

Comptabilité du navigateur

+ + + +

{{Compat("webextensions.manifest.optional_permissions")}}

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 +--- +
{{AddonSidebar}}
+ + + + + + + + + + + + + + + + +
TypeString
MandatoryNo
Example +
+"options_page": "options/options.html"
+
+ +
{{Deprecated_Header}} +
Cette clé du manifest a été dépréciée. Utilisez options_uià la place.
+
+ +

Utilisez la clé d'options_page pour définir une page d'options pour votre extension.

+ +

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()")}}.

+ +

Contrairement aux pages d'options spécifiées à l'aide de la nouvelle clé options_ui, les pages d'options spécifiées à l'aide de la clé options_page obsolète ne reçoivent pas les styles de navigateur et s'ouvrent toujours dans un onglet normal du navigateur.

+ +

Exemple

+ +
"options_page": "options/options.html"
+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.manifest.options_page")}}

+ +

Voir aussi

+ + 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 +--- +
{{AddonSidebar}}
+ + + + + + + + + + + + + + + + +
TypeObjet
ObligatoireNon
Exemple +
+"options_ui": {
+  "page": "options/options.html"
+}
+
+ +

Utilisez la clé options_ui pour définir une page d'options pour votre extension.

+ +

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()")}}.

+ +

Vous spécifiez options_ui 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 APIs WebExtension pour lesquelles l'extension possède des permissions. Cependant, il fonctionne dans un "scope" différent de celui de vos scripts d'arrière plan.

+ +

Si vous souhaitez partager des données ou des fonctions, entre JavaScript sur votre page d'options et vos scripts d'arrière-plan, vous pouvez le faire directement en obtenant une référence à la fenêtre 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()")}}.

+ +

Ces derniers (ou les équivalents {{WebExtAPIRef("runtime.Port")}}  peuvent également être utilisés pour partager des options entre vos scripts d'arrière-plan et vos scripts de contenu.

+ +

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) scripts d'arrière plan (ou script(s) de contenus)  doit connaître le changement, votre (vos) script(s) d'arrière plan pourra choisir d'ajouter un auditeur à {{WebExtAPIRef("storage.onChanged")}}.

+ +

Syntaxe

+ +

La clé options_ui est un objet avec le contenu suivant :

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
browser_style
+ {{optional_inline}}
Booléen +

Facultatif, par défaut : true .

+ +

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é browser_style . Bien qu'il contienne par défaut true , il est recommandé d'inclure cette propriété.

+ +

Dans Firefox, la feuille de style peut être vue sur chrome://browser/content/extension.css, ou chrome://browser/content/extension-mac.css sur macOS. Lorsque vous fixez les dimensions, sachez que cette feuille de style fixe actuellement box-sizing: border-box (voir box-sizing).

+ +

Le guide de style Firefox décrit les classes que vous pouvez appliquer aux éléments de la fenêtre contextuelle afin d'obtenir des styles particuliers.

+
open_in_tab
+ {{optional_inline}}
Booléen +

par défaut : false.

+ +

Si c'est true , 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.

+
pageChaîne de caractères +

Obligatoire

+ +

Le chemin d'accès au fichier HTML contenant la spécification de votre page d'options.

+ +

Le chemin est relatif à l'emplacement du manifest.json lui-même.

+
+ +

Exemple

+ +
  "options_ui": {
+    "page": "options/options.html"
+  }
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.manifest.options_ui")}}

+ +

Voir aussi

+ + 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 +--- +
{{AddonSidebar}}
+ + + + + + + + + + + + + + + + +
TypeObjet
ObligatoireNon
Exemple +
+"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"
+}
+
+ +

Une action de page est une icône que votre extension ajoute dans la barre d'URL du navigateur.

+ +

Votre extension peut éventuellement fournir une fenêtre contextuelle associée dont le contenu est spécifié en utilisant HTML, CSS et JavaScript.

+ +

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 scripts d'arrière plan quand l'utilisateur clique sur l'icône.

+ +

Vous pouvez également créer et activer des actions de page par programme en utilisant l'API pageAction.

+ +

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.

+ +

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 pageAction.show(), en passant dans l'ID de l'onglet. Vous pouvez également modifier ce comportement par défaut en utilisant la propriété show_matches.

+ +

Syntaxe

+ +

La clé page_action est un objet qui peut avoir l'une des trois propriétés, toutes optionnelles:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
browser_styleBooléen +

Facultatif, par defaut : false.

+ +

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é browser_style. Bien que cette touche par défaut soit false, il est recommandé de l'inclure et de la mettre à true afin de rendre vos fenêtres contextuelles cohérentes avec l'apparence du reste de l'interface utilisateur du navigateur.

+ +

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.

+ +

Le guide de style Firefox décrit les classes que vous pouvez appliquer aux éléments de la fenêtre contextuelle afin d'obtenir des styles particuliers.

+ +

L'extension exemple latest-download utilise browser_style dans sa fenêtre contextuelle.

+
default_iconObjet ou Chaîne de caractères +

Utilisez cette option pour spécifier une icône pour l'action.

+ +

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:

+ +
+    "default_icon": {
+      "19": "geo-19.png",
+      "38": "geo-38.png"
+    }
+ +

Si vous faites cela, le navigateur choisira l'icône de la bonne taille selon la densité des pixels de l'écran.

+ +

Vous pouvez simplement fournir une chaîne ici :

+ +
+"default_icon": "geo.png"
+ +

Si vous faites cela, l'icône sera mise à l'échelle pour correspondre à la barre d'outils et peut sembler floue.

+
default_popupChaîne de caractères +

Le chemin d'accès à un fichier HTML contenant la spécification de la fenêtre contextuelle.

+ +

Le fichier HTML peut inclure des fichiers CSS et JavaScript utilisant des éléments <link> et <script>, tout comme une page Web normale. Cependant, n'utilisez pas <script> avec du code intégré, car vous obtiendrez une erreur de politique de violation de contenu. Au lieu de cela, <script> doit utiliser l'attribut src pour charger un fichier script séparé.

+ +

Contrairement à une page Web normale, JavaScript en cours d'exécution dans la fenêtre contextuelle peut accéder à toutes les APIs WebExtension (à condition, bien sûr, que l'extension ait les permissions appropriées).

+ +

Ceci est une propriété localisable.

+
default_titleChaîne de caractères +

Info-bulle pour l'icône, affichée lorsque l'utilisateur passe sa souris dessus.

+ +

Ceci est une propriété localisable.

+
hide_matchesTableau de Match Pattern sauf  <all_urls> +

Masquer l'action de page par défaut pour les pages dont les URLs correspondent des modèles de correspondance données.

+ +

Notez que les actions de page sont toujours cachées par défaut à moins que show_matches ne soit donné. Par conséquent, il est logique d'inclure cette propriété uniquement si show_matches est également donné, et dans ce casil remplacera les patterns dans show_matches. Par exemple, considérez une valeur comme :

+ +
+"page_action": {
+  "show_matches": ["https://*.mozilla.org/*"],
+  "hide_matches": ["https://developer.mozilla.org/*"]
+}
+ +

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".

+
show_matchesTableau de Match Pattern +

Affiche l'action de page par défaut pour les pages dont les URLs correspondent à l'un des modèles donnés.

+ +

Voir aussi hide_matches.

+
pinnedBoolean +

Facultatif, par défaut à true.

+ +

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.

+
+ +

Exemple

+ +
"page_action": {
+  "default_icon": {
+    "19": "button/geo-19.png",
+    "38": "button/geo-38.png"
+  }
+}
+ +

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 :

+ +
 browser.pageAction.onClicked.addListener(handleClick);
+ +
"page_action": {
+  "default_icon": {
+    "19": "button/geo-19.png",
+    "38": "button/geo-38.png"
+  },
+  "default_title": "Où suis-je ?",
+  "default_popup": "popup/geo.html"
+}
+ +

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.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.manifest.page_action")}}

+ +

Voir aussi

+ + 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 +--- +

{{AddonSidebar}}

+ + + + + + + + + + + + + + + + +
TypeTableau
ObligatoireNon
Exemple +
+"permissions": [
+  "*://developer.mozilla.org/*",
+  "webRequest"
+]
+
+ +

Utilisez la clé permissions 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.

+ +

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.

+ +

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 Demander les bonnes permissions.

+ +

La clé peut contenir trois types d'autorisations:

+ + + +

Les permissions d'hôte

+ +

Les permissions d'hôte sont spécifiées comme modèles de correspondance, 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 "*://developer.mozilla.org/*".

+ +

Les privilèges supplémentaires incluent :

+ + + +

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 :

+ +
moz-extension://60a20a9b-1ad4-af49-9b6c-c64c98c37920/
+ +

60a20a9b-1ad4-af49-9b6c-c64c98c37920 est l'ID interne de l'extension. L'extension peut obtenir cette URL par programmation en appelant extension.getURL() :

+ +
browser.extension.getURL("");
+// moz-extension://60a20a9b-1ad4-af49-9b6c-c64c98c37920/
+
+ +

Les permissions API

+ +

Les autorisations API sont spécifiées comme des mots-clés, et chaque mot clé nomme une API WebExtension que l'extension souhaite utiliser.

+ +

Les mots clés suivants sont actuellement disponibles:

+ + + +

Dans la plupart des cas, la permission accorde uniquement l'accès à l'API, avec les exceptions suivantes :

+ + + +

Permission activeTab

+ +

Cette autorisation est spécifiée comme " activeTab " (onglet actif). Si une extension possède la permission activeTab , lorsque l'utilisateur interagit avec l'extension, celle-ci reçoit des privilèges supplémentaires uniquement pour l'onglet actif.

+ +

"L'interaction utilisateur" comprend :

+ + + +

Les privilèges supplémentaires sont les suivants :

+ + + +

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 activeTab 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.

+ +

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.

+ +

Habituellement, l'onglet qui est accordé à activeTab est juste l'onglet actuellement actif, sauf dans un cas. L'API menus  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 activeTab 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)}}).

+ +

Accès au presse-papiers

+ +

Il existe deux permissions qui permettent aux extensions d'interagir avec le Presse-papiers :

+ + + +

Voir Intérargir avec le presse-papiers pour tous les détails de ce sujet.***

+ +

Stockage illimité

+ +

La permission unlimitedStorage :

+ + + +

Exemple

+ +
 "permissions": ["*://developer.mozilla.org/*"]
+ +

Demande d'accès privilégié aux pages sous developer.mozilla.org.

+ +
  "permissions": ["tabs"]
+ +

Demande d'accès aux éléments privilégiés de l'API tabs.

+ +
"permissions": ["*://developer.mozilla.org/*", "tabs"
+ +

Demande des deux permissions ci-dessus.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.manifest.permissions")}}

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 +--- +
{{AddonSidebar}}
+ + + + + + + + + + + + + + + + +
TypeTableau
ObligatoireNon
Exemple +
+"protocol_handlers": [
+  {
+    "protocol": "ircs",
+    "name": "IRC Mozilla Extension",
+    "uriTemplate": "https://irccloud.mozilla.com/#!/%s"
+  }
+]
+
+ +

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

+ +

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

+ +

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

+ +

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

+ +
+
protocol
+
Une chaîne définissant le protocole. Cela doit être soit: +
    +
  • L'une des suivantes : "bitcoin", "dat", "dweb", "geo", "gopher", "im", "ipfs", "ipns", "irc", "ircs", "magnet", "mailto", "mms", "news", "nntp", "sip", "sms", "smsto", "ssb", "ssh", "tel", "urn", "webcal", "wtai", "xmpp".
  • +
  • Une chaîne composée d'un nom personnalisé préfixé avec "web+" ou "ext+". Par exemple : "web+foo" ou  "ext+foo". Le nom personnalisé doit comporter uniquement des caractères ASCII minuscules. Il est recommandé que les extensions utilisent la forme "ext+".
  • +
+
+
name
+
Une chaîne représentant le nom du gestionnaire de protocole. Il sera affiché à l'utilisateur lorsqu'il sera interrogé s'il souhaite que ce gestionnaire ouvre le lien.
+
uriTemplate
+
Une chaîne représentant l'URL du gestionnaire. Cette chaîne doit inclure "%s" comme espace réservé : il sera remplacé par l'URL échappée du document à traiter. Cette URL peut être une vraie URL, ou il peut s'agir d'un numéro de téléphone, d'une adresse de courrier électronique, etc. C'est une propriété localisable.
+
+ +

Exemple

+ +
"protocol_handlers": [
+  {
+    "protocol": "magnet",
+    "name": "Magnet Extension",
+    "uriTemplate": "https://example.com/#!/%s"
+  }
+]
+ +

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

+ +
"protocol_handlers": [
+  {
+    "protocol": "magnet",
+    "name": "Magnet Extension",
+    "uriTemplate": "/example.xhtml#!/%s"
+  }
+]
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.manifest.protocol_handlers")}}

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 +--- +
{{AddonSidebar}}
+ + + + + + + + + + + + + + + + +
TypeChaîne
ObligatoireNon
Exemple +
+"short_name": "MonExtension"
+
+ +

Nom abrégé de l'extension. S'il est donné, il sera utilisé dans des contextes où le champ name 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é. 

+ +

C'est une propriété localisable.

+ +

Exemple

+ +
"short_name": "MonExtension"
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.manifest.short_name")}}

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 +--- +
{{AddonSidebar}}
+ + + + + + + + + + + + + + + + +
TypeObjet
ObligatoireNon
Exemple +
+"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
+}
+
+ +

Une barre latérale 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.

+ +

La clé sidebar_action 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")}}.

+ +

Syntaxe

+ +

La clé sidebar_action est un objet qui peut avoir l'une des propriétés listées ci-dessous. La seule propriété obligatoire est default_panel.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NomTypeDescription
browser_styleBooléen +

Facultatif, par défaut : true .

+ +

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é browser_style.

+ +

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 box-sizing: border-box (see box-sizing).

+ +

Le guide de style de Firefox décrit les classes que vous pouvez appliquer aux éléments de la barre latérale afin d'obtenir des styles particuliers.

+
default_iconObjet ou Chaîne de caractères +

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.

+ +

Les icônes sont spécifiées comme des URL relatives au fichier manifest.json lui-même.

+ +

Vous pouvez spécifier un seul fichier d'icône en fournissant une chaîne ici :

+ +
+"default_icon": "path/to/geo.svg"
+ +

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:

+ +
+    "default_icon": {
+      "16": "path/to/geo-16.png",
+      "32": "path/to/geo-32.png"
+    }
+ +

Voir Choix de la taille d'icones pour plus de conseils sur ce sujet.

+ +

Cette propriété est optionnelle : si elle est omise, la barre latérale n'obtient pas d'icône.

+
default_panelChaîne de caractères +

Le chemin d'accès à un fichier HTML qui spécifie le contenu de la barre latérale.

+ +

Le fichier HTML peut inclure des fichiers CSS et JavaScript à l'aide des éléments <link> et <script>, tout comme une page Web normale.

+ +

 Contrairement à une page Web normale, JavaScript en cours d'exécution dans le panneau peut accéder à toutes les APIs des WebExtension (à condition, bien sûr, que l'extension ait les permissions appropriées).

+ +

Cette propriété est obligatoire.

+ +

C'est une propriété localisable.

+
default_titleString +

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.

+ +

Cette propriété est facultative : si elle est omise, le titre de la barre latérale est le nom de l'extension.

+ +

C'est une propriété localisable.

+
open_at_installBooleanFacultatif, par défaut à true. 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.
+ +

Exemple

+ +
"sidebar_action": {
+  "default_icon": "sidebar.svg",
+  "default_title": "Ma barre latérale !",
+  "default_panel": "sidebar.html",
+  "browser_style": true
+}
+ +

Pour un exemple simple d'une extension qui utilise une barre latérale, regarder  annotate-page.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.manifest.sidebar_action")}}

+ +

Voir aussi

+ + 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 +--- +
{{AddonSidebar}}
+ + + + + + + + + + + + + + + + +
TypeObject
ObligatoireNon
Exemple +
+"storage": {
+  "managed_schema": "schema.json"
+}
+
+ +

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

+ +

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

+ +

Après avoir déclaré les politiques, elles sont lues à partir de l'API  {{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 storage.managed. Il appartient à l'application d'appliquer les politiques configurées par l'administrateur.

+ +
+

Firefox ne définit pas de schéma pour le stockage géré, soir {{WebExtAPIRef("storage.managed")}} pour plus de détails.

+
+ +

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

+ + + + + + + + +
managed_schema +

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

+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.manifest.storage", 10)}}

+ +
+

Remerciements

+ +

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

+
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 +--- +
{{AddonSidebar}}
+ + + + + + + + + + + + + + + + +
TypeObject
MandatoryNo
Example +
+"theme": {
+  "images": {
+    "theme_frame": "images/sun.jpg"
+  },
+  "colors": {
+    "frame": "#CF723F",
+    "tab_background_text": "#000"
+  }
+}
+
+ +

Utilisez la clé du thème pour définir un thème statique à appliquer à Firefox.

+ +
+

Note: Si vous voulez inclure un thème avec une extension, veuillez voir l'API  {{WebExtAPIRef("theme")}}.

+
+ +
+

Note: Depuis mai 2019, les thèmes doivent être signés pour être installés ({{bug(1545109)}}). Voir Signature et distribution votre extension pour plus de détails.

+
+ +
+

Prise en charge des thèmes dans Firefox pour Android: Une nouvelle version de Firefox pour Android, basée sur GeckoView, est en cours de développement. Une pré-version ne support pas les thèmes.

+
+ +

Formats des images

+ +

Les formats d'image suivants sont pris en charge dans toutes les propriétés de l'image du thème :

+ + + +

Syntaxe

+ +

La clé du thème est un objet qui prend les propriétés suivantes:

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
NomTypeDescription
imagesObjet +

Facultatif à partir de Firefox 60. Obligatoire avant Firefox 60.

+ +

Un objet JSON dont les propriétés représentent les images à afficher dans différentes parties du navigateur. Voir les images pour plus de détails sur les propriétés que cet objet peut contenir.

+
colorsObjet +

Obligatoire.

+ +

Un objet JSON dont les propriétés représentent les couleurs de différentes parties du navigateur. Voir couleurs pour plus de détails sur les propriétés que cet objet peut contenir.

+
propertiesObjet +

Optionnel

+ +

This object has two properties that affect how the "additional_backgrounds" images are displayed. See properties for details on the properties that this object can contain.

+ +
    +
  • "additional_backgrounds_alignment": un tableau énumérant les valeurs définissant l'alignement des éléments correspondants du tableau  "additional_backgrounds":.
    + Les options d'alignement comprennent  : "bottom" (bas), "center" (centre), "left" (gauche), "right" (droite), "top" (haut), "center bottom"(centre bas), "center center" (centre milieu), "center top" (centre haut), "left bottom" (gauche bas), "left center" (gauche milieu), "left top" (gauche haut), "right bottom" (droite bas), "right center" (droite milieu), et "right top" (droite haut). Si elle n'est pas spécifiée, par défaut, "right top".
    + Facultatif
  • +
  • "additional_backgrounds_tiling": un tableau énumérant les valeurs de répétition des éléments correspondants du tableau "additional_backgrounds":, avec le support de "no-repeat" (pas de répétition), "repeat" (répétition), "repeat-x" et "repeat-y". Si elle n'est pas spécifiée, par défaut, "no-repeat".
    + Facultatif
  • +
+
+ +

images

+ +

Toutes les URL sont relatives au fichier manifest.json et ne peuvent pas référencer une URL externe.

+ +

Les images doivent avoir une hauteur de 200 pixels pour garantir qu'elles remplissent toujours l'espace d'en-tête verticalement.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
+

headerURL {{Deprecated_Inline}}

+
String +
+

headerURL 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 theme_frame à la place.

+
+ +

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.

+ +

En option à partir de Firefox 60. Un de theme_frame ou headerURL 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 headerURL n'est spécifié (voir {{bug(1404688)}}).

+ +

Dans Firefox pour Android, headerURL ou theme_frame doit être spécifié.

+ +
    +
+
theme_frameString +

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.

+ +
+

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.

+
+ +

Optionnel à partir de Firefox 60. Un de theme_frame ou headerURL devait être spécifié avant Firefox 60.

+ +

Dans Firefox pour Android, headerURL ou theme_frame doit être spécifié.

+
additional_backgroundsArray de String +
+

La propriété additional_backgrounds est experimentale.  Il est actuellement accepté dans les versions finale de Firefox, mais son comportement est sujet à changement.

+
+ +

Un tableau d'URLs pour les images de fond supplémentaires à ajouter à la zone d'en-tête et à afficher derrière l'image "theme_frame" :  Ces images superposent la première image du tableau en haut, la dernière image du tableau en bas.

+ +

Optionel.

+ +

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 "properties".

+
+ +

Couleurs

+ +

Ces propriétés définissent les couleurs utilisées pour les différentes parties du navigateur. Ils sont tous facultatifs (mais notez que "accentcolor" et "textcolor"  é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:

+ + + + + + + +
+

Overview of the color properties and how they apply to Firefox UI components

+
+ +
+

Lorsqu'un composant est affecté par plusieurs propriétés de couleur, les propriétés sont listées par ordre de priorité.

+
+ +

Toutes ces propriétés peuvent être spécifiées sous la forme d'une chaîne contenant un code de couleur CSS, ou un tableau RVB tel que "tab_background_text": [ 107 , 99 , 23 ], ou en héxadécimal, tel que "tab_background_text": #6b6317.

+ +
+

Dans Chrome, les couleurs ne peuvent être spécifiées que sous forme de tableau RVB.

+ +

Dans Firefox pour Android, les couleurs peuvent être spécifiées en utilisant:

+ + + +

Les couleurs pour les thèmes Firefox pour Android ne peuvent pas être spécifiées à l'aide des noms de couleurs.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescription
accentcolor {{Deprecated_Inline}} +
+

accentcolor 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  frame à la place.

+
+ +

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 "headerURL" et "additional_backgrounds".

+ +
Voir exemple + +
+"theme": {
+  "colors": {
+     "accentcolor": "red",
+     "tab_background_text": "white"
+  }
+}
+
+ +

+
bookmark_text +

La couleur du texte et des icônes dans le signet et les barres de recherche. De plus, si tab_text n'est pas défini, il définit la couleur du texte de l'onglet actif et si les icons 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 toolbar_text.

+ +
+

Assurez-vous que toute couleur utilisée contraste bien avec celles utilisées dans frame et frame_inactive ou toolbar si vous utilisez cette propriété.

+ +

Là où les icons ne sont pas définis, assurez-vous également d'un bon contraste avec button_background_active et button_background_hover.

+
+ +
Voir exemple + +
+"theme": {
+  "colors": {
+    "frame": "black",
+    "tab_background_text": "white",
+    "toolbar": "black",
+    "bookmark_text": "red"
+  }
+}
+
+ +

Example use of the bookmark_text color property

+
button_background_active +

La couleur de l'arrière-plan des boutons de la barre d'outils.

+ +
Voir exemple + +
+"theme": {
+  "colors": {
+     "frame": "black",
+     "tab_background_text": "white",
+     "button_background_active": "red"
+  }
+}
+
+ +

+
button_background_hover +

La couleur de l'arrière-plan des boutons de la barre d'outils au survol.

+ +
Voir exemple + +
+"theme": {
+  "colors": {
+     "frame": "black",
+     "tab_background_text": "white",
+     "button_background_hover": "red"
+  }
+}
+
+ +

+
icons +

La couleur des icônes de la barre d'outils, à l'exclusion de celles de la barre d'outils de recherche.

+ +
+

Assurez-vous que la couleur utilisée contraste bien avec celles utilisées dans frameframe_inactive, button_background_active, et  button_background_hover.

+
+ +
Voir exemple + +
+"theme": {
+  "colors": {
+     "frame": "black",
+     "tab_background_text": "white",
+     "icons": "red"
+  }
+}
+
+ +

+
icons_attention +

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é.

+ +
+

Assurez-vous que la couleur utilisée contraste bien avec celles utilisées dans frameframe_inactive, button_background_active, et  button_background_hover.

+
+ +
Voir exemple + +
+"theme": {
+  "colors": {
+     "frame": "black",
+     "tab_background_text": "white",
+     "icons_attention": "red"
+  }
+}
+
+ +

+
frame +

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 "theme_frame" et "additional_backgrounds".

+ +
Voir exemple + +
+"theme": {
+  "colors": {
+     "frame": "red",
+     "tab_background_text": "white"
+  }
+}
+
+ +

+
frame_inactive +

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 "theme_frame" et "additional_backgrounds".

+ +
Voir exemple + +
+"theme": {
+  "colors": {
+     "frame": "red",
+     "frame_inactive": "gray",
+     "tab_text": "white"
+  }
+}
+
+ +

Example use of the frame_inactive color property

+
ntp_background +

La nouvelle couleur d'arrière-plan de la page à onglet.

+ +
Voir exemple + +
+"theme": {
+  "colors": {
+     "ntp_background": "red",
+     "ntp_text": "white"
+  }
+}
+
+ +

+
ntp_text +

La couleur du texte de la page nouvel onglet.

+ +
+

Assurez-vous que la couleur utilisée contraste bien avec celle utilisée dans  ntp_background.

+
+ +
Voir exemple + +
+"theme": {
+  "colors": {
+     "ntp_background": "red",
+     "ntp_text": "white"
+  }
+}
+
+ +

+
popup +

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)

+ +
Voir exemple + +
+"theme": {
+  "colors": {
+     "frame": "black",
+     "tab_background_text": "white",
+     "popup": "red"
+  }
+}
+
+ +

+
popup_border +

La couleur de la bordure des popups.

+ +
Voir exemple + +
+"theme": {
+  "colors": {
+     "frame": "black",
+     "tab_background_text": "white",
+     "popup": "black",
+     "popup_text": "white",
+     "popup_border": "red"
+  }
+}
+
+ +

+
popup_highlight +

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).

+ +
+

Il est recommandé de définir popup_highlight_text pour remplacer la couleur de texte par défaut du navigateur sur différentes plateformes.

+
+ +
Voir exemple + +
+"theme": {
+  "colors": {
+     "frame": "black",
+     "tab_background_text": "white",
+     "popup_highlight": "red",
+     "popup_highlight_text": "white",
+  }
+}
+
+ +

+
popup_highlight_text +

La couleur du texte des éléments mis en surbrillance dans les fenêtres contextuelles.

+ +
+

S'assurer que la couleur utilisée contraste bien avec celle utilisée dans popup_highlight.

+
+ +
Voir exemple + +
+"theme": {
+  "colors": {
+     "frame": "black",
+     "tab_background_text": "white",
+     "popup_highlight": "black",
+     "popup_highlight_text": "red"
+  }
+}
+
+ +

+
popup_text +

La couleur du texte des popups.

+ +
+

S'assurer que la couleur utilisée contraste bien avec celle utilisée dans popup.

+
+ +
Voir exemple + +
+"theme": {
+  "colors": {
+     "frame": "black",
+     "tab_background_text": "white",
+     "popup": "black",
+     "popup_text": "red"
+  }
+}
+
+ +

+
sidebar +

La couleur de fond des barres latérales intégrées.

+ +
Voir exemple + +
+"theme": {
+  "colors": {
+     "sidebar": "red",
+     "sidebar_highlight": "white",
+     "sidebar_highlight_text": "green",
+     "sidebar_text": "white"
+  }
+}
+
+ +

+
sidebar_border +

La couleur de la bordure et du séparateur de la barre latérale du navigateur.

+ +
Voir exemple + +
+"theme": {
+  "colors": {
+     "sidebar_border": "red"
+  }
+}
+
+ +

+
sidebar_highlight +

La couleur d'arrière-plan des lignes en surbrillance dans les barres latérales intégrées.

+ +
Voir exemple + +
+"theme": {
+  "colors": {
+     "sidebar_highlight": "red",
+     "sidebar_highlight_text": "white"
+  }
+}
+
+ +

+
sidebar_highlight_text +

La couleur du texte des lignes en surbrillance dans les barres latérales intégrées.

+ +
+

S'assurer que la couleur utilisée contraste bien avec celle utilisée dans sidebar_highlight.

+
+ +
Voir exemple + +
+"theme": {
+  "colors": {
+    "sidebar_highlight": "pink",
+    "sidebar_highlight_text": "red",
+  }
+}
+
+ +

+
sidebar_text +

La couleur du texte des barres latérales intégrées.

+ +
+

S'assurer que la couleur utilisée contraste bien avec celle utilisée dans sidebar.

+
+ +
Voir exemple + +
+"theme": {
+  "colors": {
+     "sidebar": "red",
+     "sidebar_highlight": "white",
+     "sidebar_highlight_text": "green",
+     "sidebar_text": "white"
+  }
+}
+
+ +

+
tab_background_separator +

La couleur du séparateur vertical des onglets d'arrière-plan.

+ +
Voir exemple + +
+"theme": {
+  "colors": {
+     "frame": "black",
+     "tab_background_text": "white",
+     "tab_background_separator": "red"
+  }
+}
+
+ +

A closeup of browser tabs to highlight the separator.

+
tab_background_text +

La couleur du texte affiché dans les onglets des pages inactives. Si tab_text ou bookmark_text n'est pas spécifié, s'applique au texte de l'onglet actif.

+ +
+

Assurez-vous que la couleur utilisée contraste bien avec celles utilisées dans  tab_selected ou frame et  frame_inactive.

+
+ +
Voir exemple + +
+"theme": {
+  "colors": {
+    "frame": "black",
+    "toolbar": "white",
+    "tab_background_text": "red"
+  }
+}
+
+ +

+
tab_line +

La couleur de la ligne de l'onglet sélectionnée.

+ +
Voir exemple + +
+"theme": {
+  "colors": {
+     "frame": "black",
+     "tab_bckground_text": "white",
+     "tab_line": "red"
+  }
+}
+
+ +

+
tab_loading +

La couleur de l'indicateur de chargement de l'onglet et de l'effet de vague.

+ +
Voir exemple + +
+"theme": {
+  "colors": {
+     "frame": "black",
+     "tab_background_text": "white",
+     "tab_loading": "red"
+  }
+}
+
+ +

+
tab_selected +

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 frame et frame_inactive.

+ +
Voir exemple + +
+"theme": {
+  "images": {
+  "theme_frame": "weta.png"
+},
+  "colors": {
+     "frame": "black",
+     "tab_background_text": "white",
+     "tab_selected": "red"
+  }
+}
+
+ +

+
tab_text +

Depuis Firefox 59, il représente la couleur du texte de l'onglet sélectionné. Si tab_line n'est pas spécifié, il définit également la couleur de la ligne de tabulation sélectionnée.

+ +
+

Assurez-vous que la couleur utilisée contraste bien avec celles utilisées dans  tab_selected ou frame et  frame_inactive.

+
+ +

De Firefox 55 à 58, il est incorrectement implémenté comme alias pour "textcolor"

+ +
Voir exemple + +
+"theme": {
+  "images": {
+  "theme_frame": "weta.png"
+},
+  "colors": {
+     "frame": "black",
+     "tab_background_text": "white",
+     "tab_selected": "white",
+     "tab_text": "red"
+  }
+}
+
+ +

+
textcolor {{Deprecated_Inline}} +
+

textcolor 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 tab_text à la place.

+
+ +

La couleur du texte affiché dans la zone d'en-tête.

+ +
Voir exemple + +
+"theme": {
+  "colors": {
+    "frame": "black",
+    "toolbar": "white",
+    "textcolor": "red"
+  }
+}
+
+ +

+
toolbar +

La couleur de fond de la barre de navigation, de la barre de signets et de l'onglet sélectionné.

+ +

Ceci définit également la couleur de fond de la barre "Rechercher".

+ +
Voir exemple + +
+"theme": {
+  "colors": {
+    "frame": "black",
+    "toolbar": "red",
+    "tab_background_text": "white"
+  }
+}
+
+ +

+
toolbar_bottom_separator +

La couleur de la ligne séparant le bas de la barre d'outils de la région en dessous.

+ +
Voir exemple + +
+"theme": {
+  "colors": {
+    "frame": "black",
+    "tab_background_text": "white",
+    "toolbar_bottom_separator": "red"
+  }
+}
+
+ +

+
toolbar_field +

La couleur d'arrière-plan des champs de la barre d'outils, comme la barre URL.

+ +

Ceci définit également la couleur de fond du champ Rechercher dans la page.

+ +
Voir exemple + +
+"theme": {
+  "colors": {
+    "frame": "black",
+    "tab_background_text": "white",
+    "toolbar_field": "red"
+  }
+}
+
+ +

+
toolbar_field_border +

La couleur de la bordure des champs de la barre d'outils.

+ +

Ceci définit également la couleur de fond du champ Rechercher dans la page.

+ +
Voir exemple + +
+"theme": {
+  "colors": {
+    "frame": "black",
+    "toolbar": "black",
+    "tab_background_text": "white",
+    "toolbar_field": "black",
+    "toolbar_field_text": "white",
+    "toolbar_field_border": "red"
+  }
+}
+
+ +

+
toolbar_field_border_focus +

La couleur de bordure pour les champs de la barre d'outils qui ont le focus.

+ +
Voir exemple + +
+"theme": {
+  "colors": {
+    "frame": "black",
+    "toolbar": "black",
+    "tab_background_text": "white",
+    "toolbar_field": "black",
+    "toolbar_field_text": "white",
+    "toolbar_field_border_focus": "red"
+  }
+}
+
+ +

+
toolbar_field_focus +

La couleur de fond pour les champs de la barre d'outils qui ont le focus, tels que la barre d'URL.

+ +
Voir exemple + +
+"theme": {
+  "colors": {
+    "frame": "black",
+    "toolbar": "black",
+    "tab_background_text": "white",
+    "toolbar_field": "black",
+    "toolbar_field_text": "white",
+    "toolbar_field_focus": "red"
+  }
+}
+
+ +

+
toolbar_field_highlightLa 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). +
See example +
+"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)"
+  }
+}
+
+ +

Example showing customized text and highlight colors in the URL bar

+ +

Ici, le champ toolbar_field_highlight 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  toolbar_field_highlight_text.

+
toolbar_field_highlight_text +

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).

+ +
+

S'assurer que la couleur utilisée contraste bien avec celles utilisées dans  toolbar_field_highlight.

+
+ +
See example + +
+"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)"
+  }
+}
+
+ +

Example showing customized text and highlight colors in the URL bar

+ +

Ici, le champ toolbar_field_highlight_text permet de régler la couleur du texte sur un vert foncé moyen foncé, tandis que la couleur de surbrillance est un vert clair.

+
toolbar_field_separator +

La couleur des séparateurs à l'intérieur de la barre d'URL. Dans Firefox 58, cela a été implémenté en tant que toolbar_vertical_separator.

+ +
Voir exemple + +
+"theme": {
+  "colors": {
+    "frame": "black",
+    "toolbar": "black",
+    "tab_background_text": "white",
+    "toolbar_field_separator": "red"
+  }
+}
+
+ +

+ +

Dans cette capture d'écran, "toolbar_vertical_separator" est la ligne verticale blanche dans la barre URL qui sépare l'icône du mode lecture des autres icônes.

+
toolbar_field_text +

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.

+ +
+

Assurez-vous que la couleur utilisée contraste bien avec celles utilisées dans  toolbar_field.

+
+ +
Voir exemple + +
+"theme": {
+  "colors": {
+    "frame": "black",
+    "toolbar": "black",
+    "tab_background_text": "white",
+    "toolbar_field": "black",
+    "toolbar_field_text": "red"
+  }
+}
+
+ +

+
toolbar_field_text_focus +

La couleur du texte dans les champs de la barre d'outils qui ont le focus, tels que la barre d'URL.

+ +
+

Assurez-vous que la couleur utilisée contraste bien avec celles utilisées dans  toolbar_field_focus.

+
+ +
Voir exemple + +
+"theme": {
+  "colors": {
+    "frame": "black",
+    "toolbar": "black",
+    "tab_background_text": "white",
+    "toolbar_field": "black",
+    "toolbar_field_text": "white",
+    "toolbar_field_text_focus": "red"
+  }
+}
+
+ +

+
toolbar_text +

La couleur du texte de la barre d'outils. Ceci définit également la couleur du texte dans la barre "Rechercher".

+ +
+

Pour la compatibilité avec Chrome, utilisez l'alias bookmark_text.

+
+ +
Voir exemple + +
+"theme": {
+  "colors": {
+    "frame": "black",
+    "tab_background_text": "white",
+    "toolbar": "black",
+    "toolbar_text": "red"
+  }
+}
+
+ +

+
toolbar_top_separator +

La couleur de la ligne séparant le bas de la barre d'outils de la région en dessous.

+ +
Voir exemple + +
+"theme": {
+  "colors": {
+    "frame": "black",
+    "tab_background_text": "white",
+    "toolbar": "black",
+    "toolbar_top_separator": "red"
+  }
+}
+
+ +

+
toolbar_vertical_separator +

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.

+ +
Voir exemple + +
+"theme": {
+  "colors": {
+    "frame": "black",
+    "tab_background_text": "white",
+    "toolbar": "black",
+    "toolbar_vertical_separator": "red"
+  }
+}
+
+ +

+
+ +

Aliases

+ +

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.

+ +
+

A partir de Firefox 70, les propriétés suivantes sont supprimées : accentcolor et textcolor. Utilisez à la place frame et tab_background_text. L'utilisation de ces valeurs dans des thèmes chargés dans Firefox 65 ou une version ultérieure augmentera les avertissements.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
NomAlias pour
bookmark_texttoolbar_text {{Deprecated_Inline}}
frameaccentcolor {{Deprecated_Inline}}
frame_inactiveaccentcolor {{Deprecated_Inline}}
tab_background_texttextcolor {{Deprecated_Inline}}
+ +

properties

+ + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
additional_backgrounds_alignment +

Array of String

+
+

Optionel.

+ +

Un tableau de valeurs d'énumération définissant l'alignement de l'élément "additional_backgrounds": élément de tableau.
+ Les options d'alignement comprennent:

+ +
    +
  • "bottom"
  • +
  • "center"
  • +
  • "left"
  • +
  • "right"
  • +
  • "top"
  • +
  • "center bottom"
  • +
  • "center center"
  • +
  • "center top"
  • +
  • "left bottom"
  • +
  • "left center"
  • +
  • "left top"
  • +
  • "right bottom"
  • +
  • "right center"
  • +
  • "right top".
  • +
+ +

Si non spécifié, par default "right top".

+
additional_backgrounds_tiling +

Array of String

+
+

Optional.

+ +

Un tableau de valeurs d'énumérations définissant, comme l'élément de tableau  "additional_backgrounds": correspondant de répétition. Les options comprennent :

+ +
    +
  • "no-repeat"
  • +
  • "repeat"
  • +
  • "repeat-x"
  • +
  • "repeat-y"
  • +
+ +

Si non spécifié, par default "no-repeat".

+
+ +

Exemples

+ +

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:

+ +
 "theme": {
+   "images": {
+     "theme_frame": "images/sun.jpg"
+   },
+   "colors": {
+     "frame": "#CF723F",
+     "tab_background_text": "#000"
+   }
+ }
+ +

Plusieurs images peuvent être utilisées pour remplir l'en-tête, en utilisant une image d'en-tête vierge/transparente pour donner le contrôle de l'emplacement à chaque image visible:

+ +
 "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"
+   }
+ }
+ +

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:

+ +
 "theme": {
+   "images": {
+     "additional_backgrounds": [ "images/logo.png"]
+   },
+   "properties": {
+     "additional_backgrounds_alignment": [ "top" ],
+     "additional_backgrounds_tiling": [ "repeat"  ]
+   },
+   "colors": {
+     "frame": "green",
+     "tab_background_text": "#000"
+   }
+ }
+ +

L'exemple suivant utilise la plupart des différentes valeurs de "theme.colors":

+ +
  "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"
+    }
+  }
+ +

Il vous donnera un navigateur qui ressemble à ceci :

+ +

+ +

Dans cette capture d'écran, "toolbar_vertical_separator" est la ligne verticale blanche dans la barre d'URL divisant l'icône du mode Lecteur des autres icônes.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.manifest.theme")}}

+ +

Couleurs

+ +

{{Compat("webextensions.manifest.theme.colors", 10)}}

+ +

Images

+ +

{{Compat("webextensions.manifest.theme.images", 10)}}

+ +

Propriétés

+ +

{{Compat("webextensions.manifest.theme.properties", 10)}}

+ +

Compatibilité de Chrome

+ +

Dans Chrome:

+ + + +
"theme": {
+  "colors": {
+     "frame": [255, 0, 0],
+     "tab_background_text": [0, 255, 0],
+     "bookmark_text": [0, 0, 255]
+  }
+}
+ +

A partir de Firefox 59, la forme tableau et la forme couleur CSS sont acceptées pour toutes les propriétés. Avant cela, colors/frame et colors/tab_background_text nécessitaient la forme tableau, alors que d'autres propriétés nécessitaient la forme couleur CSS.

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 +--- +
{{AddonSidebar}}
+ + + + + + + + + + + + + + + + +
TypeObject
ObligatoireNon
Exemple +
+"theme_experiment": {
+  "stylesheet": "style.css",
+  "colors": {
+    "popup_affordance": "--arrowpanel-dimmed"
+  },
+  "images": {
+    "theme_toolbar": "--toolbar-bgimage"
+  },
+  "properties": {
+    "toolbar_image_alignment":
+    "--toolbar-bgalignment"
+  }
+}
+
+ +
+

Cette clé permet de définir les propriétés de la clé expérimentale de theme 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:

+
+ +
+ +
+ +
+

Pour découvrir les sélecteurs CSS des éléments de l'interface utilisateur Firefox ou des variables CSS internes de Firefox, utilise la boite à outils du navigateur.

+
+ +
+
+

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 extensions.legacy.enabled.

+
+
+ +
+
+

Cette fonctionnalité est expérimentale et peut être sujette à modification.

+
+
+ +

Syntaxe

+ +

La clé theme_experiment est un objet qui prend les propriétés suivantes :

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NomTypeDescription
stylesheetString +

Facultatif

+ +

Nom d'une feuille de style fournissant le mappage des sélecteurs CSS des éléments de l'interface Firefox aux variables CSS.

+
imagesObject +

Facultatif

+ +

Mappings des variables CSS (telles que définies dans Firefox ou par la feuille de style définie dans la stylesheet) aux noms de propriétés images à utiliser dans la clé theme.

+
colorsObject +

Facultatif

+ +

Mappings des variables CSS (telles que définies dans Firefox ou par la feuille de style définie dans la stylesheet) aux noms de propriétés colors à utiliser dans la clé theme.

+
propertiesObject +

Facultatif

+ +

Mappings des variables CSS (telles que définies dans Firefox ou par la feuille de style définie dans la stylesheet) aux noms de propriétés properties à utiliser dans la clé theme.

+
+ +

Exemples

+ +
+

Ces exemples utilisent une feuille de style appelée style.css pour permettre de définir une couleur pour le bouton de recharge du navigateur dans la clé theme.

+
+ +
+

La feuille de style définit :

+
+ +
+
#reload-button {
+  fill: var(--reload-button-color);
+}
+
+
+ +
+

#reload-button est le sélecteur CSS interne de Firefox pour le bouton reload et  --reload-button-color est un nom arbitraire..

+
+ +
+

Dans le fichier manifest.json, --reload-button-color est alors mappé au nom à utiliser dans la propriété theme colors :

+
+ +
+
"theme_experiment": {
+  "stylesheet": "style.css",
+  "colors": {
+    "reload_button": "--reload-button-color"
+  }
+}
+
+
+ +
+

L'argument reload_button est alors utilisé de la même manière que n'importe quelle autre propriété de theme .

+
+ +
+
"theme": {
+  "colors": {
+    "reload_button": "orange"
+  }
+}
+
+
+ +
+

Ceci a pour effet de rendre l'icône de recharge orange.

+
+ +
Outcome of a theme experiment, showing the reload button colored orange.
+ +
+ +
+

Cette propriété peut également être utilisée dans browser.theme.update(). images et  properties travaillent de la même manière que colors.

+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.manifest.theme_experiment")}}

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 +--- +

{{AddonSidebar}}

+ + + + + + + + + + + + + + + + +
TypeArray
ObligatoireNon
Exemple +
+  "user_scripts": {
+    "api_script": "apiscript.js",
+  }
+
+
+ +

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

+ +

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

+ +

Une fois chargé, le script sera appelé après l'exécution du gestionnaire d'événement affecté à la propriété {{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")}}.

+ +

Voir aussi

+ + 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 +--- +

{{AddonSidebar}}

+ + + + + + + + + + + + + + + + +
TypeChaîne
ObligatoireOui
Exemple +
+"version": "0.1"
+
+ +

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 Format de la version.

+ +

Vous pouvez inspecter le code de linter des modules complémentaires pour voir comment les versions d'extension pour Firefox sont validées.

+ +

Notez que la syntaxe définie pour la version de Chrome est plus restrictive que celle utilisée par Firefox :

+ + + +

Pour obtenir votre version d'extension dans votre code JavaScript, utilisez :

+ +
console.log(browser.runtime.getManifest().version);
+ +

Exemple

+ +

Si le manifest contient :

+ +
"version": "0.1"
+ +

Pour obtenir votre version d'extension dans votre code JavaScript, utilisez :

+ +
console.log(browser.runtime.getManifest().version);
+// expected output: "0.1"
+
+ +

Compatibilité des navigateurs

+ + + +

{{Compat("webextensions.manifest.version")}}

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 +--- +

{{AddonSidebar}}

+ + + + + + + + + + + + + + + + +
TypeString
ObligatoireNon
Exemple +
+"version_name": "0.1 beta"
+
+ +

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

+ +

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

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.manifest.version_name")}}

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 +--- +

{{AddonSidebar}}

+ + + + + + + + + + + + + + + + +
TypeTableau
ObligatoireNon
Exemple +
+"web_accessible_resources": [
+  "images/my-image.png"
+]
+
+ +

Description

+ +

Parfois, vous souhaitez associer certaines ressources - par exemple, images, HTML, CSS ou JavaScript - avec votre extension pour les mettre à la disposition des pages Web.

+ +

Par exemple, l'extensions d'exemple "beastify" 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  <img> des éléments dont l'attribut src 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.

+ +

Avec la clé web_accessible_resources 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.

+ +

Notez que les scripts de contenu n'ont pas besoin d'être listés comme ressources accessibles sur le Web.

+ +

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é web_accessible_resources.

+ +

Utiliser web_accessible_resources

+ +

Par exemple, supposons que votre extension inclut un fichier image sur images images/my-image.png, comme ceci :

+ +
my-extension-files/
+    manifest.json
+    my-background-script.js
+    images/
+        my-image.png
+ +

Pour permettre à une page Web d'utiliser un élément <img> dont l'attribut src pointe sur cette image, vous pouvez spécifier "web_accessible_resources" comme suit :

+ +
"web_accessible_resources": ["images/my-image.png"]
+ +

Le fichier sera alors disponible en utilisant une URL comme :

+ +
moz-extension://<extension-UUID>/images/my-image.png"
+ +

<extension-UUID> n'est pas 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.

+ +
+

Dans Chrome, l'ID d'une extension est fixe. Quand une ressource est listée dans  web_accessible_resources, elle est accessible comme chrome-extension://<your-extension-id>/<path/to/resource>.  

+
+ +

L'approche recommandée pour obtenir l'URL de la ressource est d'utiliser runtime.getURL en passant le chemin relatif à manifest.json, par exemple :

+ +
browser.runtime.getURL("images/my-image.png");
+// something like:
+// moz-extension://944cfddf-7a95-3c47-bd9a-663b3ce8d699/images/my-image.png
+ +

Cette approche vous donne l'URL correcte quel que soit le navigateur sur lequel votre extension est lancée.

+ +

Caractères génériques

+ +

web_accessible_resources peuvent contenir des caractères génériques. Par exemple, l'entrée suivante fonctionnera également pour inclure la ressource à  "images/my-image.png":

+ +
  "web_accessible_resources": ["images/*.png"]
+ +

Sécurité

+ +

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.

+ +

Exemple

+ +
"web_accessible_resources": ["images/my-image.png"]
+ +

Crée un fichier dans "images/my-image.png" accessible sur le web.

+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.manifest.web_accessible_resources")}}

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 +--- +
{{AddonSidebar}}
+ +

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.

+ +

Il existe trois types différents de manifest natif :

+ + + + + + + + + + + + + + + + +
Les manifests de messagerie natifActivez une fonctionnalité appelée native messaging, dans laquelle une extension peut communiquer avec une application native installée sur l'appareil.
Manifest de gestion de stockageDéfinissez les données en lecture seule auxquelles une extension peut accéder à l'aide de l'API {{WebExtAPIRef("storage.managed")}}.
PKCS #11 manifestsActivez une extension pour utiliser l'API  {{WebExtAPIRef("pkcs11")}} afin d'énumérer les modules de sécurité PKCS #11 et installez-les dans Firefox.
+ +

Pour tous les manifests natifs, vous devez arranger les choses afin que le navigateur puisse trouver le manifest. La section sur l'emplacement du manifest décrit ces règles.

+ +

Les manifests de messagerie natif

+ +

Le manifest de messagerie natif contient un seul objet JSON avec les propriétés suivantes :

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
nameString +

Nom de l'application native.

+ +

Cela doit correspondre au nom passé dans  {{WebExtAPIRef("runtime.connectNative()")}} ou {{WebExtAPIRef("runtime.sendNativeMessage()")}} par l'extension.

+ +

Sur OS X et Linux, il doit également correspondre au nom de fichier du manifest de messagerie natif (à l'exclusion de l'extension ".json").

+ +

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.

+ +

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.

+
descriptionStringDescription de l'application native.
pathString +

Chemin vers l'application native.

+ +

Sous Windows, cela peut être relatif au manifest lui-même. Sur OS X et Linux, il doit être absolu.

+
typeString +

Décrit la méthode utilisée pour connecter l'extension à l'application.

+ +

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).

+
allowed_extensionsArray of String +

Un tableau de valeurs d'ID d'extensions. Chaque valeur représente une extension qui est autorisée à communiquer avec cette application native.

+ +

Notez que cela signifie que vous voudrez probablement inclure la clé des browser_specific_settings dans le fichier manifest.json de votre extension, afin de pouvoir définir un identifiant explicite lors du développement..

+
+ +

Par exemple, voici un manifest pour l'application native "ping_pong":

+ +
{
+  "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" ]
+}
+ +

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".

+ +

Manifest de gestion de stockage

+ +

Le manifest de stockage géré contient un seul objet JSON avec les propriétés suivantes :

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
nameString +

ID de l'extension pouvant accéder à ce stockage, donné comme ID que vous avez spécifié dans la clé d'application de l'extension.

+
descriptionStringDescription lisible par l'homme, ignorée par Firefox
typeString +

Cela doit être "storage".

+
dataObject +

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 browser.storage.managed storage area.

+
+ +

Par exemple :

+ +
{
+  "name": "favourite-colour-examples@mozilla.org",
+  "description": "ignored",
+  "type": "storage",
+  "data":
+  {
+    "colour": "management thinks it should be blue!"
+  }
+}
+ +

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:

+ +
var storageItem = browser.storage.managed.get('colour');
+storageItem.then((res) => {
+  console.log(`Managed colour is: ${res.colour}`);
+});
+ +

PKCS #11 manifests

+ +

Le manifest PKCS #11 est un fichier contenant un objet JSON avec les propriétés suivantes :

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
nameString +

Nom du module PKCS #11.

+ +

Cela doit correspondre au nom utilisé dans l'API pkcs11 .

+ +

Sur OS X et Linux, il doit également correspondre au nom de fichier du manifest (à l'exclusion de l'extension).

+ +

Sous Windows, il doit correspondre au nom de la clé de registre que vous créez, qui contient l'emplacement du manifest.

+ +

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.

+
descriptionString +

Description du module.

+ +

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).

+
pathString +

Chemin d'accès au module.

+ +

Sous Windows, cela peut être relatif au manifest lui-même. Sur OS X et Linux, il doit être absolu

+
typeStringCela doit être "pkcs11".
allowed_extensionsArray of String +

Un tableau de valeurs d'ID de l'extension. Chaque valeur représente une extension qui est autorisée à interagir avec le module.

+ +

Notez que cela signifie que vous voudrez probablement inclure la clé des applications dans le fichier manifest.json de votre extension, afin de pouvoir définir un identifiant explicite lors du développement.

+
+ +

Par exemple :

+ +
{
+  "name": "my_module",
+  "description": "My test module",
+  "type": "pkcs11",
+  "path": "/path/to/libpkcs11testmodule.dylib",
+  "allowed_extensions": ["my-extension@mozilla.org"]
+}
+ +

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 :

+ +
browser.pkcs11.installModule("my_module");
+ +

Emplacement du manifest

+ +

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.

+ +

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, <name> est la valeur de la propriété name dans le manifest.

+ +

Windows

+ +

Pour une visibilité globale, créez une clé de registre avec le nom suivant :

+ +
HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\NativeMessagingHosts\<name>
+HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\ManagedStorage\<name>
+HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\PKCS11Modules\<name>
+ +

La clé doit avoir une seule valeur par défaut, qui est le chemin d'accès au manifest.

+ +

A partir de Firefox 64, la vue registre 32 bits (Wow6432Node) sera d'abord vérifiée pour ces clés, puis la vue registre "native". Utilisez celui qui convient le mieux à votre application. 

+ +

Pour Firefox 63 et les versions antérieures, cette clé ne doit pas être créée sous Wow6432Node, 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 Accès à une autre vue de registre.

+ +

Pour une visibilité par utilisateur, créez une clé de registre avec le nom suivant :

+ +
HKEY_CURRENT_USER\SOFTWARE\Mozilla\NativeMessagingHosts\<name>
+HKEY_CURRENT_USER\SOFTWARE\Mozilla\ManagedStorage\<name>
+HKEY_CURRENT_USER\SOFTWARE\Mozilla\PKCS11Modules\<name>
+ +

La clé doit avoir une seule valeur par défaut, qui est le chemin d'accès au manifest.

+ +

Mac OS X

+ +

Pour une visibilité globale, stockez le manifest dans :

+ +
/Library/Application Support/Mozilla/NativeMessagingHosts/<name>.json
+/Library/Application Support/Mozilla/ManagedStorage/<name>.json
+/Library/Application Support/Mozilla/PKCS11Modules/<name>.json
+ +

Pour la visibilité par utilisateur, stockez le manifest dans :

+ +
~/Library/Application Support/Mozilla/NativeMessagingHosts/<name>.json
+~/Library/Application Support/Mozilla/ManagedStorage/<name>.json
+~/Library/Application Support/Mozilla/PKCS11Modules/<name>.json
+
+ +

Linux

+ +

Pour une visibilité globale, stockez le manifest dans :

+ +
/usr/lib/mozilla/native-messaging-hosts/<name>.json
+/usr/lib/mozilla/managed-storage/<name>.json
+/usr/lib/mozilla/pkcs11-modules/<name>.json
+
+ +

ou :

+ +
/usr/lib64/mozilla/native-messaging-hosts/<name>.json
+/usr/lib64/mozilla/managed-storage/<name>.json
+/usr/lib64/mozilla/pkcs11-modules/<name>.json
+ +

Pour la visibilité par utilisateur, stockez le manifest dans :

+ +
~/.mozilla/native-messaging-hosts/<name>.json
+~/.mozilla/managed-storage/<name>.json
+~/.mozilla/pkcs11-modules/<name>.json
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 +--- +
{{AddonSidebar}}
+ +

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 content scripts, et pour spécifier les URL à ajouter aux auditeurs webRequest.

+ +

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é content_scripts dans manifest.json.

+ +

Structure du modèle de correspondance

+ +
+

Note: Certains navigateurs ne prennent pas en charge certains schémas.
+ Consultez le tableau de compatibilité du navigateur pour plus de détails.

+
+ +

Tous les modèles de correspondance sont spécifiés comme des chaînes. Outre le motif spécial « <all_urls> », les modèles de correspondance se composent de trois partie : schéma, l’hôte, et le chemin d’accès. Le schéma et l’hôte sont séparés par « :// ».

+ +
<scheme>://<host><path>
+ +

schéma

+ +

Le composant du schéma peut prendre l’une des deux formes suivantes :

+ + + + + + + + + + + + + + + + + + +
ValeurCorrespondances
*Seulement "http" et "https" et dans certains navigateurs "ws" et "wss" aussi.
Une parmi http, https, ws, wss, ftp, ftps, data ou file.Seulement le schéma donné.
+ +

hôte

+ +

Le composant hôte peut prendre l'une des trois formes suivantes :

+ + + + + + + + + + + + + + + + + + + + + + +
ValeurCorrespondances
*Tout hôte
*. Suivi d’une partie du nom d’hôteL’hôte donné et l’un de ses sous-domaines
Un nom d’hôte complet, sans caractères génériquesSeul l’hôte donné
+ +

L’hôte ne doit pas inclure un numéro de port.

+ +

L’hôte est facultatif seulement si le schéma est un « fichier ».

+ +

Notez que le caractère générique ne peut apparaître qu’au début.

+ +

chemin

+ +

Le composant du chemin d’accès doit commencer par un /.

+ +

Ensuite, il peut contenir éventuellement toute combinaison du caractère générique * et de l’un des caractères autorisés dans les chemins d’URL ou chaînes de requête. Contrairement à l’hôte, le composant du chemin peut contenir le caractère générique * au milieu ou à la fin, et le caractère * peut apparaître plusieurs fois.

+ + + +

La valeur du chemin matches correspond à la chaîne de caractères qui est le chemin plus la  chaine de requête URL. Ceci inclut le signe ? 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 foo.bar, alors vous devez utiliser un tableau de Match Patterns comme ['*://*/*foo.bar', '*://*/*foo.bar?*']. Le ?* est nécessaire, plutôt que juste la bar*, afin d'ancrer la fin * comme s'appliquant à la chaîne de requête URL et non à une partie du chemin URL.

+ +

Ni l'identificateur de fragment d'URL, ni le # qui le précède, ne sont considérés comme faisant partie du chemin.

+ +
+

Note: 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 : "http://localhost:1234/*" fait que le motif de match est ignoré. Cependant, "http://localhost:1234" correspondra avec "http://localhost/*"

+
+ +

<all_urls>

+ +

La valeur spéciale <all_urls> correspond à toutes les URL sous l’un des schémas pris en charge, c’est‐à‐dire : "http", "https", "ws", "wss", "ftp", "data" et "file".

+ +

Exemples

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ModèleExemples de correspondancesExemples de non-correspondances
+

<all_urls>

+ +

Correspondance à toutes les URL

+
+

http://example.org/

+ +

https://a.org/some/path/

+ +

ws://sockets.somewhere.org/

+ +

wss://ws.example.com/stuff/

+ +

ftp://files.somewhere.org/

+ +

ftps://files.somewhere.org/

+
+

resource://a/b/c/
+ (schéma sans équivalent)

+
+

*://*/*

+ +

Correspondance à toutes les URLs HTTP, HTTPS et WebSocket

+
+

http://example.org/

+ +

https://a.org/some/path/

+ +

ws://sockets.somewhere.org/

+ +

wss://ws.example.com/stuff/

+
+

ftp://ftp.example.org/
+ (schéma sans équivalent)

+ +

ftps://ftp.example.org/
+ (schéma sans équivalent)

+ +

file:///a/
+ (schéma sans équivalent)

+
+

*://*.mozilla.org/*

+ +

Correspondance à toutes les URLs HTTP, HTTPS et WebSocket URLs qui sont hébergés sur "mozilla.org" ou l’un de ses sous-domaines.

+
+

http://mozilla.org/

+ +

https://mozilla.org/

+ +

http://a.mozilla.org/

+ +

http://a.b.mozilla.org/

+ +

https://b.mozilla.org/path/

+ +

ws://ws.mozilla.org/

+ +

wss://secure.mozilla.org/something

+
+

ftp://mozilla.org/
+ (schéma sans équivalent)

+ +

http://mozilla.com/
+ (hôte sans équivalent)

+ +

http://firefox.org/
+ (hôte sans équivalent)

+
+

*://mozilla.org/

+ +

Correspondance à toutes les URLs HTTP, HTTPS and WebSocket qui sont hébergés exactement chez "mozilla.org/"

+
+

http://mozilla.org/

+ +

https://mozilla.org/

+ +

ws://mozilla.org/

+ +

wss://mozilla.org/

+
+

ftp://mozilla.org/
+ (schéma sans équivalent)

+ +

http://a.mozilla.org/
+ (hôte sans équivalent)

+ +

http://mozilla.org/a
+ (chemin sans équivalent)

+
+

ftp://mozilla.org/

+ +

Correspondance seulement à "ftp://mozilla.org/".

+
ftp://mozilla.org +

http://mozilla.org/
+ (schéma sans équivalent)

+ +

ftp://sub.mozilla.org/
+ (hôte sans équivalent)

+ +

ftp://mozilla.org/path
+ (chemin sans équivalent)

+
+

https://*/path

+ +

Correspondance aux URLs  HTTPS sur n'importe quel hôte, dont le chemin est "path".

+
+

https://mozilla.org/path

+ +

https://a.mozilla.org/path

+ +

https://something.com/path

+
+

http://mozilla.org/path
+ (schéma sans équivalent)

+ +

https://mozilla.org/path/
+ (chemin sans équivalent)

+ +

https://mozilla.org/a
+ (chemin sans équivalent)

+ +

https://mozilla.org/
+ (chemin sans équivalent)

+ +

https://mozilla.org/path?foo=1
+ (chemin d'accès inégalé grâce à la chaîne d'interrogation URL)

+
+

https://*/path/

+ +

Correspondance aux URLs HTTPS sur n’importe quel hôte, dont le chemin est "path/".

+
+

https://mozilla.org/path/

+ +

https://a.mozilla.org/path/

+ +

https://something.com/path/

+
+

http://mozilla.org/path/
+ (schéma sans équivalent)

+ +

https://mozilla.org/path
+ (chemin sans équivalent)

+ +

https://mozilla.org/a
+ (chemin sans équivalent)

+ +

https://mozilla.org/
+ (chemin sans équivalent)

+ +

https://mozilla.org/path/?foo=1
+ (chemin d'accès inégalé grâce à la chaîne d'interrogation URL)

+
+

https://mozilla.org/*

+ +

Correspondance sur toutes les URLs HTTPS uniquement sur "mozilla.org", avec n’importe quel chemin

+
+

https://mozilla.org/

+ +

https://mozilla.org/path

+ +

https://mozilla.org/another

+ +

https://mozilla.org/path/to/doc

+ +

https://mozilla.org/path/to/doc?foo=1

+
+

http://mozilla.org/path
+ (chemin sans équivalent)

+ +

https://mozilla.com/path
+ (hôte sans équivalent)

+
+

https://mozilla.org/a/b/c/

+ +

Correspondance seulement pour cet URL.

+
+

https://mozilla.org/a/b/c/

+ +

https://mozilla.org/a/b/c/#section1

+
N'importe quoi d'autre.
+

https://mozilla.org/*/b/*/

+ +

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 /.

+
+

https://mozilla.org/a/b/c/

+ +

https://mozilla.org/d/b/f/

+ +

https://mozilla.org/a/b/c/d/

+ +

https://mozilla.org/a/b/c/d/#section1

+ +

https://mozilla.org/a/b/c/d/?foo=/

+ +

https://mozilla.org/a?foo=21314&bar=/b/&extra=c/

+
+

https://mozilla.org/b/*/
+ (chemin sans équivalent)

+ +

https://mozilla.org/a/b/
+ (chemin sans équivalent)

+ +

https://mozilla.org/a/b/c/d/?foo=bar
+ (chemin d'accès inégalé grâce à la chaîne d'interrogation URL)

+
+

file:///blah/*

+ +

Correspondance à n’importe quelle URL FILE dont le chemin commence par "blah".

+
+

file:///blah/

+ +

file:///blah/bleh

+
file:///bleh/
+ (chemin sans équivalent)
+ +

Modèles de correspondance invalides

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Modèle invalideRaison
resource://path/schéma non pris en charge.
https://mozilla.orgpas de chemin.
https://mozilla.*.org/"*" dans hôte doit être au départ.
https://*zilla.org/"*" dans hôte doit être le seul caractère ou être suivi de « . ».
http*://mozilla.org/"*" dans le schéma doit être le seul caractère.
https://mozilla.org:80/L’hôte ne doit pas inclure un numéro de port.
*://*Chemin vide : il doit être "*://*/*".
file://*Chemin vide : il doit être "file:///*".
+ +

Compatibilité des navigateurs

+ +

schéma

+ + + +

{{Compat("webextensions.match_patterns.scheme",10)}}

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 +--- +
{{AddonSidebar}}
+ +

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.

+ +

Il existe deux façons de le faire avec WebExtensions :

+ + + +

Quoi qu'il en soit, ces scripts sont appelés scripts de contenu, et sont différents des autres scripts qui forment un WebExtension :

+ + + +

Dans cet article, nous examinerons les deux méthodes de chargement d'un script.

+ +

Modification des pages qui correspondent à un modèle d'URL

+ +

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 :

+ +
{
+
+  "manifest_version": 2,
+  "name": "modify-page",
+  "version": "1.0",
+
+  "content_scripts": [
+    {
+      "matches": ["https://developer.mozilla.org/*"],
+      "js": ["page-eater.js"]
+    }
+  ]
+
+}
+ +

La clé content_scripts  est la façon dont vous chargez les scripts dans des pages qui correspondent aux modèles d'URL. Dans ce cas, les instructions content_scripts demandent au navigateur de charger un script appelé  "page-eater.js" dans toutes les pages sous https://developer.mozilla.org/.

+ +
+

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.

+
+ +
+

La clé content_scripts possède également une propriété "css" que vous pouvez utiliser pour injecter des feuilles de style CSS.

+
+ +

Ensuite, créez un fichier appelé "page-eater.js" dans le dossier "modify-page" et donnez-lui le contenu suivant :

+ +
document.body.textContent = "";
+
+var header = document.createElement('h1');
+header.textContent = "This page has been eaten";
+document.body.appendChild(header);
+ +

Maintenant installer la WebExtension, et visiter https://developer.mozilla.org/:

+ +

{{EmbedYouTube("lxf2Tkg6U1M")}}

+ +
+

Notez bien que cette vidéo montre le script de contenu fonctionnant dans addons.mozilla.org, les scripts de contenu sont actuellement bloqués pour ce site.

+
+ +

Modification des pages par programme

+ +

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.

+ +

Tout d'abord, mettez à jour "manifest.json" pour qu'il contienne les contenus suivants:

+ +
{
+
+  "manifest_version": 2,
+  "name": "modify-page",
+  "version": "1.0",
+
+  "permissions": [
+    "activeTab",
+    "contextMenus"
+  ],
+
+  "background": {
+    "scripts": ["background.js"]
+  }
+
+}
+ +

Ici, nous avons supprimé la clé content_scripts et ajouté deux nouvelles clés:

+ + + +

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 :

+ +
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"
+    });
+  }
+});
+
+ +

Dans ce script, nous créons un élément de menu contextuel, 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 tabs.executeScript(). 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.

+ +

A ce stade, l'extension devrait ressembler à ceci :

+ +
modify-page/
+    background.js
+    manifest.json
+    page-eater.js
+ +

Maintenant rechargeons la WebExtension, Ouvrez une page (n'importe quelle page, cette fois) activez le menu contextuel et sélectionnez "Eat this page":

+ +

{{EmbedYouTube("zX4Bcv8VctA")}}

+ +
+

Notez que bien que cette vidéo montre le script de contenu fonctionnant dans  addons.mozilla.org, les scripts de contenu sont actuellement bloqués pour ce site.

+
+ +

Messagerie

+ +

Les scripts de contenu et les scripts de fond ne peuvent pas accéder directement à l'état de l'autre.

+ +

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é:

+ + + + + + + + + + + + + + + + + + + +
Dans le script de contenuDans le script d'arrière plan
Envoyer un messagebrowser.runtime.sendMessage()browser.tabs.sendMessage()
Reçevoir un messagebrowser.runtime.onMessagebrowser.runtime.onMessage
+ +
+

En ajoutant à cette méthode de communication, qui envoie des messages uniques, vous pouvez également utiliser une approche basée sur la connexion pour échanger des messages.

+
+ +

Mettons à jour notre exemple pour montrer comment envoyer un message à partir du script en arrière-plan.

+ +

D'abord, éditez "background.js" pour qu'il contienne ces contenus:

+ +
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);
+  }
+});
+
+ +

Maintenant, après avoir injecté "page-eater.js", nous utilisons tabs.query() pour obtenir l'onglet actuellement actif, puis utilisez tabs.sendMessage() pour envoyer un message aux scripts de contenu chargés dans cet onglet. Le message comporte la charge utile {remplacement: "Message from the add-on!"}.

+ +

Ensuite, mettez à jour "page-eater.js" comme ceci :

+ +
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);
+
+ +

Maintenant, au lieu de simplement d'afficher la page tout de suite, le script de contenu écoute un message en utilisant runtime.onMessage. 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 request.replacement.

+ +

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 runtime.sendMessage() dans le script de contenu.

+ +
+

Ces exemples injectent JavaScript; Vous pouvez également injecter CSS par programme en utilisant la fonction tabs.insertCSS().

+
+ +

Apprendre plus

+ + 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 +--- +
{{AddonSidebar}}
+ +

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.

+ +

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.

+ +

L’extension doit demander l'autorisation « 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.

+ +

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).

+ +

+ +

Le support de native messaging dans les extensions est généralement compatible avec Chrome, avec deux grandes différences :

+ + + +

Il y a un exemple complet (en anglais) dans le répertoire « native‐messaging » du dépôt « webextensions‐examples » sur GitHub. La plus grande partie du code de cet article est repris de cet exemple.

+ +

Mise en œuvre

+ +

Le manifest de l’extension (Extension manifest)

+ +

Si vous souhaitez que votre extension puisse communiquer avec une application native, alors :

+ + + +

Voici un exemple de fichier « manifest.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"]
+
+}
+ +

Le manifest de l’application (App manifest)

+ +

Le manifest de l’application décrit au navigateur la manière avec laquelle il peut se connecter à l’application native.

+ +

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.

+ +

Pour plus de détails sur la syntaxe et l'emplacement du manifeste des applications natives, voir manifest natifs.

+ +

Par exemple, voici un manifeste pour l'application native "ping_pong" :

+ +
{
+  "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" ]
+}
+ +

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 ».

+ +
+

Remarque pour Windows: 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 :

+ +
{
+  "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" ]
+}
+ +

Le fichier batch invoquera alors le script Python :

+ +
@echo off
+
+python -u "c:\\path\\to\\native-messaging\\app\\ping_pong.py"
+
+ +

Opérations d’échange des  messages

+ +

Ayant appliqué la configuration de ci‐dessus, une extension peut échanger des messages JSON avec une application native.

+ +

Du côté de l’extension

+ +

La messagerie native ne peut pas être utilisée directement dans les scripts de contenu ; vous devrez le faire indirect via des scripts d'arrière plan.

+ +

Il y a deux modèles à utiliser ici : la messagerie basée sur la connexion et la messagerie sans connexion.

+ +

Messagerie basée sur une connexion

+ +

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.

+ +

L’application native passe deux arguments lorsqu’elle démarre :

+ + + +
+

Chrome gère différemment les arguments passés :

+ + +
+ +

L’aplication continue de fonctionner jusqu’à ce que l’extension invoque Port.disconnect() ou jusqu'à ce que la page connectée soit fermée.

+ +

Pour envoyer des messages en utilisant Port, utilisez sa fonction postMessage(), en passant le message JSON à envoyer. Pour écouter les messages en utilisant Port, ajouter un écouteur (listener) en utilisant sa fonction onMessage.addListener().

+ +

Voici un exemple de script « background » 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 (browser action) :

+ +
/*
+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");
+});
+ +

Messagerie sans connexion

+ +

Avec cette manière de faire, vous invoquez la fonction  {{WebExtAPIRef("runtime.sendNativeMessage()")}}, en lui passant comme arguments :

+ + + +

Une nouvelle instance de l’application sera créée pour chaque message. L’application native passe deux arguments lorsqu’elle démarre :

+ + + +

Le premier message envoyé par l’application est traité comme une réponse à l’invocation de la fonction sendNativeMessage(), et sera passé dans le callback.

+ +

Voici l’exemple précédent réécrit en utilisant runtime.sendNativeMessage():

+ +
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);
+});
+
+ +

Du côté de l’application

+ +

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.

+ +

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.

+ +

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.

+ +

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 :

+ +
#!/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"))
+ +

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 :

+ +
#!/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"))
+ +

Fermeture de l’application native

+ +

Si vous vous êtes connecté à l’application native en utilisant  runtime.connectNative(), alors elle continuera de fonctionner jusqu’à ce que l’extension appelle Port.disconnect() ou que la page qui s'y est connectée soit fermée. Si vous avez démarré l’application native en utilisant runtime.sendNativeMessage(), alors elle sera fermée après qu’elle aura reçu le message et envoyé une réponse.

+ +

Pour fermer l’application native :

+ + + +

Dépannage

+ +

Si quelque chose se passe mal, vérifier dans la console du navigateur. 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.

+ +

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.

+ +
"No such native application <name>"
+ + + +
"Error: Invalid application <name>"
+ + + +
"'python' is not recognized as an internal or external command, ..."
+ + + +
"File at path <path> does not exist, or is not executable"
+ + + +
"This extension does not have permission to use native application <name>"
+ + + +
"TypeError: browser.runtime.connectNative is not a function"
+ + + +
"[object Object]       NativeMessaging.jsm:218"
+ + + +

Incompatibilités avec Chrome

+ +

{{Page("Mozilla / Add‐ons / WebExtensions / Chrome_incompatibilities", "Native_messaging")}}

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 +--- +
{{AddonSidebar}} +
+

Les techniques décrites dans cette section sont uniquement disponibles dans Firefox, et seulement à partir de Firefox 49

+
+ +
+

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.

+ +

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.

+ +

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.

+
+
+ +

Comme les notes du guide de scripts de contenu, 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.

+ +

Cependant, Firefox fournit des API qui permettent aux scripts de contenu de :

+ + + +

Vision Xray dans Firefox

+ +

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 expando 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.

+ +

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.

+ +

Par exemple, lorsqu'un script de contenu accède à la fenêtre 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 .

+ +

Pour l'histoire complète sur la vision Xray, voir les articles sur Vision Xray et la securité des Scripts.

+ +

Accès aux objets de script de page à partir de scripts de contenu

+ +

Dans Firefox, les objets DOM dans les scripts de contenu obtiennent une propriété supplémentaire wrappedJSObject. C'est une version "déballée" de l'objet, qui inclut toutes les modifications apportées à cet objet par les scripts de page.

+ +

Prenons un exemple simple. Supposons qu'une page Web charge un script:

+ +
<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="UTF-8">
+  </head>
+  <body>
+    <script type="text/javascript" src="main.js"></script>
+  </body>
+</html>
+ +

Le script ajoute une propriété expando à la fenêtre globale :

+ +
// main.js
+
+var foo = "I'm defined in a page script!";
+ +

La vision Xray signifie que si un script de contenu tente d'accéder à foo, il sera indéfini:

+ +
// content-script.js
+
+console.log(window.foo); // undefined
+ +

Dans Firefox, les scripts de contenu peuvent utiliser window.wrappedJSObject pour voir la propriété expando :

+ +
// content-script.js
+
+console.log(window.wrappedJSObject.foo); // "I'm defined in a page script!"
+ +

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.

+ +

Notez également que le déballage est transitif: lorsque vous utilisez wrappedJSObject, 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:

+ +
XPCNativeWrapper(window.wrappedJSObject.foo);
+ +

voir le document vision Xray pour plus de détails à ce sujet.

+ +

Partage d'objets de script de contenu avec des scripts de page

+ +

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:

+ + + +

exportFunction

+ +

Étant donné une fonction définie dans le script de contenu, exportFunction() l'exporte vers la portée du script de page, afin que le script de page puisse l'appeler.

+ +

Par exemple, considérons une extension qui a un script d'arrière-plan comme ceci :

+ +
/*
+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
+  });
+});
+ +

Cela fait deux choses :

+ + + +

Le script de contenu ressemble à ceci :

+ +
/*
+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'});
+ +

Cela définit une fonction notify(), 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:

+ +
window.notify("Message from the page script!");
+ +

Pour l'histoire complète, voir Components.utils.exportFunction.

+ +

cloneInto

+ +

É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 l'agorithme clone structuré 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 cloneFunctions.

+ +

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 :

+ +
/*
+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});
+ +

Maintenant les scripts de page vont voir une nouvelle propriété sur la fenêtre, messenger, qui a une fonction notify():

+ +
window.messenger.notify("Message from the page script!");
+ +

Pour l'histoire complète, voir Components.utils.cloneInto.

+ +

Constructeurs du contexte de la page

+ +

Sur l'objet fenêtre de xrayed, des constructeurs immaculés pour certains objets javascript intégrés tels que Object, Function ou Proxy et différentes classe DOM sont disponibles. XMLHttpRequest ne se comporte pas de cette manière, voir la section XHR and fetch 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.

+ +

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.

+ +
/* 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"
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 +--- +
{{AddonSidebar}}
+ +

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 WebExtensions. 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 Firefox 57.

+ +
+

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.

+
+ +

Démarrage rapide

+ +
    +
  1. Obtenez une idée des principales choses que vous devrez modifier dans votre extension : + +
  2. +
  3. 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  Embedded WebExtensions.
  4. +
  5. 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 bien, 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.
  6. +
  7. 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 applications du fichier manifest.json WebExtension. Ensuite, vous pouvez soumettre votre mise à jour de l'extension à AMO comme vous le feriez normalement.
  8. +
+ +
+

Notez qu'il s'agit d'une conversion unidirectionnelle: vous ne pouvez pas 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.

+
+ +

Chemin de migration

+ +


+ SDK Extensions

+ +

Voici le tableau de comparaison montrant les APIs SDK et leurs homologues de format WebExtensions. 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.

+ +

XUL/XPCOM Extensions

+ +

Voici le tableau de comparaison montrant les APIs XUL/XPCOM et leurs homologues de format WebExtensions. 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.

+ +

Vous ne trouvez pas les APIs WebExtensions dont vous avez besoin ?

+ +

Développez les APIs WebExtension pour Firefox - Si vous êtes expérimenté avec l'infrastructure Mozilla et souhaitez développer des API WebExtensions directement pour Firefox, voici une liste d' APIs approuvées que vous pouvez commencer à contribuer.

+ +

Expérimentez avec les nouvelles APIs WebExtension - Si vous souhaitez créer un prototype et un bricolage avec les API WebExtensions sans avoir à créer Firefox, les Expériences WebExtensions sont pour vous !

+ +

Demandez une nouvelle API WebExtensions - Si vous souhaitez demander une nouvelle API WebExtensions, lisez cette page.

+ +

Outils

+ + + +

Documentation

+ + + +

Contact

+ + 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 +--- +
{{AddonSidebar}}
+ +

Tout ce dont vous avez besoin pour Firefox 45 ou supérieur. Voir votre première extension pour commencer.

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_ +--- +
{{AddonSidebar}}
+ +
+
+

Les extensions packagées dans Firefox sont appelées "fichiers XPI", qui sont des fichiers ZIP avec une extension différente.

+ +

Vous n'avez pas besoin d'utiliser l'extension XPI lors du téléchargement vers AMO.

+
+
+ +

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.

+ +

La façon la plus pratique de compiler votre extension est d'utiliser la  build web-ext. Cet outil exclut automatiquement les fichiers qui sont généralement indésirables dans les paquets, comme les fichiers .git . Sinon, suivez les instructions ci-dessous pour le système d'exploitation.

+ +
+

Astuce. Le fichier ZIP doit être un fichier ZIP des fichiers de l'extension elle-même, et non du répertoire qui les contient.

+
+ +

Windows

+ +
    +
  1. Ouvrez le répertoire contenant les fichiers de votre extension.
  2. +
  3. 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 .git, les sources graphiques et les fichiers similaires.
  4. +
  5. Ouvrez le menu contextuel et cliquez sur Envoyer dans le dossier compressé (zipped).
  6. +
+ +

Illustration of how to use the send to compress folder feature in  File Explorer to create a web extension package.

+ +

macOS

+ +
    +
  1. Ouvrez le répertoire contenant les fichiers de votre extension.
  2. +
  3. 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 .git, les sources graphiques et les fichiers similaires.
  4. +
  5. Ouvrez le menu contextuel et cliquez Compress n éléments.
  6. +
+ +

Illustration of how to use the compress feature in Finder to create a web extinction package.

+ +
+ +
+ +

Linux / macOS Terminal

+ +
    +
  1. Ouvrir un Terminal.
  2. +
  3. Ouvrez le répertoire contenant les fichiers de votre extension, en utilisant la commande
    + cd path/to/my-extension/
  4. +
  5. 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 .git, les sources graphiques, et les fichiers similaires - en utilisant la commande
    + zip -r -FS ../my-extension.zip * --exclude *.git*
  6. +
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_ +--- +
{{AddonSidebar}}
+ +

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.

+ +

Vous pouvez trouver plus d'informations sur de nombreux sujets abordés sur cette page sur l'atelier d'extension, un site web dédié à vous aider à écrire, tester, publier et distribuer des extensions pour Firefox.

+ +

Votre environnement de développement

+ +

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.

+ +

Si vous utilisez des outils de minimisation ou d'obscurcissement pour fournir votre code final, vous devez fournir votre code source au processus de révision AMO. 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.

+ +

En savoir plus sur les outils de développement sur l'atelier d'extensions

+ +

Bibliothèques tierces

+ +

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 processus de révision AMO, 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.

+ +

En savoir plus sur la soumission du code source sur l'atelier d'extensions

+ +

L'accord de distribution des modules complémentaires de   Firefox

+ +

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.

+ +

Lire l'accord sur l'atelier d'extensions

+ +

En savoir plus sur la signature de l'atelier extensions

+ +

Le processus d'examen

+ +

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.

+ +

Consultez la politique de révision et les lignes directrices sur l'atelier d'extensions

+ +

AMO a présenté des extensions de navigateur

+ +

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.

+ +

En savoir plus sur la  façon de faire figurer vos modules complémentaires dans l'atelier d'extension

+ +

Continuez votre expérience d'apprentissage

+ +

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 :

+ + + +

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 :

+ + 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 +--- +

{{AddonSidebar}}

+ +

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.

+ +

Aperçu de l'examen

+ +

Toute extension que vous soumettez à addons.mozilla.org (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.

+ +

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.

+ +

Pour plus d'informations sur ces processus, voir Soumission d'un add-on et de la politiques Add-on.

+ +

Incidence du rejet de l'examen

+ +

Si votre prolongation est rejetée par l'examen humain :

+ + + +

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.

+ +

Liste de blocage

+ +

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).

+ +

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.

+ +

Pour plus d'informations sur la liste de blocage, voir Liste de blocage dans le wiki Mozilla.

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 +--- +
{{AddonSidebar}}
+ +

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 addons.mozilla.org, 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.

+ + 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 +--- +

{{AddonSidebar}}

+ +

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.

+ +

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.

+ +

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.

+ +

Qu'est-ce qu'un ID complémentaire ?

+ +

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:

+ + + +

Une extension peut se voir attribuer un ID complémentaire en utilisant la clé  "applications" du fichier manifest.json.

+ +
"applications": {
+  "gecko": {
+    "id": "addon@example.com",
+    }
+  }
+ +

Si l'extension n'a pas d'ID de module défini avec la clé "applications" , il reçoit un ID de module complémentaire via l'un des éléments suivants:

+ + + +

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 window.localStorage ou indexedDB. Cependant, vous n'avez pas besoin de connaître sa valeur. Son utilisation dans window.localStorage ou indexedDB 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.

+ +

Qu'est-ce qu'un profil Firefox?

+ +

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é profile. En plus des cookies, le profil contient du stockage local et d'autres contenus liés au profil.

+ +

Comportement d'extension dans Firefox

+ +

Lorsque vous développez une extension, en supposant que vous n'avez pas défini d'ID complémentaire à l'aide de la clé "applications", le comportement par défaut dans Firefox est le suivant :

+ + + +

Les conséquences de ce comportement, lors du rechargement d'une extension, sont les suivantes :

+ + + +

Que dois-je faire pour m'assurer de pouvoir tester mon extension ?

+ +

Pour que votre extension se comporte comme une extension signée pendant les tests de développement, utilisez les techniques suivantes :

+ + 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 +--- +

{{AddonSidebar}}

+ +

Cette page contient divers conseils et astuces qui devraient être utiles à beaucoup de personnes développant des extensions à l'aide des API WebExtension.

+ +

Utilisation des fonctionnalités JavaScript avancées d'ECMAScript 2015 et 2016

+ +

Firefox prend en charge de nombreuses fonctionnalités de ECMAScript 2015 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 Babel.

+ +

Attention, tout ce qui se trouve en dessous de cette ligne est obsolète et a été retiré de Babel 6.

+ +

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 .babelrc, ou une section babel dans le fichier package.json de votre projet contenant les éléments suivants :

+ +
{
+  "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"
+      ]
+    }
+  }
+}
+
+ +

Ensuite, pour compiler un script individuel, lancez simplement :

+ +
BABEL_ENV=firefox babel <filename>
+
+ +

Ou, pour compiler chaque fichier JavaScript sous le répertoire src et placer les fichiers compilés dans la compilation, en copiant les fichiers non-JavaScript dans le processus, lancez:

+ +
BABEL_ENV=firefox babel -Dd compiled src
+
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 +--- +

{{AddonSidebar}}

+ +

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.

+ +

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.

+ +

Pour plus d'informations sur cette fonctionnalité, voir :

+ + + +

API pour travailler avec des identités contextuelles

+ +

Pour utiliser les fonctionnalités d'identité contextuelle dans les extensions, vous utiliserez deux APIs :

+ + + +

Permissions

+ +

Pour utiliser l'API {{WebExtAPIRef("contextualIdentities")}} vous devez inclure la  permission "contextualIdentities" dans votre fichier manifest.json. 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.

+ +

Exemple de procédure pas à pas

+ +

L'exemple d'extension contextual-identities 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é.

+ +

Voici une courte vidéo de l'extension en action :

+ +

{{EmbedYouTube("SgLCS7_ppas")}}

+ +

manifest.json

+ +

Les principales caractéristiques du fichier manifest.json sont :

+ + + +

context.html

+ +

Une fenêtre contextuelle sur le bouton de la barre d'outils fournit l'interface utilisateur de l'extension. context.html 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.

+ +
  <body>
+    <div class="panel">
+      <div id="identity-list"></div>
+    </div>
+  <script src="context.js"></script>
+  </body>
+ +

context.js

+ +

Toutes les fonctionnalités de l'extension sont implémentées via context.js, qui est appelée chaque fois que la barre d'outils est affichée.

+ +

Le script obtient d'abord le div 'identity-list' depuis context.html.

+ +
var div = document.getElementById('identity-list');
+ +

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.

+ +
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 {
+ +

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.

+ +

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.

+ +
  browser.contextualIdentities.query({})
+    .then((identities) => {
+      if (!identities.length) {
+        div.innerText = 'No identities returned from the API.';
+        return;
+      }
+ +

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 createOptions() ajoute ensuite les options à “create” ou  “close all” à la <div> avant qu'elle ne soit ajoutée au popup.

+ +
     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);
+  }
+}
+ +

Le script attend maintenant que l'utilisateur sélectionne une option dans le popup.

+ +
function eventHandler(event) {
+ +

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é.

+ +
  if (event.target.dataset.action == 'create') {
+    browser.tabs.create({
+      url: 'about:blank',
+      cookieStoreId: event.target.dataset.identity
+    });
+  }
+ +

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 à tabs.remove.

+ +
  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();
+}
+ +

Apprendre encore plus

+ +

Si vous voulez en savoir plus sur l'API contextualIdentities, consultez :

+ + 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 +--- +

{{AddonSidebar}}

+ +

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.

+ +
+

Le comportement des cookies peut être contrôlé à l'aide de la propriété {{WebExtAPIRef("privacy.websites")}} cookieConfig. 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.

+
+ +

Permissions

+ +

Pour utiliser l'API Cookies, vous devez demander à la fois la permission "cookies" et les  permissions d'hôte pour les protocoles, domaines, ou sites web auxquels vous souhaitez accéder ou utiliser "<all_urls>" 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.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Chaine de permission hôte

+
+

Lecture

+
+

Ecriture/Effacer

+
+

Sécurisé

+
+

Non-sécurisé

+
+

Sécurisé

+
+

Non-sécurisé

+
+

"http://*.example.com/"

+
+

Non

+
+

Principaux et sous domaines, avec n'importe quel chemin

+
+

Principaux et sous domaines, avec n'importe quel chemin

+
+

Principaux et sous domaines, avec n'importe quel chemin

+
+

"https://www.example.com/"

+
+

www.example.com ou .example.com avec n'importe quel chemin, mais aucun sous domaine

+
+

www.example.com ou .example.com avec n'importe quel chemin, mais aucun sous domaine

+
+

www.example.com ou .example.com avec n'importe quel chemin, mais aucun sous domaine

+
+

www.example.com ou .example.com avec n'importe quel chemin, mais aucun sous domaine

+
+

"*://*.example.com/"

+
+

Principaux et sous domaines, avec n'importe quel chemin

+
+

Principaux et sous domaines, avec n'importe quel chemin

+
+

Principaux et sous domaines, avec n'importe quel chemin

+
+

Principaux et sous domaines, avec n'importe quel chemin

+
+

"<all_urls>"

+
+

Tout domaine avec un chemin

+
+

Tout domaine avec un chemin

+
+

Tout domaine avec un chemin

+
+

Tout domaine avec un chemin

+
+
+ +

Banque de cookies

+ +

Firefox fournit trois types de banque de cookies :

+ + + +

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.

+ +

Exemple de procédure pas à pas

+ +

L'exemple d'extension cookie-bg-picker 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.

+ +

Cette vidéo montre l'extension en action :

+ +

{{EmbedYouTube("_rlp3eYqEMA")}}

+ +

Cet exemple utilise également les API Tabs et Runtime, mais nous ne discuterons de ces fonctionnalités qu'en passant.

+ +

manifest.json

+ +

The key feature of the manifest.json file relating to the use of the Cookies API is the permissions request:

+ +
  "permissions": [
+      "tabs",
+      "cookies",
+      "<all_urls>"
+],
+ +

Ici, l'extension demande l'autorisation d'utiliser l'API Cookies ("cookies") avec tous les sites Web ("<all_urls>"). Cela permet à l'extension d'enregistrer le choix de l'icône de couleur d'arrière-plan pour n'importe quel site Web.

+ +

Scripts—bgpicker.js

+ +

L'interface utilisateur de l'extension utilise un bouton de barre d'outils ({{WebExtAPIRef("browserAction")}}) implémenté avec bgpicker.html qui appelle bgpicker.js. 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.

+ +

bgpicker.js 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.

+ +

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 :

+ +
var bgBtns = document.querySelectorAll('.bg-container button');
+ +

Il boucle ensuite à travers tous les boutons en leur assignant leur image et en créant un écouteur onclick pour chaque bouton :

+ +
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) {
+ +

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 (updatebg.js) en utilisant un message. Le script de contenu applique ensuite l'icône à l'arrière-plan de la page Web. Pendant ce temps, bgpicker.js stocke les détails de l'icône appliquée à l'arrière-plan dans un cookie :

+ +
    cookieVal.image = fullURL;
+    browser.cookies.set({
+    url: tabs[0].url,
+    name: "bgpicker",
+    value: JSON.stringify(cookieVal)
+  })
+ +

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 :

+ +
    cookieVal.color = currColor;
+    browser.cookies.set({
+    url: tabs[0].url,
+    name: "bgpicker",
+    value: JSON.stringify(cookieVal)
+ +

Lorsque l'utilisateur clique sur le bouton de réinitialisation qui a été affecté à la réinitialisation de la variable :

+ +
var reset = document.querySelector('.color-reset button');
+ +

reset.onclick 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 (updatebg.js) 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 :

+ +
    cookieVal = { image : '',
+                  color : '' };
+    browser.cookies.remove({
+    url: tabs[0].url,
+    name: "bgpicker"
+ +

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 :

+ +
browser.cookies.onChanged.addListener((changeInfo) => {
+  console.log(`Cookie changed:\n
+    * Cookie: ${JSON.stringify(changeInfo.cookie)}\n
+    * Cause: ${changeInfo.cause}\n
+    * Removed: ${changeInfo.removed}`);
+  });
+ +

Scripts—background.js

+ +

Un script d'arrière-plan (background.js) 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, cookieUpdate() est appelée.  cookieUpdate() utilise à son tour getActiveTab() 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 :

+ +
    var gettingCookies = browser.cookies.get({
+      url: tabs[0].url,
+      name: "bgpicker"
+    });
+ +

Si le cookie "bgpicker" 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 updatebg.js à l'aide de messages :

+ +
    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});
+      }
+    });
+ +

Autres caractéristiques

+ +

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.

+ +

Apprendre encore plus

+ +

Si vous voulez en savoir plus sur l'API Cookies, consultez :

+ + 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 +--- +

{{AddonSidebar}}

+ +

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.

+ +

Dans cet article, nous allons regarder :

+ + + +

Nous concluons ensuite en examinant d'autres fonctionnalités diverses offertes par l'API.

+ +
+

Remarque : 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 scripts de contenu et le guide pratique modifier une page web.

+
+ +

Permissions et l'API Tabs

+ +

Pour la majorité des fonctions de l'API Tabs, vous n'avez besoin d'aucune autorisation. Cependant, il y a certaines exceptions :

+ + + +

Vous pouvez demander la permission "tabs" dans le fichier manifest.json de votre extension :

+ +
"permissions": [
+  "<all_urls>",
+  "tabs"
+],
+
+ +

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 "activeTab". Cette permission fournit les mêmes droits que les  "onglets" avec <all_urls>, mais avec deux restrictions:

+ + + +

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 <all_urls> permet à une extension d'exécuter des scripts dans n'importe quel onglet, à tout moment, alors que "activeTab" se limite à autoriser l'extension à effectuer une action demandée par l'utilisateur dans l'onglet en cours.

+ +

En savoir plus sur les onglets et leurs propriétés

+ +

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.

+ +

C'est ici qu'intervient {{WebExtAPIRef("tabs.query")}}. Utilisé seul pour obtenir tous les onglets ou prendre l'objet queryInfo — 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.

+ +

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")}}.

+ +

Par exemple

+ +

Pour voir comment {{WebExtAPIRef("tabs.query")}} et {{WebExtAPIRef("tabs.Tab")}} sont utilisés, voyons comment l'exemple tabs-tabs-tabs ajoute la liste de  “passer aux onglets” à son popup bouton de barre d'outils.

+ +

The tabs tabs tabs toolbar menu showing the switch to tap area

+ +

manifest.json

+ +

Voici le manifest.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"
+}
+
+ +
+

Notez ce qui suit :

+ + +
+ +

tabs.html

+ +

tabs.html définit le contenu du popup de l'extension :

+ +
<!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>
+
+ +

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.

+ +

Voici un résumé de ce qui précède :

+ +
    +
  1. Les éléments de menu sont déclarés.  
  2. +
  3. Une div vide avec tabs-list est déclaré comme contenant la liste des onglets.
  4. +
  5. tabs.js est appelé.
  6. +
+ +

tabs.js

+ +

Dans tabs.js nous pouvons voir comment la liste des onglets est construite et ajoutée à la popup.

+ +

Tout d'abord, un gestionnaire d'événements est ajouté pour exécuter listTabs() quand tabs.html est chargé :

+ +

Création de la fenêtre contextuelle

+ +

Tout d'abord, un gestionnaire d'événements est ajouté pour exécuter listTabs() quand tabs.html est chargé :

+ +
document.addEventListener("DOMContentLoaded", listTabs);
+ +

La première chose que fait listTabs() est d'appeler getCurrentWindowTabs(), où {{WebExtAPIRef("tabs.query")}} est utilisé pour obtenur un objet  {{WebExtAPIRef("tabs.Tab")}} pour le onglets dans la fenêtre courante :

+ +
function getCurrentWindowTabs() {
+  return browser.tabs.query({currentWindow: true});
+}
+
+ +

Maintenant, listTabs() est prêt à créer le contenu de la popup.

+ +

Pour commencer :

+ +
    +
  1. Récupérer les tabs-list div.
  2. +
  3. Créer un fragment de document (dans lequel la liste sera construite).
  4. +
  5. Mettre les compteurs.
  6. +
  7. Effacer le contenu de tabs-list div.
  8. +
+ +
function listTabs() {
+ getCurrentWindowTabs().then((tabs) => {
+    let tabsList = document.getElementById('tabs-list');
+    let currentTabs = document.createDocumentFragment();
+    let limit = 5;
+    let counter = 0;
+
+    tabsList.textContent = '';
+
+ +

Ensuite, nous allons créer les liens pour chaque onglet :

+ +
    +
  1. Boucle les 5 premiers éléments de l'objet {{WebExtAPIRef("tabs.Tab")}}.
  2. +
  3. Pour chaque poste, ajoutez un hyperlien vers le fragment de document. +
      +
    • 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).
    • +
    • L'adresse du lien est définie à l'aide de l'ID de l'onglet.
    • +
    +
  4. +
+ +
    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;
+
+    }
+
+ +

Enfin, le fragment du document est écrit dans la div tabs-list :

+ +
    tabsList.appendChild(currentTabs);
+  });
+}
+
+ +

Travailler avec l'onglet actif

+ +

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 :

+ +
 else if (e.target.id === "tabs-alertinfo") {
+   callOnActiveTab((tab) => {
+     let props = "";
+     for (let item in tab) {
+       props += `${ item } = ${ tab[item] } \n`;
+     }
+     alert(props);
+   });
+ }
+
+ +

callOnActiveTab() ftrouve l'objet de tabulation active en faisant une boucle sur les objets {{WebExtAPIRef("tabs.Tab")}} qui recherchent l'objet avec l'ensemble actif :

+ +
document.addEventListener("click", function(e) {
+ function callOnActiveTab(callback) {
+   getCurrentWindowTabs().then((tabs) => {
+     for (var tab of tabs) {
+       if (tab.active) {
+         callback(tab, tabs);
+       }
+     }
+   });
+ }
+}
+
+
+ +

Création, duplication, déplacement, mise à jour, rechargement et suppression des onglets

+ +

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 :

+ + + +
+

NOTE :

+ +

Ces fonctions nécessitent toutes l'ID (ou les ID) de l'onglet qu'elles manipulent :

+ + + +

Alors que les fonctions suivantes agissent sur l'onglet actif (si aucun ID d'onglet n'est fourni) :

+ + +
+ +

Par exemple

+ +

L'exemple tabs-tabs-tabs 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 :

+ +

{{EmbedYouTube("-lJRzTIvhxo")}}

+ +

manifest.json

+ +

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.

+ +

tabs.html

+ +

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 <a> 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é.

+ +
    <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>
+ +

tabs.js

+ +

Pour implémenter le "menu" défini dans tabs.html, tabs.js inclut un écouteur pour les clics dans tabs.html

+ +
document.addEventListener("click", function(e) {
+ function callOnActiveTab(callback) {
+
+   getCurrentWindowTabs().then((tabs) => {
+     for (var tab of tabs) {
+       if (tab.active) {
+         callback(tab, tabs);
+       }
+     }
+   });
+}
+}
+
+ +

Une série d'instructions if 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” :

+ +
 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});
+   });
+ }
+
+ +

Il est intéressant de noter l'utilisation de console.log. Cela vous permet de générer des informations sur la console du debugger, ce qui peut être utile lors de la résolution des problèmes rencontrés lors du développement.

+ +

Example of the console.log output, from the move tabs feature, in the debugging console

+ +

Le code de déplacement appelle d'abord callOnActiveTab() qui à son tour appelle  getCurrentWindowTabs() 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 :

+ +
 function callOnActiveTab(callback) {
+   getCurrentWindowTabs().then((tabs) => {
+     for (var tab of tabs) {
+       if (tab.active) {
+         callback(tab, tabs);
+       }
+     }
+   });
+ }
+
+ +
Onglets épinglés
+ +

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, firstUnpinnedTab() est appelé pour trouver la position du premier onglet non goupillé en faisant une boucle dans l'objet tabs :

+ +
function firstUnpinnedTab(tabs) {
+ for (var tab of tabs) {
+   if (!tab.pinned) {
+     return tab.index;
+   }
+ }
+}
+
+ +

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 :

+ +
     browser.tabs.move([tab.id], {index});
+ +

Les fonctions restantes à dupliquer, recharger, créer et supprimer des onglets sont implémentées de manière similaire.

+ +

Manipulation du niveau du zoom d'un onglet

+ +

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.

+ +

Le niveau de zoom peut être compris entre 30% et 300% (représenté par des décimales de 0.3 à 3).

+ +

Dans Firefox les paramètres de zoom par défaut sont :

+ + + +

Par exemple

+ +

L'exemple tabs-tabs-tabs comprend trois démonstrations de la fonction de zoom : zoom avant, zoom arrière, et réinitialisation du zoom. Voici la fonctionnalité en action :

+ +

{{EmbedYouTube("RFr3oYBCg28")}}

+ +

Jetons un coup d'oeil à la façon dont le zoom est implémenté.

+ +

manifest.json

+ +

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.

+ +

tabs.html

+ +

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.

+ +

tabs.js

+ +

tabs.js commence par définir plusieurs constantes utilisées dans le code du zoom :

+ +
const ZOOM_INCREMENT = 0.2;
+const MAX_ZOOM = 3;
+const MIN_ZOOM = 0.3;
+const DEFAULT_ZOOM = 1;
+
+ +

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.

+ +

Pour la fonction zoom, ceci s'exécute :

+ +
 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);
+       }
+     });
+   });
+ }
+
+ +

Ce code utilise callOnActiveTab() 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 (MAX_ZOOM) 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")}}.

+ +

Manipuler le CSS d'un onglet

+ +

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")}}).

+ +

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).

+ +

Par exemple

+ +

L'exemple apply-css utilise ces fonctionnalités pour ajouter une bordure rouge à la page Web dans l'onglet actif. Voici la fonctionnalité en action:

+ +

{{EmbedYouTube("bcK-GT2Dyhs")}}

+ +

Voyons comment cela se passe.

+ +

manifest.json

+ +

Pour utiliser les fonctionnalités CSS dont vous avez besoin :

+ + + +

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.

+ +
{
+  "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"
+ ]
+
+}
+
+ +

Vous noterez que la permission "tabs" est ajoutée en plus de "activeTab". 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.

+ +

Les autres caractéristiques principales du fichier manifeste sont la définition de:

+ + + +

background.js

+ +

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 :

+ +
const CSS = "body { border: 20px solid red; }";
+const TITLE_APPLY = "Apply CSS";
+const TITLE_REMOVE = "Remove CSS";
+const APPLICABLE_PROTOCOLS = ["http:", "https:"];
+
+ +

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 initializePageAction().

+ +
var gettingAllTabs = browser.tabs.query({});
+
+gettingAllTabs.then((tabs) => {
+ for (let tab of tabs) {
+   initializePageAction(tab);
+ }
+});
+
+ +

initializePageAction utilise protocolIsApplicable() pour déterminer si l'URL de l'onglet actif est celle à laquelle le CSS peut être appliqué :

+ +
function protocolIsApplicable(url) {
+ var anchor =  document.createElement('a');
+ anchor.href = url;
+ return APPLICABLE_PROTOCOLS.includes(anchor.protocol);
+}
+
+ +

Ensuite, si l'exemple peut agir sur l'onglet, initializePageAction() définit l'icône  pageAction (barre de navigation) et le titre de l'onglet pour utiliser les versions ‘off’ avant de rendre la pageAction visible :

+ +
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);
+ }
+}
+
+ +

Maintenant, un écouteur sur geAction.onClicked attend que l'icône pageAction soit cliqué et appelle toggleCSS quand il l'est.

+ +
browser.pageAction.onClicked.addListener(toggleCSS);
+ +

toggleCSS() obtient le titre de la pageAction  puis prend l'action décrite :

+ + + +
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);
+}
+
+ +

Enfin, pour s'assurer que pageAction est valide après chaque mise à jour de l'onglet, un écouteur sur {{WebExtAPIRef("tabs.onUpdated")}} appelle  initializePageAction() chaque fois que l'onglet est mis à jour pour vérifier que l'onglet utilise toujours un protocole auquel le CSS peut être appliqué.

+ +
browser.tabs.onUpdated.addListener((id, changeInfo, tab) => {
+
+ initializePageAction(tab);
+});
+
+ +

Quelques autres capacités intéressantes

+ +

Il existe deux autres fonctionnalités de l'API Tabs qui ne rentrent pas dans l'une des sections précédentes :

+ + + +

Apprendre encore plus

+ +

Si vous voulez en savoir plus sur l'API Tabs, consultez le :

+ + 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 +--- +
{{AddonSidebar}}
+ +

Certaines API WebExtension exécutent des fonctions qui sont généralement exécutées à la suite d'une action utilisateur. Par exemple:

+ + + +

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 :

+ + + +

Par exemple:

+ +
function handleClick() {
+  browser.sidebarAction.open();
+}
+
+browser.browserAction.onClicked.addListener(handleClick);
+ +

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.

+ +

De plus, si un gestionnaire d'entrée utilisateur attend une promise, alors son statut de gestionnaire d'entrée utilisateur est perdu. Par exemple :

+ +
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);
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 +--- +
{{AddonSidebar}}
+ +
+

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.

+ +

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.

+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: + +

En utilisant la clé sidebar_action 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.

+ +

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.

+ +

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()")}} :

+ +
// sidebar.js
+browser.windows.getCurrent({populate: true}).then((windowInfo) => {
+  myWindowId = windowInfo.id;
+});
+ +

Ceci est utile si une barre latérale veut afficher différents contenus pour différentes fenêtres. Par exemple, regardez l'exemple "annotate-page".

+ +

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()")}}.

+ +

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.

+ +

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.

+ +

Spécification des barres latérales

+ +

Pour spécifier une barre latérale, définissez le document par défaut avec la clé du manifest.json  sidebar_action, à côté d'un titre et d'une icône par défaut :

+ +
"sidebar_action": {
+  "default_title": "My sidebar",
+  "default_panel": "sidebar.html",
+  "default_icon": "sidebar_icon.png"
+}
+ +

Le titre, le panneau et l'icône peuvent être modifiés par programme en utilisant l'API {{WebExtAPIRef ("sidebarAction")}}.

+ +

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.

+ +

Concept de la barre latérale

+ +

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 Système de conception Photon.

+ +

Exemple

+ +

Le dépôt webextensions-examples sur GitHub contient plusieurs exemples de WebExtensions qu utilise une barre latérale:

+ + +
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 +--- +
{{AddonSidebar}}
+ +

Généralement appelé comme une action de navigateur, 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.
+

+ +

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 les actions de page et les actions du navigateur.

+ +

Spécification de l'action du navigateur

+ +

Vous définissez les propriétés de l'action du navigateur à l'aide de la clé  browser_action dans manifest.json:

+ +
"browser_action": {
+  "default_icon": {
+    "19": "button/geo-19.png",
+    "38": "button/geo-38.png"
+  },
+  "default_title": "Whereami?"
+}
+ +

La seule clé obligatoire est default_icon.

+ +

Il existe deux façons de spécifier une action du navigateur: avec ou sans popup. 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  browserAction.onClicked :

+ +
browser.browserAction.onClicked.addListener(handleClick);
+ +

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 Popup pour plus de détails sur la création et la gestion des fenêtres pop-up.

+ +

Notez que votre extension ne peut avoir qu'une seule action de navigateur.

+ +

Vous pouvez modifier plusieurs propriétés d'action du navigateur de manière programmée à l'aide de l'API action du navigateur.

+ +

Icônes

+ +

Pour plus d'informations sur la création d'icônes à utiliser avec l'action de votre navigateur, voir Iconographie dans la documentation Photon Design System.

+ +

Exemples

+ +

Le dépôt webextensions-examples sur GitHub contient plusieurs exemples de WebExtensions qui utilisent les actions du navigateur:

+ + 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 +--- +
{{AddonSidebar}}
+ +

Certains composants de l'interface utilisateur - les fenêtres contextuelles, fenêtres latérales, et les pages d'options du navigateur et de la page - sont spécifiés par votre extension de la même manière  :

+ +
    +
  1. créer un fichier HTML définissant la structure de l'élément d'interface utilisateur
  2. +
  3. ajoutez une clé manifest.json (browser_action, page_action, sidebar_action, ou options_ui) pointant vers ce fichier HTML.
  4. +
+ +

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.
+ Pour aider à cela, les clés manifest.json keys incluent une propriété optionnelle supplémentaire : browser_style.
+ Si cela est inclus et défini sur true, 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é browser_style.

+ +

Lorsque vous envisagez d'utiliser le browser_style: true, 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..

+ +
+

Quand browser_style: true 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.

+
+ +
+

Google Chrome et Opera utilisent chrome_style au lieu de browser_style, donc si vous souhaitez les prendre en charge, vous devez ajouter les deux clés.

+
+ +

Dans Firefox, la feuille de style peut être vue sur chrome://browser/content/extension.css. La feuille de style peut être vue sur chrome://browser/content/extension-mac.css est également incluse sur OS X.

+ +

La plupart des styles sont automatiquement appliqués, mais certains éléments nécessitent que vous ajoutiez la classe  browser-style non standard pour obtenir leur style, comme indiqué dans le tableau ci-dessous :

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
ElementExemple
<button> +
+<button class="browser-style">Click me</button>{{non-standard_inline}}
+
+

<select>

+
+
+<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>
+
<textarea> +
+<textarea class="browser-style">Write here</textarea>
+
Parent d'un <input> +
+<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>
+
+ +
+

Voir le {{bug(1465256)}} pour la suppression de cette exigence inutile.

+
+ +

Compatibilité du navigateur

+ + + +

{{Compat("webextensions.browser_style")}}

+ +

Composants du panneau Firefox

+ +
+

Non-Standard
+ Cette fonctionnalité est non standard et ne fonctionne que dans Firefox.

+
+ +

La feuille de style chrome://browser/content/extension.css contient également les styles des composants du panneau Firefox.

+ +

L'ancien guide de style de Firefox documente l'utilisation appropriée.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ElementExemple
Header +
+<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>
+
Footer +
+<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>
+
Tabs +
+<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>
+
Form +
+<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>
+
Menu +
+<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>
+
+ +

Exemple

+ +

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>
+ + + +

Resultat

+ +

{{EmbedLiveSample("Example","640","360")}}

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 +--- +
{{AddonSidebar}}
+ +
+

Cette option d'interface utilisateur ajoute un ou plusieurs éléments à un menu contextuel du navigateur. 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 browser.menus.

+ +

Example of content menu items added by a WebExtension, from the context-menu-demo example

+ +

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")}}.

+ +

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 "Open bookmark in Container Tab" ajoute un élément de menu qui permet à l'utilisateur d'ouvrir une URL de signet dans un nouvel onglet de conteneur :

+ +

+ +
+

Spécification des éléments du menu contextuel

+ +

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.

+ +
"permissions": ["contextMenus"]
+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: + +
browser.contextMenus.create({
+  id: "log-selection",
+  title: browser.i18n.getMessage("contextMenuItemSelectionLogger"),
+  contexts: ["selection"]
+}, onCreated);
+ +

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.

+ +
browser.contextMenus.onClicked.addListener(function(info, tab) {
+  switch (info.menuItemId) {
+    case "log-selection":
+      console.log(info.selectionText);
+      break;
+    ...
+  }
+})
+ +

Icônes

+ +

Pour plus de détails sur la création d'icônes à utiliser avec votre menu contextuel, voir  Iconography dans la documentation du Systeme de conception de Photon.

+ +

Exemples

+ +

Le depot webextensions-examples sur GitHub contient plusieurs exemples de WebExtensions qui utilise les élements du menu contextuel :

+ +
    +
  • menu-demo ajoute différents éléments au menu contextuel.
  • +
  • context-menu-copy-link-with-types ajoute un élément de menu contextuel aux liens qui copient l'URL vers le presse-papiers, comme un texte brut et HTML enrichi.
  • +
+
+
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 +--- +
{{AddonSidebar}}
+ +

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.

+ +
+

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 bonnes pratiques de l'expérience utilisateur.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
UI optionDescriptionExemple
Bouton de la barre d'outils (action du navigateur) +

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.

+
Example showing a toolbar button (browser action).
Bouton de la barre d'outils du navigateur avec un popup +

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.

+
Example of the pop-up on a toolbar button
Bouton de la barre d'addresse (action page) +

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.

+
Example showing an address bar button (page action)
Bouton de la barre d'addresse avec un popup +

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.

+
Example of a popup on the address bar button
Elément du menu contextuel +

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.

+
Example of content menu items added by a WebExtension, from the context-menu-demo example
Barre latérale +

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.

+
Example of a sidebar
page d'options +

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.

+
Example showing the options page content added in the favorite colors example.
Extension pages +

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.

+
Example of a simple bundled page displayed as a detached panel.
Notifications +

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).

+
Example of an extension triggered system notification
Suggestions de la barre d'addresse +

Offrez des suggestions de barèmes d'adresses personnalisées lorsque l'utilisateur entre un mot-clé.

+
Example showing the result of the firefox_code_search WebExtension's customization of the address bar suggestions.
Panneaux d'outils de développement +

Un onglet avec un document HTML associé qui s'affiche dans les outils de développement du navigateur.

+
Example showing the result of the firefox_code_search WebExtension's customization of the address bar suggestions.
+ +

Les guides pratiques suivants fournissent des conseils étape par étape pour créer certaines options d'interface utilisateur:

+ +

 

+ + 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 +--- +

{{AddonSidebar()}}

+ +

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.

+ +

Vous trouverez plus d'information sur la conception et l'accessibilité dans la section Photon Design System et Accessibilité et Mozilla section de MDN.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Fonction d'interface utilisateur Lignes directrices
+

Raccourcis clavier  (commands)

+
+

Les raccourcis clavier permettent d'activer facilement les fonctions d'extension.

+ +

Pour améliorer l'accessibilité, ajoutez des raccourcis clavier pour :

+ +
    +
  • éléments de l'interface utilisateur de l'extension, tels que les boutons de la barre d'outils et de la barre d'adresse.
  • +
  • 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.  
  • +
+ +
+

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.

+
+
+

Bouton de la barre d'outils (action du navigateur)

+
+

Pour tenir compte du thème actif, fournissez des icônes de boutons de la barre d'outils pour les thèmes avec du texte clair et foncé.

+ +

Suivez les directives du Photon Design System sur l'Iconographie. 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.

+ +

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 :

+ +
    +
  • l'état de l'extension.
  • +
  • le contenu des badges texte affichés sur le bouton.
  • +
+ +

Ajoutez un raccourci à l'action du bouton, en utilisant l'option spéciale de raccourci spécial _execute_browser_action.

+
+

Bouton de la barre d'outils avec une fenêtre contextuelle

+
+

Le balisage dans la fenêtre contextuelle doit suivre les lignes directrices standard d'accessibilité au web.

+
+

Bouton de la barre d'adresse (action page)

+
+

Les mêmes directives que les boutons de la barre d'outils doivent être suivies.

+ +

Ajoutez un raccourci à l'action du bouton, en utilisant l'option de raccourci  _execute_page_action.

+
+

Bouton de la bare d'adresse avec un popup

+
+

Le balisage dans la fenêtre contextuelle devrait suivre les lignes directrices standard d'accessibilité du web.

+
+

Elément du menu contextuel

+
+

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.

+
+

Barre latérale

+
+

Le balisage dans la barre latérale doit être conforme aux lignes directrices standard d'accessibilité du web.

+ +

Ajoutez un raccourci clavier pour ouvrir une barre latérale, en utilisant l'option de raccourci spécial _execute_sidebar_action.

+
+

Options page

+
+

Le balisage de la page des options doit suivre les lignes directrices standard d'accessibilité du Web.

+
+

Extension page

+
+

Le balisage de la page d'extension doit suivre les lignes directrices standard d'accessibilité du Web.

+
+

Notification

+
+

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é.

+
+

Suggestion de la barre d'adresse

+
+

Ajoutez des suggestions selon le guide, il n'y a pas d'autres considérations d'accessibilité pour les extensions.

+
+

Panneau d'outils de développement

+
+

Le balisage dans la barre latérale doit être conforme aux conforme aux directives d'accessibilité du Web standard.

+ +

Il est recommandé d'offrir un raccourci clavier pour ouvrir un panneau devtools.

+
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 +--- +
{{AddonSidebar}}
+ +
+

Les notifications vous permettent d'afficher des informations sur votre extension ou son contenu en utilisant le système d'exploitation sous-jacent

+ +

+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. + +

Spécification des notifications

+ +

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 :

+ +
"permissions": ["notifications"]
+ +

Vous utilisez ensuite {{WebExtAPIRef("notifications.create")}} pour créer vos notifications, comme dans cet exemple de notify-link-clicks-i18n :

+ +
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
+});
+ +

Ce code crée une notification avec un icône, un titre et un message.

+ +

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:

+ +
browser.notifications.onClicked.addListener(handleClick);
+
+ +

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é.

+ +

Icônes

+ +

Pour plus d'informations sur la création d'icônes à utiliser avec votre notification, reportez-vous à la section Iconography dans la documentation Photon Design System.

+ +

Exemples

+ +

Le dépôt webextensions-examples sur GitHub contient plusieurs exemples de WebExtensions qui utilise la création de notifications :

+ + +
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 +--- +
{{AddonSidebar()}}
+ +

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é.

+ +

Example showing the result of the firefox_code_search WebExtension's customization of the address bar suggestions.

+ +

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.

+ +

Spécification de la personnalisation Omnibox

+ +

Vous dites à votre extension qu'il va personnaliser les suggestions de la barre d'adresse en incluant la clé omnibox et la définition du mot-clé de déclenchement dans son fichier manifest.json :

+ +
  "omnibox": { "keyword" : "cs" }
+ +

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 :

+ +
browser.omnibox.setDefaultSuggestion({
+  description: `Search the firefox codebase
+    (e.g. "hello world" | "path:omnibox.js onInputChanged")`
+});
+ +
+

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 :

+ +
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);
+});
+ +

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.

+ + +

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:

+ +
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;
+  }
+});
+ + +

Exemples

+ +

Le depot webextensions-examples sur GitHub contient plusieurs exemples de WebExtensions qui utilise la personnalisation de omnibox

+ + +
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 +--- +
{{AddonSidebar}}
+ +
+

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:

+ +

{{EmbedYouTube("eODy24csH5M")}}

+ +

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.

+ +

Vous pouvez ouvrir la page en programmant en appelant  runtime.openOptionsPage().

+ +

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 eval(). Voir la politique de sécurité de contenu pour plus de détails.

+ +

Spécification de la page d'options

+ +

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 favourite-colour, comprend un fichier :

+ +
<!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>
+ +

JavaScript en cours d'exécution dans la page peut utiliser toutes les APIs des WebExtension auxquelles l'extension a des permissions. En particulier, vous pouvez utiliser l'API storage pour conserver les préférences.

+ +

Insérez les fichiers de la page dans votre extension.

+ +

Vous devez également inclure une clé options_ui dans votre fichier manifest.json, en lui donnant l'URL de la page.

+ +
"options_ui": {
+  "page": "options.html",
+  "browser_style": true
+},
+ +
+

Note: Google Chrome et Opera utilisent chrome_style au lieu de browser_style, donc si vous souhaitez les prendre en charge, vous devez ajouter les deux clés.

+
+ +

Voir la page options_ui pour les options de partage entre votre page d'options et les scripts d'arrière-plan ou de contenu.

+ +

Options de conception de contenu

+ +

Pour plus de détails sur la façon de concevoir le contenu de vos options en fonction du style de Firefox, voir le system de conception Photon et les styles de navigateur documentation.

+ +

Exemples

+ +

Le depot webextensions-examples sur GitHub contient plusieurs exemples de WebExtensions qui utilisent les options de page :

+ + +
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 +--- +
{{AddonSidebar}}
+ +

Généralement appelée action de page, 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.

+ +

+ +

Actions de pages et actions du navigateur

+ +

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).

+ +

Les différences sont :

+ + + +

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 :

+ + + + + + + + + + + + + + + + + + + + + + + + +
TypeBookmarks actionContent actionTabs operation
page actionBookmark this pageReddit enhancementSend tab
browser actionShow all bookmarksEnable ad-blockingSync all open tabs
+ + + +

Spécification de l'action de la page

+ +

Vous définissez les propriétés de la clé de l'action de page dans le manifest.json:

+ +
"page_action": {
+  "browser_style": true,
+  "default_icon": {
+    "19": "button/geo-19.png",
+    "38": "button/geo-38.png"
+  },
+  "default_title": "Whereami?",
+}
+ +

La seule clé obligatoire est default_icon.

+ +

Il y a deux façons de spécifier une action de page : avec ou sans popup.

+ + + +

Notez que votre extension ne peut avoir qu'une seule page action.

+ +

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 pageAction.

+ +

Icônes

+ +

Pour plus de détails sur la création d'icônes à utiliser avec l'action de votre page, voir   Iconography dans la documentation du Photon Design System.

+ + + +

Exemples

+ +

Le dépôt webextensions-examples sur GitHub contient plusieurs exemples de WebExtensions qui utilisent la page action :

+ + 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 +--- +
{{AddonSidebar()}}
+ +

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.

+ +

Example of a simple bundled page displayed as a detached panel.

+ +

Ces pages ont également accès aux mêmes API JavaScript privilégiées qui sont disponibles pour les scripts d’arrièreplan de votre extension, mais elles sont dans leur propre onglet, leur propre file d’attente d’événements JavaScript, leurs propres globales etc.

+ +

Pensez à la page d'arrière-plan comme une « page cachée d’extension ».

+ +

Spécification des pages d’extension

+ +

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.***

+ +
/my-extension
+    /manifest.json
+    /my-page.html
+    /my-page.js
+ +

Affichage des pages d’extension

+ +

Il existe deux options pour afficher des pages d'extension :  {{WebExtAPIRef("windows.create()")}} et {{WebExtAPIRef("tabs.create()")}}.

+ +

À l’aide de windows.create(), 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 :

+ +
var createData = {
+  type: "detached_panel",
+  url: "panel.html",
+  width: 250,
+  height: 100
+};
+var creating = browser.windows.create(createData);
+ +

Lorsque la fenêtre n'est plus nécessaire, elle peut être fermée par programme.

+ +

Par exemple, après que l’utilisateur a cliqué sur un bouton, en passant l’ID de la fenêtre actuelle à {{WebExtAPIRef("windows.remove()")}} :

+ +
document.getElementById("closeme").addEventListener("click", function(){
+  let winId = browser.windows.WINDOW_ID_CURRENT;
+  let removing = browser.windows.remove(winId);
+});
+ +

Pages d’extension et historique

+ +

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 :

+ +
function onVisited(historyItem) {
+  if (historyItem.url == browser.extension.getURL(myPage)) {
+    browser.history.deleteUrl({url: historyItem.url});
+  }
+}
+
+browser.history.onVisited.addListener(onVisited);
+ +

Pour utiliser l’API historique, vous devez demander la permission « history » dans votre fichier manifest.json.

+ +

Conception des pages Web

+ +

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 système de conception Photon et les styles de navigateur.

+ +

Exemples

+ +

Le dépôt webextensions-examples sur GitHub contient plusieurs exemples de WebExtensions qui utilise une action de navigateur :

+ + 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 +--- +
{{AddonSidebar}}
+ +
+

Cette fonctionnalité deviendra disponible dans Firefox 54.

+
+ +

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.

+ +

Simple example showing the addition of "My panel" to the Developer Tools tabs.

+ +

Spécification d'un panneau d'outils de développement

+ +

Un panneau d'outils de développement est ajouté à l'aide de l'API devtools.panels, qui, à son tour, doit être exécutée à partir d'une page spéciale devtools.

+ +

Ajoutez la page devtools en incluant la clé devtools_page dans l'extension manifest.json et fournissez l'emplacement du fichier de la page HTML dans l'extension :

+ +
"devtools_page": "devtools-page.html"
+ +

Dans la page des devtools, appelez un script qui ajoutera un panneau dans devtools:

+ +
<body>
+  <script src="devtools.js"></script>
+</body>
+ +

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:

+ +
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);
+});
+ +

L'extension peut maintenant exécuter un code dans la fenêtre inspectée à l'aide de devtools.inspectedWindow.eval() 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'Extension des outils de développement.

+ +

Conception du panneau de développement

+ +

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 Photon Design System.

+ +

Icônes

+ +

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 Photon Design System.

+ + + +

Exemples

+ +

Le depot webextensions-examples sur GitHub contient plusieurs exemples de WebExtensions qui utilisent les panneaux devtools:

+ + 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 +--- +
{{AddonSidebar}}
+ +
+

Une fenêtre contextuelle est une boîte de dialogue associée à un bouton de la barre d'outils ou à un bouton de la barre d'adresse. 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..

+ +

+ +

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 window.close() à 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.

+ +

Vous pouvez définir un raccourci clavier qui ouvre la fenêtre contextuelle en utilisant les raccourcis "_execute_browser_action" et "_execute_page_action". Consultez la clé de commande  de la documentation du manifest.json.

+ +

Spécification d'une fenêtre contextuelle

+ +

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 APIs WebExtension auxquelles l'extension possède des permissions.

+ +

Le fichier HTML est inclus dans la WebExtension et spécifié en partie à la clé browser_action ou page_action par "default_popup" dans le manifest.json :

+ +
  "browser_action": {
+    "default_icon": "icons/beasts-32.png",
+    "default_title": "Beastify",
+    "default_popup": "popup/choose_beast.html"
+  }
+ +

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 "browser_style": true dans la clé browser_action ou page_action.

+ +

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 eval(). Voir la politique de sécurité du contenu  pour plus de détails à ce sujet.

+ +

Déboguer des fenêtres pop-up

+ +

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. En savoir plus sur le débogage des fenêtres pop-up.

+ +

Redimensionnement contextuel

+ +

Le redimensionnement automatique des fenêtres contextuelles correspond à leur contenu.
+ L'algorithme pour cela peut être différent d'un navigateur à l'autre.

+ +

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 <body>.

+ +

Pour le mode quirks, c'est l'élément <html>. 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 800x600 pixels au maximum si cela correspond à l'écran de l'utilisateur. (Avant Firefox 60, c'était seulement 680px.) . Si l'utilisateur déplace le bouton du complément dans le menu 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.

+ +

Dans Firefox Android 57, la popup s'ouvre comme une page web dans un nouvel onglet.

+ +

Design de la popup

+ +

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 Photon Design System.

+ +

Exemples

+ +

Le dépôt webextensions-examples sur GitHub contient plusieurs exemples de WebExtensions qui utilisent l'action du navigateur :

+ + +
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 +--- +
{{AddonSidebar}}
+ +

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 :

+ +

Améliorer ou compléter un site web : 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.

+ +

+ +

Exemples: Amazon Assistant for Firefox, OneNote Web Clipper, and Grammarly for Firefox

+ +

Laissez les utilisateurs montrer leur personnalité : 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 add-ons de thème.

+ +

+ +

Exemples: MyWeb New Tab, Tabliss, et VivaldiFox

+ +

Ajouter ou supprimer du contenu de pages web : 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.

+ +

+ +

Exemples : uBlock Origin, Reader, et Toolbox for Google Play Store™

+ +

Ajout d'outils et de nouvelles fonctionnalités de navigation: 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 APIs WebExtensions, 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.

+ +

+ +

Exemples: QR Code Image Generator, Swimlanes for Trello, et Tomato Clock

+ +

Jeux : 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.)

+ +

+ +

Exemples: Asteroids in Popup, Solitaire Card Game New Tab, et 2048 Prime.

+ +

Ajouter des outils de développement : 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.

+ +

+ +

Exemples: Web Developer, Web React Developer Tools, et aXe Developer Tools

+ +

Les Extensions pour Firefox sont construites à l'aide d'APIs WebExtensions, un système multi-navigateur pour développer des extensions. De manière générale, L'API est compatible avec l' API d'extension 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 changements. L'API est également entièrement compatible avec Firefox multi-processus.

+ +

Si vous avez des idées ou des questions, ou si vous avez besoin d'aide pour migrer un module complémentaire hérité vers les API WebExtensions, vous pouvez nous contacter via la  la mailing-liste dev-addons ou dans le room des add-ons sur Matrix.

+ +

 Pour aller plus loin?

+ + 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 +--- +

{{AddonSidebar}}

+ +

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.

+ + + +

Permissions

+ +

Pour utiliser l'API Bookmarks, vous devez demander la permission "bookmarks" dans le fichier manifest.json de votre extension

+ +
"permissions": [
+  "bookmarks"
+],
+ +

Caractéristiques

+ +

L'API Bookmarks permet à votre extension de faire ce que les utilisateurs peuvent faire avec les signets et inclut des fonctions pour :

+ + + +

Exemple de procédure pas à pas

+ +

Pour comprendre comment utiliser l'API Bookmarks, jetons un coup d'œil à l'exemple  bookmark-it. 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.

+ +

Cette vidéo montre l'extension en action :

+ +

{{EmbedYouTube("hCDN0FotiFw")}}

+ +

manifest.json

+ +

Le manifest.json décrit l'extension :

+ +
{
+  "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",
+ + + +

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.

+ + + +
  "icons": {
+    "48": "icons/bookmark-it.png",
+    "96": "icons/bookmark-it@2x.png"
+  },
+ +

Demande des permissions. "bookmarks" est demandé pour permettre l'utilisation de l'API Bookmarks. Des "onglets" 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.

+ +
  "permissions": [
+    "bookmarks",
+    "tabs"
+  ],
+ +

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.

+ +
  "browser_action": {
+    "default_icon": "icons/star-empty-38.png",
+    "default_title": "Bookmark it!"
+  },
+ +

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.

+ +
  "background": {
+    "scripts": ["background.js"]
+  }
+
+}
+ +

background.js

+ +

Comme pour tout script d'arrière-plan, background.jsest exécuté dès que l'extension est démarrée. Initialement, le script appelle updateActiveTab() qui commence par obtenir l'objet Tabs pour l'onglet en cours, en utilisant {{WebExtAPIRef("tabs.query")}}, et en passant l'objet à updatetab() avec ce code :

+ +
  var gettingActiveTab = browser.tabs.query({active: true, currentWindow: true});
+  gettingActiveTab.then(updateTab);
+ +

updatetab() passe d'abord l'URL de l'onglet actif à isSupportedProtocol():

+ +
  function updateTab(tabs) {
+    if (tabs[0]) {
+      currentTab = tabs[0];
+      if (isSupportedProtocol(currentTab.url)) {
+ +

isSupportedProtocol() 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 HTMLHyperlinkElementUtils by adding the tab’s URL to an <a> element and then getting the protocol using the protocol property.

+ +
  function isSupportedProtocol(urlString) {
+    var supportedProtocols = ["https:", "http:", "ftp:", "file:"];
+    var url = document.createElement('a');
+    url.href = urlString;
+    return supportedProtocols.indexOf(url.protocol) != -1;
+  }
+ +

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 updateIcon():

+ +
      var searching = browser.bookmarks.search({url: currentTab.url});
+      searching.then((bookmarks) => {
+        currentBookmark = bookmarks[0];
+        updateIcon();
+ +

updateIcon() 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.

+ +
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
+  });
+}
+ +

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 toggleBookmark() lorsque cela se produit.

+ +
browser.browserAction.onClicked.addListener(toggleBookmark);
+ +

toggleBookmark() utilise le résultat de la recherche effectuée par updateTabs(), 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.

+ +
function toggleBookmark() {
+  if (currentBookmark) {
+    browser.bookmarks.remove(currentBookmark.id);
+  } else {
+    browser.bookmarks.create({title: currentTab.title, url: currentTab.url});
+  }
+}
+ +

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.

+ +
// listen for bookmarks being created
+browser.bookmarks.onCreated.addListener(updateActiveTab);
+
+// listen for bookmarks being removed
+browser.bookmarks.onRemoved.addListener(updateActiveTab);
+ +

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.

+ +
// 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);
+ +

Apprendre encore plus

+ +

Si vous voulez en savoir plus, consultez la référence de l'API Bookmarks.

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 +--- +
{{AddonSidebar()}}
+ +

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 :

+ + + +

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.

+ +

Téléchargement de fichiers avec l'API de téléchargement

+ +

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 :

+ +
browser.downloads.download({ url : ‘https://example.org/image.png’ })
+ +

Vous pouvez laisser l'utilisateur télécharger à un endroit de son choix en précisant le paramètresaveAs.

+ +
+

En utilisant URL.createObjectURL(), vous pouvez également télécharger des fichiers et des blobs définis dans votre JavaScript, y compris le contenu local extrait de IndexedDB.

+
+ +

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.

+ +

Pour utiliser cette API, vous devez avoir les permissions API "downloads" spécifiées dans votre fichier manifest.json.

+ +

Exemple : Latest download
+ API référence : downloads API

+ +

Ouverture de fichiers dans une extension avec un sélecteur de fichiers

+ +

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 file de l'élément input 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 DOM File API, de la même manière qu'une application web.

+ +

Exemple : Imagify
+ Guide : Using files from web applications
+ API références : HTML input element | DOM File API

+ +
+

Si vous souhaitez accéder ou traiter tous les fichiers dans un dossier sélectionné, vous pouvez le faire en utilisant <input type="file" webkitdirectory="true"/>pour sélectionner le dossier et récupérer tous les fichiers qu'il contient.

+
+ +

Ouverture de fichiers dans une extension avec glisser-déposer

+ +

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 dragenter (entrer), dragover (glisser), et drop  (déposer). 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 DataTransfer.files. Votre code peut alors accéder aux fichiers et les traiter en utilisant le DOM File API.

+ +

Exemple : Imagify
+ Guides : Using files from web applications | File drag and drop
+ API référence : DOM File API

+ +

Enregistrement de fichiers de données localement avec la bibliothèque de stockage de fichiers IndexedDB

+ +

Si votre extension doit enregistrer des fichiers localement, idb-file-storage library fournit une simple enveloppe de IndexedDB API pour faciliter le stockage et la récupération des fichiers et des blobs .

+ +

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.)

+ +

Les principales caractéristiques de la bibliothèque sont les suivantes :

+ + + +

L'exemple Store Collected Images illustre comment utiliser la plupart de ces fonctionnalités. (IDBMutableFile n'est pas inclus, mais vous pouvez trouver des exemples dans le idb-file-storage examples ainsi qu'un certain nombre d'autres exemples de la bibliothèque en action).

+ +

L'exemple Store Collected Images 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. Voir l'exemple en action.

+ +

Le fonctionnement de la bibliothèque peut être compris en regardant image-store.js dans /utils/ :

+ +

Création du stockage et enregistrement des images

+ +
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);
+ }
+}
+ +

saveCollectedBlobs 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, getFileStorage 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 storedImages. storedImages.put 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 utilisantimagesStore.list() 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.

+ +

Récupération des images stockées pour l'affichage

+ +
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;
+}
+
+ +

loadStoredImages est appelé lorsque l'utilisateur clique sur la vue ou la recharge dans la page de navigation de la collection. getFileStorage ouvre la base de données "images stockées", puis imagesStore.listobtient une liste filtrée des images stockées. Cette liste est ensuite utilisée pour récupérer des images avec imagesStore.get et créer une liste retournée à l'interface utilisateur.

+ +

Notez l'utilisation de URL.createObjectURL(blob) pour créer une URL qui fait référence au blob image. Cette URL est ensuite utilisée dans l'interface utilisateur (navigate-collection.jscollection.js) pour afficher l'image.

+ +

Suppression d'images collectées

+ +
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);
+ }
+}
+
+ +

removeStoredImages est appelé lorsque l'utilisateur clique sur "Delete" (supprimer) dans la page de navigation de la collection. À nouveau, getFileStorageouvre la base de données “stored-images”  et imagesStore.remove supprime chaque image à partir de la liste filtrée des images.

+ +

Notez l'utilisation de URL.revokeObjectURL() 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.

+ +

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 SRC d'un IMG 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.

+ +

Exemple : Store Collected Images
+ API Référence :  idb-file-storage library

+ +
+

Note: Vous pouvez également utiliser l' IndexedDB API 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 Storage API.

+
+ +

Traitement de fichiers dans une application locale

+ +

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.

+ +

Vous avez deux options :

+ + + +

Pour ajouter le fichier ou le blob, vous souhaitez que l'application native utilise JSON.stringify().

+ +

Pour utiliser cette méthode, l'extension doit demander la permission "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".

+ +

Exemple : Native Messaging (illustre simplement une messagerie)
+ Guide : Native messaging
+ API référence : runtime API

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 +--- +
{{AddonSidebar}}
+ +
+

Si vous connaissez déjà les concepts de base des extensions de navigateur, passez cette section pour voir comment les fichiers d'extension sont assemblés. Ensuite, utilisez la documentation de référence pour commencer la construction de votre extension. Visitez l'atelier sur les extensions de Firefox pour en savoir plus sur le flux de travail pour le test, la publication et les extensions Firefox.

+
+ +

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.

+ +

Le code source de cet exemple est disponible sur GitHub : https://github.com/mdn/webextensions-examples/tree/master/borderify.

+ +

Pour commencer, il vous faut Firefox version 45 ou supérieure.

+ +

Ecriture de l'extension

+ +

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 :

+ +
mkdir borderify
+cd borderify
+ +

manifest.json

+ +

Créez un nouveau fichier nommé "manifest.json" directement dans le répertoire "borderify" et tapez-y le contenu suivant :

+ +
{
+
+  "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"]
+    }
+  ]
+
+}
+ + + +

La clé la plus intéressante ici est content_scripts, 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.

+ + + +
+

Dans certaines situations, vous devez établir un ID pour votre extension. Si vous avez besoin d'établir un ID pour votre extension, incluez la clé browser_specific_settings dans manifest.json et définissez sa propriété gecko.id :

+ +
"browser_specific_settings": {
+  "gecko": {
+    "id": "borderify@example.com"
+  }
+}
+
+ +

icons/border-48.png

+ +

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".

+ +

Créons le répertoire "icons" directement sous le répertoire "borderify". Fournissez une icône nommée "border-48.png".  Vous pouvez utiliser celle-ci, qui est tirée du repértoire d'icônes Google Material Design, et est utilisable à condition de respecter les termes de la license Creative Commons Attribution-ShareAlike.

+ +

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é 96 de l'objet icon dans le fichier "manifest.json" :

+ +
"icons": {
+  "48": "icons/border-48.png",
+  "96": "icons/border-96.png"
+}
+ +

Une alternative est de fournir un fichier SVG qui sera automatiquement mis à la bonne échelle.

+ + + +

borderify.js

+ +

Enfin, créez un fichier nommé "borderify.js" directement dans le répertoire "borderify" et insérez-y ceci :

+ +
document.body.style.border = "5px solid red";
+ +

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é content_scripts du manifest.json. Ce script a un accès direct au document contrairement à des scripts chargés par la page elle-même.

+ + + +

Essai

+ +

D'abord, vérifiez de nouveau que les bons fichiers sont au bon endroit :

+ +
borderify/
+    icons/
+        border-48.png
+    borderify.js
+    manifest.json
+ +

Installation

+ +

Dans Firefox : Ouvrez la page about:debugging, 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.

+ +

{{EmbedYouTube("cer9EUKegG4")}}

+ +

Le module complémentaire est dorénavant installé et résidera jusqu’à ce que vous redémarriez Firefox.

+ +

Une autre alternative est d’exécuter la WebExtension depuis la ligne de commande à l'aide de l'outil web-ext.

+ +

Test

+ +

Rendez-vous sur une page web du domaine "mozilla.org". Vous devriez y voir une bordure rouge qui entoure la page :

+ +

{{EmbedYouTube("rxBQl2Z9IBQ")}}

+ +
+

Toutefois, n'essayez pas ce module sur addons.mozilla.org ! Les content scripts sont bloqués sur ce domaine.

+
+ +

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 :

+ +

{{EmbedYouTube("NuajE60jfGY")}}

+ + + +

Empaqueter et publier

+ +

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 "Publier votre extension".

+ +

Et ensuite ?

+ +

Maintenant, vous avez eu une introduction au processus de développement d'une WebExtension pour Firefox :

+ + 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 +--- +
{{AddonSidebar}} +

Si vous avez lu l'article votre première extension, vous avez déjà une idée de la manière d'écrire une extension. Dans cet article, nous allons écrire une extension légèrement plus complexe qui illustre un peu plus les API.

+ +

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.

+ +

Pour implémenter ce module, il nous faut :

+ + + +

Voici une visualisation globale possible de la structure du module :

+ +

+ +

C'est une simple extension mais qui démontre plusieurs concepts élémentaires de l'API des WebExtensions :

+ + + +

Le code source complet du module est disponble sur GitHub.

+ +

Afin d'écrire cet extension, il nous faut Firefox 45 ou plus récent.

+ +

Ecriture de l'extension

+ +

Créez un nouveau répertoire et positionnez vous dedans :

+ +
mkdir beastify
+cd beastify
+ +

manifest.json

+ +

Créez un nouveau fichier nommé "manifest.json" directement dans le répertoire "beastify" et tapez-y le contenu suivant :

+ +
{
+
+  "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"
+  ]
+
+}
+
+ + + +

Il est à noter que tous les chemins sont relatifs au fichier manifest.json.

+ +

L'icône

+ +

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".

+ +

Créer le répertoire "icons" et enregistrez-y une icône nommée "beasts-48.png".  Il vous est possible d'en utiliser une de notre exemple, provenant du jeu d'icônes de Aha-Soft’s Free Retina et utilisable selon les termes de sa license.

+ +

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é 96 de l'objet icon du manifest.json :

+ +
"icons": {
+  "48": "icons/beasts-48.png",
+  "96": "icons/beasts-96.png"
+}
+ +

Le bouton de la barre d'outils

+ +

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.

+ +

Enregistrez une icône nommée "beasts-32.png" dans le répertoire "icons". Il vous est possible d'en utiliser une de notre exemple, provenant du jeu d'icône IconBeast Lite icon et utilisable selon les termes de sa license.

+ +

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à.

+ +

La popup

+ +

La but de la popup est de permettre à l'utilisateur de choisir une des trois bêtes.

+ +

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 :

+ + + +

choose_beast.html

+ +

Voici le contenu du fichier 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>
+ +

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.

+ +

choose_beast.css

+ +

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 :

+ +
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;
+}
+
+ +

choose_beast.js

+ +

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 :

+ +
/*
+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();
+  }
+});
+
+ +

Ce script utilise trois fonctions de l'API WebExtension :

+ + + +

Le content script

+ +

Créez un nouveau répertoire sous la racine du module nommé "content_scripts" et créez un nouveau fichier nommé "beastify.js", contenant :

+ +
/*
+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);
+
+ +

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 :

+ + + +

Les bêtes

+ +

Enfin, nous devons inclure les images d'animaux.

+ +

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 dépôt GitHub, ou bien ci-après :

+ +

+ +

Test

+ +

D'abord, vérifiez de nouveau que les bons fichiers sont au bon endroit :

+ +
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
+ +

A partir de Firefox version 45, il est possible d'installer les WebExtensions temporairement.

+ +

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 :

+ +

{{EmbedYouTube("sAM78GU4P34")}}

+ +

Ouvrez une page web et cliquez sur l'icône, sélectionnez une bête et observez la page web se modifier :

+ +

{{EmbedYouTube("YMQXyAQSiE8")}}

+ +

Développement depuis la ligne de commande

+ +

Il est possible d'automatiser l'installation temporaire de modules, étape par étape en utilisant l'outil web-ext tool. Essayez ainsi :

+ +
cd beastify
+web-ext run
+
+ +

Quelle est la prochaine étape ?

+ +

Vous avez maintenant créé une extension Web avancée pour Firefox :

+ + 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 +--- +

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.

+ +

Améliorer les performances au chargement

+ +

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.

+ +

Chargez uniquement ce dont vous avez besoin, quand vous en avez besoin

+ +

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é.

+ +

Utilisez les modules de code JavaScript

+ +

Vous pouvez créer vos propres JavaScript code modules 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.

+ +

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.

+ +

Defer everything that you can

+ +

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.

+ +

If there is anything 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.

+ +

Astuces de performances générales

+ +

Evitez de créer des fuites de mémoires

+ +

Memory leaks require the garbage collector and the cycle collector to work harder, which can significantly degrade performance.

+ +

Zombie compartments are a particular kind of memory leak that you can detect with minimal effort.  See the Zombie compartments page, especially the Proactive checking of add-ons section.

+ +

See Common causes of memory leaks in extensions for ways to avoid zombie compartments and other kinds of leaks.

+ +

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, bug 719601 featured a "System Principal" JavaScript compartment containing 100s of MBs of memory, which is much larger than usual.

+ +

Evitez d'écrire des CSS lents

+ + + +

Avoid DOM mutation event listeners

+ +

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 there are many alternatives, they should be avoided at all costs.

+ +

Lazily load services

+ +

The XPCOMUtils JavaScript module provides two methods for lazily loading things:

+ + + +

Beaucoup de services commun sont dàja en cache dans Services.jsm.

+ +

Utilisez les E/S asynchrones

+ +

Ne jamais faire E/S synchrone dans le thread principal.

+ +

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.

+ + + +

Evitez les évenements de mouvement de la souris

+ +

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.

+ +

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.

+ +

Evitez les images animées

+ +

Animated images are much more expensive than generally expected, especially when used in XUL {{ XULElem("tree") }} elements..

+ +

Considérez l'utilisation des Chrome Workers

+ +

Vous pouvez utiliser {{ domxref("ChromeWorker") }} pour executer de longues tâches ou du traitement de données.

+ +

Voir aussi

+ + 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 +--- +

bugzilla.mozilla.org (souvent abrégé b.m.o) est un système de suivi des bugs de Mozilla.org, une base de données pour enregistrer les bugs et les demandes d'améliration pour Firefox, Thunderbird, SeaMonkey, Camino, et d'autres projets de mozilla.org.

+ +
+
+

Documentation à propos B.m.o.

+ +
+
What to do and what not to do in Bugzilla
+
Des conseils sur la façon d'utiliser Bugzilla, ainsi que des choses que vous devriez éviter.
+
Bugzilla etiquette
+
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.
+
Comment savoir si un bug a déjà été signalé
+
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.
+
Assurance qualité
+
Documentation sur l'assurance qualité chez Mozilla.
+
Recommandations pour l'écriture de bug
+
A guide to writing a good, understandable, bug that will be easily followed by the development team.
+
Comment soumettre un patch
+
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!
+
+ +

View All...

+
+ +
+

Obtenir de l'aide de la communauté

+ +

You need help on a CSS-related problem and can't find the solution in the documentation?

+ + + +

N'oubliez pas la netiquette pour poser vos questions…

+ + + + + +

Outils

+ +
    +
  • Bugzilla Todos lists review and flag requests, patches to check in, unfulfilled requests you made of other people, and assigned bugs.
  • +
+
+
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 +--- +

{{FirefoxSidebar}}

+ +

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 Maj + F2

+ +

Règles de syntaxe

+ +

Commençons par décrire les règles syntaxiques applicables à toutes les options.

+ + + +

Utilisation des options de ligne de commande

+ +

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 :

+ +
application -option -option "paramètre" -option paramètre
+ +

Exemples

+ +

Les exemples qui suivent montrent l'usage de l'option « -ProfileManager », qui ouvre le gestionnaire de profils avant de démarrer Firefox ou Thunderbird :

+ +

Windows

+ +

Sélectionner « Exécuter » depuis le « Menu démarrer ». Puis taper :

+ +
firefox -ProfileManager
+
+ +

Mac OS X

+ +

Aller à « Applications > Utilitaires > Ouvrir un terminal » et taper :

+ +
cd /Applications/Firefox.app/Contents/MacOS
+./firefox -ProfileManager
+
+ +

Linux

+ +

Ouvrir un terminal (invite de commandes) et taper :

+ +
cd Thunderbird installation directory
+./thunderbird -ProfileManager
+
+ +

L'exemple ci-dessus appelle l'option « -ProfileManager » pour Mozilla Thunderbird.

+ +

Profil utilisateur

+ +

-allow-downgrade

+ +

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 .

+ +

-CreateProfile nom_du_profil

+ +

Crée un nouveau profil dans le dossier par défaut sans démarrer l'application. Le profil s'appellera  nom_du_profil dans le gestionnaire de profils. nom_du_profil 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 -no-remote doit être utilisée.

+ +
firefox -CreateProfile UtilisateurJoel
+
+ +

-CreateProfile "nom_du_profil nom_du_dossier"

+ +

Crée un nouveau profil dans le dossier nom_du_dossier sans démarrer l'application. Le profil s'appellera  nom_du_profil dans le gestionnaire de profils. Attention : nom_du_profil et nom_du_dossier sont encadrés ensemble par des guillemets droits anglais et sont séparés par une seule espace (comme précédemment, nom_du_profil 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 -no-remote doit être utilisée.

+ +
+

Note : nom_du_dossier doit exister et il ne doit pas déjà exister de profil appelé nom_du_profil.

+
+ +
firefox -CreateProfile " UtilisateurJoel c:\internet\utilisateurjoel-moz-profil"
+
+ +

-migration

+ +

Démarre avec l'assistant d'importation.

+ +

-new-instance

+ +

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.

+ +
firefox -no-remote -P "un autre profil"
+ +
+

Note: non disponible pour Windows, voir {{bug(855899)}}.

+
+ +

-no-remote

+ +

N'accepte pas ni n'envoie de commandes distantes. Implique -new-instance.

+ +
firefox -no-remote -P "un autre profil"
+ +
+

Note : 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.

+
+ +

-override /chemin/vers/override.ini

+ +

Charge le fichier override.ini spécifié pour outrepasser application.ini ({{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’override.ini qui suit. Uniquement pour Firefox.

+ +
[XRE]
+EnableProfileMigrator=0
+ +

-ProfileManager

+ +

Lance le gestionnaire de profils. Abréviation : -P sans nom de profil.

+ +

-P "nom_du_profil"

+ +

Outrepasse le gestionnaire de profils et lance l'application avec le compte nom_du_profil. Ceci est utile pour gérer plusieurs profils. Attention ! La chaîne nom_du_profil 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.

+ +
firefox -P "Utilisateur Joel"
+
+ +

-profile "chemin_du_profil"

+ +

Démarre avec le profil fourni depuis le chemin spécifié. Seulement pour Firefox, Thunderbird et SeaMonkey 2.x.

+ +

"chemin_du_profil" peut aussi bien être un chemin absolu ("/chemin/du/profil")  que relatif ("/chemin/du/profil").

+ +
Note : 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) }}.
+ + + +

-browser

+ +

Démarre le navigateur. Seulement pour Firefox et SeaMonkey.

+ +

-url URL

+ +

Ouvre l'URL dans un nouvel onglet ou une nouvelle fenêtre, dépendant de l'absence ou de la présence de l'option browser. -url peut être omis. Vous pouvez charger plusieurs URL, separées par des espaces. Pour Firefox et SeaMonkey seulement.

+ +
Note : quand vous ouvrez plusieurs URL, Firefox les ouvre dans des onglets d'une seule nouvelle fenêtre.
+ +
firefox www.mozilla.com
+firefox www.mozilla.com developer.mozilla.org
+
+ +

-private

+ +

Ouvre Firefox en « fenêtre privée » de manière permanente. Pour Firefox 3.6 et ultérieur.

+ +

Pourrait ne pas fonctionner pour Firefox 20 et précédents sous Ubuntu. Fonctionnement correct confirmé sous Ubuntu 14.04.

+ +

-private-window

+ +

Ouvre Firefox en « fenêtre privée » dans une instance déja en cours. Pour Firefox 20 et ultérieur.

+ +

-private-window URL

+ +

Ouvre l'URL dans une nouvelle « fenêtre privée ». Si une fenêtre privée est déja ouverte, ouvre un nouvel onglet. Firefox 29 et ultérieur seulement. Non fonctionnel pour Firefox 31 sous Linux Mint 17 (qui ouvre l'URL dans une fenêtre normale).

+ +

-new-tab URL

+ +

Ouvre l'URL dans un nouvel onglet. Firefox et SeaMonkey2.x seulement.

+ +

-new-window URL

+ +

Ouvre l'URL dans une nouvelle fenêtre. Firefox et SeaMonkey2.x seulement.

+ +

-search Mot

+ +

Recherche Mot avec le moteur de recherche par défaut. Firefox et SeaMonkey 2.1 et ultérieur.

+ +

-preferences

+ +

Ouvre la fenêtre des Préférences/Options. Firefox et SeaMonkey2.x seulement.

+ +

-setDefaultBrowser

+ +

Définit l'application comme navigateur par défaut. Firefox seulement.

+ +

-foreground

+ +

Fait de l'instance l'application active.

+ +

Courriel/Nouvelles

+ +

-mail

+ +

Démarre le client courriel. Thunderbird et SeaMonkey seulement.

+ +

-news news_URL

+ +

Démarre le client de nouvelles. Si news_URL (optionnel) est spécifié, ouvre le groupe de nouvelles spécifié. Thunderbird et SeaMonkey seulement.

+ +
thunderbird -news news://server/group
+
+ +

-compose options_du_message

+ +

Démarre l'outil de création de courriel. Voyez les régles de syntaxe. Thunderbird et SeaMonkey seulement.

+ +
thunderbird -compose "to=foo@nowhere.net"
+
+ +

-addressbook

+ +

Démarre le carnet d'adresses. Thunderbird et SeaMonkey seulement.

+ +

-options

+ +

Ouvre la fenêtre des Préférences. Thunderbird seulement.

+ +

-offline

+ +

Démarre le logiciel en mode déconnecté. Thunderbird et SeaMonkey seulement.

+ +

-setDefaultMail

+ +

Définit l'application comme client courriel par défaut. Thunderbird seulement.

+ +

Calendrier

+ +

-calendar

+ +

Démarre le client d'agenda. Sunbird seulement.

+ +

-subscribe URL or -url URL

+ +

S'abonne à l'URL. Sunbird seulement.

+ +

-showdate date

+ +

Affiche la date dans l'agenda. Sunbird seulement.

+ +
sunbird -showdate 08/04/2008
+
+ +

Autres composants

+ +

-editor URL or -edit URL

+ +

Démarre avec l'éditeur (compositeur) pour l'URL spécifiée (URL est optionnel). SeaMonkey seulement.

+ +
seamonkey -edit www.mozilla.org
+
+ +

-jsdebugger

+ +

Démarre l'application avec Browser Toolbox (auparavant Browser Debugger). Ce débogueur est différent du Venkman (voyez l'option -venkman).

+ +

-jsconsole

+ +

Démarre l'application avec la console d'erreur, ou, dans le cas de Firefox, la console du navigateur.

+ +

-start-debugger-server port

+ +

Firefox seulement. Démarre le serveur du débogueur avec le port. Ceci permet à une autre instance de Firefox de connecter ses outils de développement à l'instance visée. Voyez l'article sur le débogage à distance du bureau Firefox.

+ +

Le paramètre port est optionnel ; par défaut, le port 6000 est utilisé.

+ +

-inspector URL

+ +

Démarre l'inspecteur de DOM (s'il est installé) et inspecte l'URL spécifiée (URL est optionnel).

+ +

-venkman

+ +

Démarre le débogueur JavaScript, Venkman, s'il est installé.

+ +

-purgecaches

+ +

Vide le cache JavaScript de Gecko (le moteur de mise en page). Normalement le cache survit au redémarrage.

+ +

-chat

+ +

Démarre le client de clavardage IRC, ChatZilla, s'il est installé.

+ +

XULRunner

+ +

-app /chemin/vers/application.ini

+ +

Démarre un nouveau processus XULRunner pour l'application se trouvant à chemin/vers. Fonctionne aussi pour Firefox version 3 et ultérieur.

+ +

--register-global

+ +

Inscrit XULRunner avec le système pour tous les usagers. Exige les privilèges admin / root.

+ +

--register-user

+ +

Inscrit XULRunner pour l'utilisateur en cours.

+ +

--unregister-user

+ +

Désinscrit XULRunner pour tous les utilisateurs.

+ +

--unregister-user

+ +

Désinscrit XULRunner pour l'utilisateur en cours.

+ +

--install-app chemin/vers/myapplication.(xpi|xulapp)

+ +

Installe l'application XULRunner se trouvant à chemin/vers sur le système. Les applications sont installées à l'emplacement par défaut du système (program files|Applications|usr/lib) sous nom_du_vendeur/nom_de_l_application. Les applications peuvent être désinstallées par les méthodes habituelles du système.

+ +
"C:\Program Files\Mozilla XULRunner\1.8.0.4\xulrunner\xulrunner.exe" --install-app "C:\Users\Billdo\Desktop\myapplication.xpi"
+ +
/opt/xulrunner/1.8.0.4/xulrunner/xulrunner --install-app ~/Desktop/myapplication.xulapp
+ +
​/Library/Frameworks/XUL.framework/xulrunner-bin --install-app ~/Desktop/myapplication.xpi
+ +

Chrome

+ +

-chrome chrome_URL

+ +

Charge le chrome spécifié.

+ +
firefox -chrome chrome://inspector/content
+
+ +

-register chrome_URL

+ +

Inscrit le chrome spécifié, sans démarrer l'application.

+ +

Modules complémentaires

+ +

{{ 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.") }}

+ +

-install-global-extension /chemin/vers/extension

+ +

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.

+ +

-install-global-theme /chemin/vers/theme

+ +

Installe le thème spécifié. Vous devez disposer des privilèges administratifs.

+ +
+

Note : depuis Firefox 2.0.0.7, les options -install-global-extension et -install-global-theme ne peuvent installer que depuis le stockage local (incluant le stockage réseau monté localement). L'installation directe depuis un stockage réseau échouera.

+
+ +

-safe-mode

+ +

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).

+ +

Locale

+ +

-UILocale locale

+ +

Démarre avec l'interface régionalisée en locale.

+ +
firefox -UILocale en-US
+
+ +

Contrôle à distance

+ +

-remote remote_command {{deprecated_inline}}

+ +
+

Note : 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 {{ bug(1080319) }}.

+
+ +

Exécute la remote_command spécifiée dans un processus déja actif (voyez contrôle à distance).

+ +
firefox -remote "openURL(www.mozilla.org, new-tab)"
+
+ +
+

Note : cette option n'est disponible que pour les plateformes X-windows Unix.

+
+ +

Divers

+ +

-tray

+ +

Démarre l'application minimisée dans la zone de notification du système. Utile avec le démarrage automatique.

+ +

-silent

+ +

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. Firefox, Thunderbird3.x et SeaMonkey2.x seulement.

+ +

-console

+ +

Démarre l'application avec la console de débogage. Note : Windows seulement.

+ +

-attach-console

+ +

Détourne les messages destinés à la console de débogage vers la fenêtre qui a lancé l'application. Note : Windows seulement.

+ +

-h or -help or -?

+ +

Affiche la liste des options et paramètres disponibles. Sous Windows, cette option ne fonctionne qu'avec une redirection |more ({{ Bug(355889) }}). Cette option n'est disponible qu'en ligne de commande.

+ +

-v or -version

+ +

Affiche la version de l'application. Sous Windows, cette option ne fonctionne qu'avec une redirection |more ({{ Bug(355889) }}). Cette option n'est disponible qu'en ligne de commande.

+ +

-osint

+ +

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) }}).

+ +

-requestPending

+ +

Indique à l'application qu'il y aura une requête DDE (Dynamic Data Exchange, 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) }}).

+ +

options X11

+ +

Ces options ne sont disponibles que pour une application roulant sous le système graphique X11 / X.org (Linux et autres systèmes Unix).

+ +

--display=DISPLAY

+ +

Définit l'affichage X à utiliser.

+ +

--class=WM_CLASS

+ +

Définit WM_CLASS comme étant la classe de ressource X11 des fenêtres créées par l'application.

+ +

--sync

+ +

Rend les appels X synchrones.

+ +

--g-fatal-warnings

+ +

Rend tous les avertissements fatals.

+ +

Autre options restant à documenter

+ + + +

Références

+ + + +
+

Information sur le document d'origine

+ + +
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 +--- +

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.

+ +

{{SubpagesWithSummaries}}

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 +--- +
+

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.

+
+ +

Le processus de soumission est représenté par le diagramme ci-dessous, le tout vous étant expliqué en details à la suite.

+ +

Workflow of submitting a patch: Preparation | Module Ownership | Creating a patch
+| Testing | Getting Reviews | Addressing Review Comments | Committing the Patch

+ +

Préparation

+ +

Tout changement dans le code provient d'un bogue déclaré sur bugzilla.mozilla.org ; sans bogue, le code ne sera pas examiné et sans évaluation, le code ne sera pas accepté. Afin d'éviter tout doublon, choisissez un bogue existant (en) à traiter et s'il n'y en a aucun, soumettez en un (en). 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.

+ +

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 canal IRC des développeurs (en).

+ +

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.

+ +

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.

+ +

Le gestionnaire du module (en : ownership)

+ +

Tout le code est supervisé par un gestionnaire de module (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é.

+ +

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 DXR ou en tapant hg log browser/base/content/browser.js. Le message de vérification correspondant contiendra quelque chose comme "r=nickname", identifiant les éventuels évaluateurs pour le code en question.

+ +

Création d'un paquet (en : patch)

+ +

Les changements du code source de Mozilla sont presentés sous forme de paquets. C'est essentiellement un engagement au contrôle de version.

+ +

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 petits correctifs plus faciles a comprendre (en). Cela faciliterait et fiabiliserait l'évaluation de vos changements, apprendre les évaluations rapides (en) .

+ +
+

Voir Comment générer un paquet (en) pour plus d'informations sur la création de paquets optimisés pour l'évaluation. Voir aussi notre liste de contrôle des évaluateurs (en) pour une liste des meilleures pratiques de présentation du correctif que les évaluateurs vérifient ou exigent.

+
+ +

Les tests

+ +

Tous les changements doivent être testés. Dans la plupart des cas, un test automatique (en) est requis pour tout changement dans le code.

+ +

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 ESLint (en) pour plus d'informations.

+ +

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 serveur de tests de Mozilla. 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.

+ +

Soumission du paquet

+ +
+

Assurez vous de la compatibilité de votre paquet avec les dernières versions de manière à éviter tout conflit.

+
+ +
En tant que contributeur, vous devez utiliser Phabricator pour soumettre vos paquets. Voir le Guide d'utilisation de Phabricator  (en) pour plus d'informations.
+ +

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.

+ +

Obtention de l'évaluation

+ +

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 super-évaluaion(en) supplémentaire.

+ +

Pour plus d'informations à propos du processus d'évaluation, voyez la FAQ dédiée à l'évaluation du code (en). Si vos changements concernent l'interface graphique, allez voir "Les demandes de commentaires et les évaluations concernant l'interface graphique utilisateur de Firefox" (en).

+ +

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.

+ +

Voir la documentation Mozilla Phabricator (en) pour plus de détails.

+ +

Attention !: si l'évaluateur n'a pas repondu au bout d'une semaine environ :

+ + + +

Réponse aux commentaires de l'évaluation

+ +

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.

+ +

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.

+ +

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.

+ +

Si, à un moment donné, le processus d'évaluation s'arrête pendant plus de deux semaines, consultez la section  «Attention» ci-dessus.

+ +

Dans de nombreux projets open-source, les développeurs acceptent les correctifs inachevés, les finissent et les appliquent. Dans la philosophie de Mozilla, le vérificateur va seulement évaluer et commenter le paquet du contributeur. 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.

+ +

Envoi du correctif

+ +

Un paquet peut être envoyé après avoir été proprement corrigé.

+ +
+

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 serveur de tests (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.

+ +

Assurez-vous que le patch est correctement formaté (en) afin de rendre son contrôle aussi facile que possible.

+
+ +

Ajoutez le mot-clé checkin-needed 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é checkin-needed 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 #developers de irc.mozilla.org (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.

+ +

Si vous publiez vous même, suivez les Règles de publication et de responsabilité.
+ Nous recommendons l'utilisation de Lando (en) pour que le code soit automatiquement envoyé.

+ +

Régressions

+ +

Il se pourrait que votre code provoque des régressions fonctionnelles ou une baisse de performance. il y a une politique 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.

+ +

Après la création de quelques correctifs, envisagez d'avoir accès au code source de Mozilla (en).

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 +--- +

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.

+ +
+
+

Documentation

+ +
+
Prise en main
+
Un guide de démarrage pour les nouveaux contributeurs à Mozilla.
+
+ +
+
Travailler avec le code source de Mozilla
+
Un aperçu du code, comment l'obtenir, et le guide du style de codage.
+
Instructions
+
Comment développer Firefox, Thunderbird, SeaMonkey, ou les autres applications Mozilla.
+
Processus de développement
+
Un aperçu de l'ensemble du processus de développement de Mozilla.
+
Gérer plusieurs profils
+
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.
+
Tests automatisés
+
Comment lancer des tests automatisés de Mozilla et en écrire de nouveaux.
+
Soumettre un patch
+
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.
+
Mise à jour de documentation
+
Comment s'assurer que la documentation que vous développez est à jour.
+
Modules
+
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.
+
Extraits de code
+
Exemples de codes dont vous pourriez avoir besoin pour comprendre le fonctionnement de tout un tas de choses.
+
Stratégies de développement Mozilla
+
Conseils pour travailler sur le projet Mozilla.
+
Débogage
+
Conseils et guides pour déboguer le code Mozilla.
+
Performance
+
Guides de performances et utilitaires pour vous aider à mieux coder.
+
Platforme Mozilla
+
Informations sur les travaux de la platforme Mozilla.
+
Ajouter des APIs à l'objet navigateur {{ gecko_minversion_inline("9.0") }}
+
Comment étendre l'objet {{ domxref("window.navigator") }} avec des APIs supplémentaires.
+
Compatibilité d'interface
+
Guides pour la modification des scripts et APIs binaires dans Mozilla.
+
Customiser Firefox
+
Informations sur la création de versions customisées de Firefox.
+
Virtual ARM Linux environment
+
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.
+
Conseils et mises en garde pour les versions obsolètes
+
L'endroit où l'on trouvera des conseils utiles pour développer d'anciennes versions du code (mais pas la dernière version).
+
+
+ +
+

Outils

+ +
+
Bugzilla
+
Base de données Bugzilla utilisée pour le suivi de problèmes sur les projets Mozilla.
+
MXR
+
Parcourir et rechercher le code source référentiel de Mozilla sur le web.
+
DXR
+
Prochaine génération de recherche du code source de Mozilla. En développement actif.
+
Bonsai
+
L'outils Bonsai permet de savoir qui a changé un fichier dans le référentiel et quand.
+
Mercurial
+
Le système de contrôle de version utilisé pour gérer le code source de Mozilla.
+
TBPL (Tinderbox Push Log)
+
Tinderbox Push Log 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.
+
Crash tracking
+
Informations sur Socorro, le système de rapport d'incidents.
+
Performance tracking: Datazilla and Graphs
+
Voir les informations de performance du projet Mozilla.
+
Callgraph
+
Un outil qui aide à réaliser l'analyse statique d'un code Mozilla en générant automatiquement un graphique Callgraph.
+
Forums développeurs
+
Des listes de discussion classées par sujets où les développeurs peuvent échanger sur les problèmes relatifs au développement de Mozilla.
+
Antisèches sur le développement de la plate-forme Mozilla
+
Listes d'informations de Brian Bondy pour les développeurs de la plate-forme.
+
Tutoriels vidéo sur le développement Firefox
+
Tutoriels vidéo de Brian Bondy sur le développement de Firefox.
+
+
+
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 +--- +

mozilla-central est un dépôt Mercurial du code de Mozilla : http://hg.mozilla.org/mozilla-central . 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.

+ +

La page de Tinderbox pour mozilla-central se trouve à http://tinderbox.mozilla.org/showbui...?tree=Mozilla2 .

+ +

{{ 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.") }}

+ +

Règles pour l'arbre mozilla-central

+ +

La base de code mozilla-central doit être stable sur les plateformes principales à tout moment :

+ + + +

Changements dans les API

+ +

En préparation de Mozilla 1.9.1, les règles suivantes sont à respecter pour les changements dans les API :

+ + + +

Ces règles changeront après le branchement de la version 1.9.1.

+ +

Soumission de modifications sur mozilla-central

+ +

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 push sur hg.mozilla.org. Si vous pensez quie vous devriez y avoir accès mais ne connaissez pas vos détails d'identification, ouvrez un bug. Vous pouvez utiliser la commande hg push pour soumettre des changements (changesets) au serveur.

+ + + +

 

+ +

Les copies de NSPR et NSS dans mozilla-central sont soumises à certaines règles particulières.

+ +

Voir également

+ + + +

{{ languages( { "en": "en/Mozilla-central", "es": "es/Mozilla-central", "ja": "ja/Mozilla-central" } ) }}

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 +--- +
+

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..

+
+ +

Bonne citoyenneté sur le web

+ + + +

Correction

+ + + +

Qualité

+ + + +

Style

+ + + +

Problèmes de sécurité

+ + + +

Problèmes de confidentialité

+ + + +

Fuite de ressources

+ + + +

Impact sur les performances

+ + + +

Problèmes de fil

+ + + +

Compatibilité

+ + + +

Préférences

+ + + +

Chaînes de caractères

+ + + +

Documentation

+ + + +

Accessibilité

+ + 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 +--- +

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 instructions pour configurer un environnement de devéloppement 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 VirtualBox (aussi bien que d'autres, y compris VMWare/VMWare Fusion).

+ +

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.

+ +

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

+ +

Installation de VirtualBox

+ +

Visitez la page de téléchargements de VirtualBox et télécharger la dernière version du logiciel pour votre système d'exploitation.

+ +
+

Note: Si vous avez déjà un produit de virtualisation installé, comme VirtualBox, VMWare, ou VMWare Fusion, vous pouvez l'utiliser au lieu de télécharger une nouvelle copie de VirtualBox. Assurez-vous que vous avez la dernière version du logiciel. Notez que Parallels Desktop ne prend pas en charge le format OVF.

+
+ +

Telechargement de la VM

+ +

Ensuite, téléchargez l'environnement de développement de Firefox VM.

+ +

TELECHARGER LA VM

+ +

SHA-256: 1c84eaf97ea2a9a3c990051306a038da9541a450fd600878e7c1f984fa930f35

+ +
+

Note: Ce fichier fait environ 4.4 Go, il peut prendre un certain temps à télécharger.

+
+ +

Configuration de la VM

+ +

Après avoir téléchargé le fichier .ova des machines virtuelles, double-cliquez sur le fichier; cela démarrera le processus d'importation de la machine virtuelle dans VirtualBox. Il est fortement recommandé de donner à la VM une mémoire vive minimum de 4096 Mo (8192 Mo ou plus si vous le pouvez), aussi configurer la afin d'avoir le même nombre de processeurs que votre ordinateur hôte. Le devéloppement de Firefox utilise beaucoup de ressources système, et que vous voulez construire le plus rapidement possible.

+ +

Screen shot of the Import Virtual Appliance window

+ +

Une fois que vous avez terminé d'importer la machine virtuelle, vous pouvez effectuer des personnalisations supplémentaires si vous le souhaitez, ou tout simplement démarrer la machine virtuelle et attendre que le bureau Ubuntu apparaisse. Une fenêtre du Terminal (l'equivalent de la l'invite de commande sur Windows) s'affichera automatiquement et effectuera certaines activités de configuration finale. Une fois celles-ci terminée, Sublime Text démarrera, et vous pourriez commencer à travailler !

+ +

Screen shot of the Sublime Text editor running in the VM

+ +
+

Note: Si jamais vous avez besoin d'informations d'identification root, utilisez "firefox-dev" comme mot de passe. Si vous souhaitez modifier vos paramètres de langue et de clavier, suivez les instructions Comment changer la langue de l'interface utilisateur dans Ubuntu.(page en Anglais)

+
+ +

Compilation de Firefox

+ +

Pour Compiler Firefox dans la machine virtuelle (VM), ouvrez le menu "Outils" et choisissez l'option "Compiler" . Le processus de Compilation commencera, et vous avez du temps pour boire un verre, un bon repas, ou peut-être une petite pause, tout depend de la puissance de votre ordinateur. Vous devez être patient.
+
+ Une fois que la Compilation terminée (avec succès), choisissez l'option Exécuter dans le menu "Outils" pour démarrer votre version personnalisée de Firefox. Assurez-vous que tout ce que le pire comme prévu.
+
+ Par défaut, la machine virtuelle est configuré pour compiler une compilation optimisée de Firefox. Vous pouvez facilement passer de la compilation au débogage. Il suffit d'ouvrir le menu "Outils", puis le sous-menu "Build System". Dans la dernière sous-menu de "Build System"
, choisissez «Firefox (Debug)". C'est tout ! Votre prochaine Compilation sera une accumulation de débogueur.

+ +

Screen shot showing how to switch between debug; and optimized builds

+ +

Travailler dans la VM

+ +

De là, vous travaillez dans la machine virtuelle tout comme vous le feriez ailleurs. Pour recupérer le dernier code de mozilla-central, il suffit d'utiliser Mercurial comme d'habitude :

+ +
hg pull
+ +

Et soumettez vos patchs(page en Anglais) de la même manière que vous le feriez normalement.

+ +

Et Maintenant ?

+ +

Maintenant que vous avez construit avec succès Firefox dans votre VM flambant neuf, vous demandez peut-être ce qu'il faut faire ensuite. Une excellente façon de commencer est de choisir un petit bug facile à fixer et code qui applique ces patches. 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 !

+ +

Voici quelques liens pour vous aider à trouver quelque chose que vous pouvez faire pour améliorer Firefox:

+ + + +

Vous pouvez également poser vos questions sur "ou commencer " {{IRCLink("introduction")}},  et des questions de développement de Firefox ici {{IRCLink("developers")}}.

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 +--- +

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.

+

Voici quelques liens qui pourraient vous servir :

+

Lancer les tests

+

Debugger

+

Rapporter un bug

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 +--- +

 

+ +

Définition du chrome

+ +

Le chrome 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.

+ +

Fournisseurs de chrome

+ +

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.

+ +

Il y trois types basiques de fournisseurs de chrome :

+ +

content

+ +

Le fichier principal pour la description d'une fenêtre provient du fournisseur « content », 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.

+ +

locale

+ +

Les applications localisables (disponibles en plusieurs langues) ont leurs informations de localisation dans des fournisseurs « locale ». 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 DTD et les fichiers properties de style Java.

+ +

skin

+ +

Un fournisseur « skin » 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.

+ +

Le registre chrome

+ +

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.

+ +

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.

+ +

Afin d'informer le registre chrome de la présence d'un nouveau chrome, un texte de présentation appelé manifest est utilisé : il s'agit du fichier chrome.manifest à la racine d'une extension ou d'un thème, ou d'une application XULRunner.

+ +

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).

+ +
locale nomdupaquetage nomlocale chemin/vers/fichiers
+skin nomdupaquetage nomskin chemin/vers/fichiers
+
+ +

Instructions du fichier manifest

+ +

Commentaires

+ +

Une ligne est un commentaire si elle commence par le caractère « #» ; tous les autres caractères sur la ligne seront ignorés.

+ +
# cette ligne est un commentaire - vous pouvez mettre ce que vous voulez ici
+
+ +

content

+ +

Un paquetage de type content est enregistré par la ligne :

+ +
content nomdupaquetage uri/vers/fichiers/ [drapeaux]
+
+ +

Ceci va enregistrer un emplacement à utiliser lors de la résolution de l'URI chrome://nomdupaquetage/content/.... L'URI peut être absolue ou relative à l'emplacement du fichier manifeste. Notez qu'elle doit se terminer par une barre oblique « / ».

+ +

locale

+ +

Un paquetage de type locale est enregistré par la ligne :

+ +
locale nomdupaquetage nomlocale uri/vers/fichiers/ [drapeaux]
+
+ +

Ceci va enregistrer un paquetage locale lors de la résolution de l'URI chrome://nomdupaquetage/locale/... . La chaîne nomlocale 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.

+ +

skin

+ +

Un paquetage de thème est enregistré par la ligne :

+ +
skin nomdupaquetage nomskin uri/vers/fichiers/ [drapeaux]
+
+ +

Ceci va enregistrer un paquetage de thème lors de la résolution de l'URI chrome://nomdupaquetage/skin/... . La chaîne nomskin 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.

+ +

style

+ +

Les overlays de style (CSS personnalisée qui sera appliquée à une page chrome) sont enregistrés avec la syntaxe suivante :

+ +
style chrome://URI-vers-style chrome://stylesheet-URI [drapeaux]
+
+ +

override

+ +

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 » :

+ +
override chrome://paquetage/type/uri-originelle.qqc nouvelle-URI-résolue [drapeaux]
+
+ +

Note : les overrides ne sont pas récursifs (donc remplacer chrome://foo/content/bar/ par file:///home/john/blah/ ne fera généralement pas ce que vous désirez ou vous attendez à voir).

+ +
+

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 nouvelle-URI-résolue 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 nouvelle-URI-résolue. Voir le {{ Bug(323455) }}.

+
+ +

Drapeaux de fichiers manifest

+ +

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.

+ +

application

+ +

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

+ +
application=app-ID
+
+ +

indique que l'instruction ne doit être appliquée que si l'extension est installée dans une application ayant pour identifiant app-ID. Plusieurs drapeaux application peuvent être fournis sur une même ligne, auquel cas elle sera appliquée si n'importe lequel d'entre-eux correspond.

+ +

appversion

+ +

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

+ +
appversion=version
+appversion<version
+appversion<=version
+appversion>version
+appversion>=version
+
+ +

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 appversion 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 Format de version du toolkit.

+ +

platform (paquetages propres à la plateforme)

+ +

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.

+ +

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é.

+ +

Pour indiquer qu'un paquetage est propre à une plateforme, ajoutez l'indicateur « platform » après le chemin sur la ligne content, par exemple :

+ +
content global-platform jar:toolkit.jar!/toolkit/content/global-platform/ platform
+
+ +

Une fois ceci spécifié dans votre fichier manifest, assurez-vous ensuite que, sous le répertoire global-platform, les sous-répertoires win (Windows/OS2), mac (OS9/OSX), ou unix (tous les autres cas) sont présents. Tout ce qui se trouve en dehors de ces sous-répertoires sera ignoré.

+ +

xpcnativewrappers

+ +

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 Accès sécurisé au contenu DOM depuis le chrome pour plus de détails.

+ +

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 xpcnativewrappers=yes.

+ +

À 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 xpcnativewrappers=no.

+ +

Le drapeau xpcnativewrappers ne s'applique qu'au paquetages de type content : il n'est pas reconnu par les enregistrements locale ou skin.

+ +

Exemple de fichier manifest chrome

+ +
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 chrome://global/content/netError.xhtml jar:embedder.jar!/global/content/netError.xhtml
+content       inspector          jar:inspector.jar!/content/inspector/ xpcnativewrappers=no
+
+ +

Anciens fichiers manifest de type contents.rdf

+ +

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.

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 +--- +
{{FirefoxSidebar}}

En mai 2015 le langage de programmation Rust 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.

+ +

Ajouter le code Rust

+ +

Le support de base pour la compilation avec le code Rust est disponible sur la page du  bogue 1161339. Si vous disposez de rustc dans votre variable path vous pouvez ajouter les fichiers .rs à la variable SOURCES dans moz.build, puis ajouter :

+ +
ac_add_options --enable-rust
+ +

à votre mozconfig et ça devrait fonctionner.

+ +

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 :

+ +
ac_add_options --enable-macos-target=10.7
+ +

Vous pouvez aussi compiler une toolchain personnalisée de Rust sans la partie relative à std::thread. Pour plus de détails, regardez le bogue 1164109.

+ +

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 extern crate references won't be resolved.

+ +

Allez voir le bogue 1135640 ('oxidation') pour un suivi global.

+ +

Tester le code Rust

+ +

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.

+ +
./mach gtest rust.*
+ +

Regardez si le test rust.CallFromCpp réussi ainsi que tous les autres.

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 +--- +
{{FirefoxSidebar}}
+ +

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 (Enterprise Working Group) via enterprise@mozilla.org (en anglais). Mieux encore, vous pouvez rejoindre les discussions en cours en vous inscrivant à la liste en anglais ou en français.

+ +
+

Note : 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 Deploying Firefox in an enterprise environment.

+
+ +

Choisissez une variante de Firefox

+ +

RR (Version Rapide)

+ +

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.

+ +

Pour vous renseigner sur les dates de sortie des prochaines versions, vous pouvez regarder ce tableau sur le wiki Mozilla.

+ +

ESR (version de support étendu)

+ +

Chaque septième version majeure de Firefox est déclarée version de support étendu. Ces versions reçoivent les corrections des gros bugs issus des versions mineures pendant 54 semaines (neuf cycles de six semaines). De plus, un chevauchement de 12 semaines (deux cycles de six semaines) entre deux versions successives de type ESR est effectué, au cours de laquelle les deux versions ESR obtiennent des corrections de bugs.

+ +

Les versions ESR sont les versions 10, 17, 24, 31 et 38.

+ +

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).

+ +

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.

+ +

Installation

+ +
    +
  1. Téléchargez la dernière version de Firefox depuis https://www.mozilla.org/en-US/firefox/all/ (RR) ou https://www.mozilla.org/en-US/firefox/organizations/all/ (ESR).
  2. +
  3. Installez la version sur le système d'exploitation de votre choix (L'option pour une installation silencieuse est -ms).
  4. +
  5. Vous pouvez aussi créer un fichier d'initialisation. Pour plus d'informations, vous pouvez visiter cette page (en).
  6. +
+ +

Configuration

+ +
    +
  1. Trouvez le répertoire où l'exécutable est présent. Par exemple, sur Windows 7 (64 bits), le répertoire est souvent C:\Program Files (x86)\Mozilla Firefox; dans Mac OSX 10.8 il s'agit de /Applications/Firefox.app/Contents/MacOS. Les sous-répertoires mentionnés par la suite sont relatifs à ce dossier.
  2. +
  3. Créez un fichier javascript dans defaults/pref (généralement, autoconfig.js - 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 : Customizing Firefox default preference files (en)).Les trois lignes dont vous avez besoin sont : +
    // Vous devez démarrer ce fichier avec un commentaire !
    +pref("general.config.filename", "mozilla.cfg");
    +pref("general.config.obscure_value", 0);
    +
  4. +
  5. Créez un fichier .cfg (généralement mozilla.cfg — 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. Passez ou commentez la première ligne, puis commencer à mettre vos préférences. 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 "user set", ou regardez les exemples suivants. Toute préférence peut être réglée via une des fonctions suivantes : +
    +
    pref
    +
    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 "user set" dans about:config
    +
    defaultPref
    +
    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 "default" dans about:config
    +
    lockPref
    +
    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. Certains éléments de la configuration nécessitent un réglage via lockPref, tels que app.update.enabled (pref ne fonctionnera pas).
    +
    clearPref
    +
    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.
    +
    +
  6. +
+ +

Vous pouvez visiter Customizing Firefox autoconfig files (en) ou Customizing Firefox autoconfig files continued (en) pour plus d'informations. Pour désactiver des éléments de l'interface utilisateur, vous pouvez utiliser l'extension CCK2.

+ +

Exemple de fichier de configuration

+ +

Dans l'exemple qui suit, vous pouvez voir des exemples de références nécessitant l'utilisation de lockPref.

+ +
// 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);
+
+// Disable all data upload (Telemetry and FHR)
+lockPref("datareporting.policy.dataSubmissionEnabled", false);
+
+// 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; 
+
+ +

Packaging d'extensions

+ +
    +
  1. Installez l'extension sur une machine de test. Regardez la page about:support sous Extensions pour trouver le GUID
  2. +
  3. Regardez dans le répertoire des profils (ex: %APPDATA%\Mozilla\Firefox\Profiles 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.
  4. +
  5. 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 /distribution/extensions mais cette méthode ne fonctionne que pour les profils créés après l'ajout de l'extension. 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 Integrating add-ons into Firefox (en) pour trouver d'autres méthodes.
  6. +
+ +

Changements au fil du temps

+ +

Changement dans la structure des répertoires

+ +

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 :

+ + + +

La configuration des préférences general.config.filename et general.config.obscure_value pour AutoConfiguration peut être réalisée dans le dossier defaults/pref, mais le fichier de configuration doit commencer par la lettre 'a', comme par exemple autoconfig.js.

+ +

Si l'opération venait à échouer depuis defaults/pref dans une des versions suivantes de Firefox, essayez avec browser/defaults/preferences.

+ +

Changement de répertoire sur Mac

+ +

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 /Applications/Firefox.app/Contents/Resources (c'est là que doit aller mozilla.cfg et autoconfig.js sous /Applications/Firefox.app/Contents/Resources/defaults/pref).

+ +

Changements dans ESR 24.x avec les fichiers PDF Adobe

+ +

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 Adobe Acrobat Document à Portable Document Format (PDF), le rendant difficile à localier via les outils ou options. Pour désactiver cette fonctionnalité, modifiez pdfjs.disabled à true, comme dans le fichier d'exemple plus haut.

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 +--- +
{{FirefoxSidebar}}

+ +

Une version de Firefox adaptée sur mesure pour les développpeurs web.

+ +

Télécharger Firefox Developer Edition

+ +
+
+
+

Les dernières fonctionnalités de Firefox

+ +

L'édition de Firefox pour les développeurs remplace le canal de distribution Aurora dans le système de release de Firefox. 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.

+ +

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.

+ +

Découvrez les nouveautés de l'édition de Firefox pour les développeurs.

+
+ +
+

Des outils de développement expérimentaux

+ +

Certains outils expérimentaux seront intégrés pour maturer avant d'atteindre le canal de distribution release.

+ +

Ainsi, l'édition développeur intègre l'extension Valence, qui permet de connecter les outils de développement Firefox à d'autres navigateurs tels que Chrome pour Android ou Safari pour iOS.

+
+
+ +
+
+

Un profil à part entière

+ +

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.

+
+ +
+

Une version paramétrée pour les développeurs web

+ +

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.

+
+
+ +
+
+

Un thème distinct

+ +

Ce thème permet d'accéder plus rapidement aux outils de développement.

+
+
+ +

 

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 +--- +
{{FirefoxSidebar}}

Changer le thème de la Developer Edition

+ +

Si vous souhaitez utiliser la Developer Edition, mais que vous préférez utiliser le thème Australis 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 ».

+ +

{{EmbedYouTube("oiHt8T1Liyk")}}

+ +

Vous pouvez également tapper “about:addons” dans la barre d'URL, sélectionner « Apparence » et changer le thème depuis cet endroit.

+ +

Revenir à Firefox Aurora

+ +

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 :

+ +
    +
  1. 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.
  2. +
  3. Après avoir redémarré, vous pouvez restaurer le thème de la Developer Edition en suivant les instructions de la section « Changer le thème de la Developper Edition » ci-dessus.
  4. +
+ +

{{EmbedYouTube("8rEJn_hATE8")}}

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 +--- +
{{FirefoxSidebar}}
+ +

Afin de tester les nouvelles fonctionnalités, Mozilla publie chaque jour une version test du navigateur Firefox , Firefox Nightly. 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.

+ +

Pour tester les nouveautés, téléchargez Firefox Nightly ou Firefox Developer Edition.

+ +

HTML

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FonctionnalitésFirefox NightlyFirefox Developer EditionFirefox BetaFirefox ReleaseNom de la préférence
{{HTMLElement("dialog")}}
+ Elément de dialogue incluant les DOM APIs pour intéragir avec. L'implementation de modules de dialogues et l'accessibilité restent manquants.
Activé
+ (disponible depuis 53)
Désactivé
+ (disponible depuis 53)
Désactivé
+ (disponible depuis 53)
Désactivé
+ (disponible depuis 53)
+

dom.dialog_element.enabled

+
+

Attribut global : inputmode

+ +

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)}}

+
+

Activé
+ (disponible depuis 75)

+
+

Désactivé
+ (disponible depuis 75)

+
+

Désactivé
+ (disponible depuis 75)

+
+

Désactivé
+ (disponible depuis 75)

+
dom.forms.inputmode
+

<link rel="preload">

+ +

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 préchargement avec rel = "preload" pour plus de détails. Plus de détails sur l'état de cette fonctionnalité : {{bug (1639607)}}.

+
+

Activé
+ (disponible depuis 78)

+
+

Activé
+ (disponible depuis 78)

+
+

Activé
+ (disponible depuis 78)

+
+

Désactivé
+ (disponible depuis 78)

+
network.preload
+ +

CSS

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FonctionnalitéFirefox NightlyFirefox Developer EditionFirefox BetaFirefox ReleasePréférence
Sous-réseauxDésactivéDésactivéDésactivéDésactivélayout.css.grid-template-subgrid-value.enabled
Afficher les caractères de contrôle errants en CSS sous forme de cases hexadécimales.
+ Cette fonction apporte les caractères de contrôle (Unicode category Cc) à part tab (U+0009), line feed (U+000A), form feed (U+000C), et carriage return (U+000D) comme une case hexadécimale lorsqu'ils ne sont pas attendus.
4343DésactivéDésactivélayout.css.control-characters.enabled or layout.css.control-characters.visible
Masques CSS positionnés
+ A subset of CSS Masks that includes longhand properties of CSS Masks, as well as a change in the shorthand property
515153DésactivéControllé par un flag de (MOZ_ENABLE_MASK_AS_SHORTHAND).
+

La propriété de paramètres de variation de poilce
+ 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.

+
Désactivé
+ (disponible depuis 53)
Désactivé
+ (disponible depuis 53)
Désactivé
+ (disponible depuis 53)
Désactivé
+ (disponible depuis 53)
+

layout.css.font-variations.enabled
+ Functions only in Mac OS Sierra (and later).
+
+ For the downloadable fonts on axis-praxis, you also need gfx.downloadable_fonts.keep_variation_tables (in Firefox 54 and later)

+
La propriété CSS de touch-action
+ 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.
50layout.css.touch_action.enabled
+

The shape-outside CSS property
+ 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.

+ +

Firefox currently implements the <shape-box> values ({{bug(1309467)}}) as well as the circle() ({{bug(1311244)}}), ellipse() ({{bug(1326406)}}), and polygon() ({{bug(1326409)}}) functions. {{cssxref("shape-outside")}} is animatable since Firefox 57 ({{bug(1289049)}}).

+
Désactivé
+ (disponible depuis 53)
layout.css.shape-outside.enabled
The contain CSS property
+ 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.
Désactivé
+ (disponible depuis 45)
Désactivé
+ (disponible depuis 45)
Désactivé
+ (disponible depuis 45)
Désactivé
+ (disponible depuis 45)
layout.css.contain.enabled
+

The column-span CSS property
+ 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.

+ +

Firefox currently only parses the property ({{bug(1339298)}}), it's not actually implemented yet ({{bug(616436)}}).

+
Désactivé
+ (reconnu depuis 55, mais pas encore implémenté)
layout.css.column-span.enabled
The frames() timing function
+ See The frames() class of timing-functions for more details.
ActivéN/ADésactivé
+ (disponible depuis 55)
Désactivé
+ (disponible depuis55)
Non
+ +

JavaScript

+ +

Voir aussi ECMAScript Next support 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.

+ +

Désactivé

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FocntionnalitéFirefox NightlyFirefox Developer EditionFirefox BetaFirefox ReleasePréférence
Ajouts à l'objet ArrayBuffer 
+ Ajoute {{jsxref("ArrayBuffer.transfer()")}} qui renvoie un nouvel ArrayBuffer dont les données ont été récupérées de oldBuffer(spec).
36DésactivéDésactivéDésactivéNon
Objets TypedObject (spec)ActivéDésactivéDésactivéNon
SIMD (specification and polyfill)ActivéDésactivéDésactivéDésactivéNon
Modules ECMAScript
+ Allows you to use native ECMAScript modules, for example defining modules with <script type="module">, defining fallback scripts with <script nomodule>, and importing code features that have been exported from modules.
DésactivéDésactivéDésactivéDésactivédom.moduleScripts.enabled
+ +

APIs

+ +

Canvas & WebGL

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FonctionnalitéFirefox NightlyFirefox Developer EditionFirefox BetaFirefox ReleasePréfrence
WEBGL_debug_renderer_info extension
+ The {{domxref("WEBGL_debug_renderer_info")}} extension allows you to transmit information useful to help debugging problems to the server.
4242DésactivéDésactivéwebgl.enable-debug-renderer-info
OffscreenCanvas
+ The {{domxref("OffscreenCanvas")}} interface provides a canvas that can be rendered off screen. It is available in both the window and worker contexts.
Désactivé
+ (disponible depuis 44)
Désactivé
+ (disponible depuis 44)
Désactivé
+ (disponible depuis 44)
Désactivé
+ (disponible depuis 44)
gfx.offscreencanvas.enabled
Hit regions
+ 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.
Désactivé
+ (disponible depuis 30)
Désactivé
+ (disponible depuis 30)
Désactivé
+ (disponible depuis 30)
Désactivé
+ (disponible depuis 30)
canvas.hitregions.enabled
Streams API
+ Allows JavaScript to programmatically access streams of data received over the network and process them as desired by the developer.
Désactivé
+ (disponible depuis 57)
Désactivé
+ (disponible depuis 57)
Désactivé
+ (disponible depuis 57)
Désactivé
+ (disponible depuis 57)
dom.streams.enabled and javascript.options.streams
+ +

DOM

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FonctionnalitéFirefox NightlyFirefox Developer EditionFirefox BetaFirefox ReleasePréférence
WebVR API 1.1 on Mac
+ The WebVR API allows you to control and use virtual reality devices.
ActivéActivéActivéDésactivédom.vr.enabled
Gamepad extensions
+ The Gamepad Extensions provide access to additional functionality such as pose information in the case of WebVR controllers, and haptic actuator control (e.g. controller vibration hardware).
ActivéActivéActivéDésactivédom.gamepad-extensions.enabled
FlyWeb
+ FlyWeb is a project at Mozilla focused on bringing a new set of APIs to the browser for advertising and discovering local-area web servers.
51DésactivéDésactivéDésactivédom.flyweb.enabled
HTMLMediaElement.seekToNextFrame()
+ 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.
49
+ (Mise à jour fondamentale  dans la version 50)
49
+ (Mise à jour fondamentale   dans la version 50)
DésactivéDésactivémedia.seekToNextFrame.enabled
GeometryUtils.getBoxQuads() ({{bug(917755)}})3131DésactivéDésactivélayout.css.getBoxQuads.enabled
GeometryUtils.convertPointFromNode(),
+ GeometryUtils.RectFromNode(), and
+ GeometryUtils.convertQuadFromNode()
+ ({{bug(918189)}})
3131DésactivéDésactivélayout.css.convertFromNode.enabled
Node.rootNode
+ 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.
+ This feature is kept experimental as its naming poses Web compatibility problems. It will be renamed in the future.
4848DésactivéDésactivédom.node.rootNode.enabled
WebVTT Regions API
+ WebVTT 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.
+ This interface is considered to be in flux and isn't therefore activated in any version by default.
Désactivé
+ (Implementation expériemnatle depuis la version 30)
DésactivéDésactivéDésactivémedia.webvtt.regions.enabled
Support for audio and video tracks
+ Implements {{domxref("HTMLMediaElement.audioTracks")}} and {{domxref("HTMLMediaElement.videoTracks")}}.
+ 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.
Désactivé
+ (Implementation expériemnatle depuis la version 33)
DésactivéDésactivéDésactivémedia.track.enabled
Better value for Event.timestamp
+ The property {{domxref("Event.timestamp")}} is returning a {{domxref("DOMHighResTimeStamp")}}, which is now relative to the Unix epoch.
32 (Windows)
+ 43 (Linux)
32 (Windows)
+ 43 (Linux)
DésactivéDésactivémedia.track.enabled
Pointer Events50DésactivéDésactivéDésactivédom.w3c_pointer_events.enabled
Pointer Events {{domxref("PointerEvent.tangentialPressure")}} and {{domxref("PointerEvent.twist")}}54DésactivéDésactivéDésactivédom.w3c_pointer_events.enabled
Intersection Observer API
+ 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.
Désactivé
+ (disponible depuis 53)
dom.IntersectionObserver.enabled
Web Animations API: KeyframeEffect and KeyframeEffectReadOnly
+ 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)}}.)
5252DésactivéDésactivéNon
{{domxref("PromiseRejectionEvent")}} and related features
+ Providing a way to monitor and more finely control the rejection of Promises.
+  
Désactivé
+ (disponible depuis 55)
DésactivéDésactivéDésactivédom.promise_rejection_events.enabled
Payment Request API
+ Provides a web API for handling web-based payments.
Désactivé
+ (disponible depuis 55)
Désactivé
+ (disponible depuis 55)
Désactivé
+ (disponible depuis 55)
Désactivé
+ (disponible depuis 55)
dom.payments.request.enabled
Basic Card Payment API
+ 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")}}.
Désactivé
+ (disponible depuis 56)
Désactivé
+ (disponible depuis 56)
Désactivé
+ (disponible depuis 56)
Désactivé
+ (disponible depuis 56)
dom.payments.request.enabled
The proprietary {{domxref("Window.content")}} property is now only available to chrome (privileged) code, and not available to the web anymore ({{bug(864845)}}).Activé
+ (depuis 57)
DésactivéDésactivéDésactivé
+ +

WebRTC

+ + + + + + + + + + + + + + + + + + + + + + +
FonctionnalitéFirefox NightlyFirefox Developer EditionFirefox BetaFirefox ReleasePréférence
TCP ICE candidates
+ ICE candidates that use TCP rather than UDP are considered during ICE negotiation.
+

Désactivé
+ 41

+ +

Désactivé
+ 54

+
Désactivé
+ 41
Désactivé
+ 41
Désactivé
+ 41
media.peerconnection.ice.tcp
+ +

Outils de développeurs

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FonctionnalitéFirefox NightlyFirefox Developer EditionFirefox BetaFirefox ReleasePréférence
Debugger rewrite in HTML5252DésactivéDésactivédevtools.debugger.new-debugger-frontend
Console rewrite in HTML52DésactivéDésactivéDésactivédevtools.webconsole.new-frontend-enabled
Experimental Performance tool options
+ Enables options in the UI for JIT optimizations, memory, etc.
41DésactivéDésactivéDésactivédevtools.performance.ui.experimental
Layout side panel
+ The Layout side panel allows to inspect and manage different CSS layout types like CSS Grid Layout.
Désactivé
+ (disponible depuis 52)
Désactivé
+ (disponbile depuis 52)
Désactivé
+ (disponible depuis 52)
Désactivé
+ (disponible depuis 52)
devtools.layoutview.enabled
+ +

Sécurité

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FonctionnalitéFirefox NightlyFirefox Developer EditionFirefox BetaFirefox ReleasePréférence
TLS 1.3ActivéActivéDésactivéDésactivésecurity.tls.version.max to 4
Blocking data URL navigations on the top-level window
+ We are experimenting with blocking data: URLs on the top-level window. See Data URL navigations on top level window will be blocked for a detailed explanation.
Activén/aActivéDésactivésecurity.data_uri.block_toplevel
+ _data_uri_navigations
+ +

Autre

+ + + + + + + + + + + + + + + + + + + + +
FonctionnalitéFirefox NightlyFirefox Developer EditionFirefox BetaFirefox ReleasePréférence
Ajouter à l'écran d'accueil
+ The icons, name, short_name, and theme_color fields of the Web App Manifest (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).
Désactivé
+ (disponible depuis 53)
Désactivé
+ (disponible depuis 53)
Désactivé
+ (disponible depuis 53)
Désactivé
+ (disponible depuis 52)
manifest.install.enabled
+ +

Voir Aussi

+ + 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 +--- +
{{FirefoxSidebar}}

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.

+ +

Nous encourageons fortement les utilisateurs de Firefox ESR à s'inscrire sur la liste de diffusion Enterprise Working Group (EWG).

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 +--- +
{{FirefoxSidebar}}

Le mode « headless » 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 headless de Firefox.

+ +

Utiliser le mode headless

+ +

Vous pouvez démarrer Firefox dans son mode headless grâce à une ligne de commande incluant le drapeau (flaTg) -headless. Par exemple :

+ +
/chemin/vers/firefox -headless
+ +

Pour le moment, nous n'avons pas inclus davantage d'options, mais plus seront ajoutées plus tard.

+ +

Par exemple, nous travaillons à implémenter une option --screenshot, qui permettra de faire des captures d'écran depuis le mode headless de Firefox. Voir {{bug(1378010)}} pour suivre l'avancée.

+ +

Prise en charge

+ +

Le mode headless de Firefox fonctionne à partir de la version 55 sur Linux et à partir de la version 56+ sur Windows et Mac.

+ +

Tests industrialisés à l'aide du mode headless

+ +

La façon la plus utile d'utiliser ce mode headless 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.

+ +

Selenium

+ +

Pour fournir un exemple d'utilisation du mode headless pour test industrialisés, nous allons créer un test recourant à Selenium via Node.js et selenium-webdriver. 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 mise en place d'un environnement de test, puis revenez lire cette documentation.

+ +

Tout d'abord, soyez sûr d'avoir installé Node ainsi que selenium-webdriver sur votre machine. Ensuite, créez un nouveau fichier nommé selenium-test.js.

+ +
+

Note : Vous pouvez également cloner ce dépôt : headless-examples qui contient un fichier de package. Il suffit donc de lancer npm install afin d'installer les dépendances nécessaires.

+
+ +
    +
  1. +

    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 :

    + +
    var webdriver = require('selenium-webdriver'),
    +    By = webdriver.By,
    +    until = webdriver.until;
    +
    +var firefox = require('selenium-webdriver/firefox');
    +
  2. +
  3. +

    Puis, créez un objet binary qui représente Firefox Nightly et ajouter l'argument -headless afin qu'il puisse être lancé avec ce mode :

    + +
    var binary = new firefox.Binary(firefox.Channel.NIGHTLY);
    +binary.addArguments("-headless");
    +
  4. +
  5. +

    Maintenant, créez une nouvelle instance de driver utilisant Firefox et utilisez setFirefoxOptions() 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 release) :

    + +
    var driver = new webdriver.Builder()
    +    .forBrowser('firefox')
    +    .setFirefoxOptions(new firefox.Options().setBinary(binary))
    +    .build();
    +
  6. +
  7. +

    Il faut maintenant ajouter la ligne de code qui initiera la navigation sur la page de recherche Google :

    + +
    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();
    +
  8. +
  9. +

    Enfin, démarrez le test en utilisant la commande suivante :

    + +
    node selenium-test
    +
  10. +
+ +

Et c'est tout ! Après quelques secondes, vous devriez voir apparaître le message "Test passed" sur la console

+ +

L'article Headless Firefox in Node.js with selenium-webdriver de Myk Melez continent d'autres conseils utiles pour créer un test industrialisé via Node.js et Selenium dans le mode headless.

+ +

D'autres solutions de test

+ +

Slimerjs supporte Firefox sur Linux et bientôt sur Mac et Windows. Voir l'article Headless SlimerJS with Firefox de Brendan Dahl pour plus détails.

+ +

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.

+ +

Dépannage et aide supplémentaire

+ +

Si vous avez le moindre problème en utilisant le mode headless, 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.

+ + + +

Si vous souhaitez poser une question à nos ingénieurs, le meilleur moyen est de se rendre sur le canal IRC #headless de Mozilla. Si vous êtes certain d'avoir trouvé un bug, documentez le sur la plateforme Mozilla Bugzilla.

+ +

Voir aussi

+ + 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 +--- +
{{FirefoxSidebar}}
+ +

Firefox 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.

+ +

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.

+ +
+

Découvrez comment créer des modules complémentaires pour Firefox, comment développer et créer Firefox même, ainsi que son fonctionnement interne et celui de ses sous-projets.

+
+ + + +

Éditions de Firefox

+ +

Firefox est disponible sous cinq éditions différentes, l'une d’entre-elles est forcément adaptée pour vous !

+ +

Firefox Nightly

+ +

Chaque nuit, nous compilons Firefox à partir des dernières sources de mozilla-central. 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.

+ +

Télécharger Firefox Nightly

+ +

Firefox Developer Edition

+ +

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.

+ +

En savoir plus sur Firefox Developer Edition.

+ +

Firefox Developer Edition

+ +

Firefox Beta

+ +

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.

+ +

Télécharger Firefox Beta

+ +

Firefox

+ +

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.

+ +

Télécharger Firefox

+ +

Firefox Extended Support Release (ESR)

+ +

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.

+ +

En savoir plus sur Firefox Extended Support Release.

+ +

Télécharger Firefox ESR

+ +

Profils Firefox

+ +

Si vous utilisez régulièrement plusieurs éditions de Firefox — ou simplement plusieurs configurations — vous devriez vous renseigner sur l'utilisation de plusieurs profils Firefox en activant le gestionnaire de profils de Firefox et les autres outils de gestion de profils.

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 +--- +
{{FirefoxSidebar}}
+ +

Il existe un grand nombre d'informations utiles à propos de Firefox cachées derrière le protocole d'URL about:. La plus utile est l'URL about:config 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 about: :

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Page about:Description
about:aboutFournit un aperçu de toutes les pages about:
about:addonsGestionnaire de modules complémentaires
about:buildconfigAffiche la plate-forme et la configuration utilisées pour construire Firefox
about:cacheAffiche les informations sur les caches mémoire, disque et appcache
about:checkerboardPermet de diagnostiquer les apparitions de damiers à l'affichage
about:configFournit un moyen d'inspecter et modifier les préférences et paramètres de Firefox
about:crashesListe tous les plantages qui se sont produits pendant le fonctionnement de Firefox (dans le cas où l'utilisateur a activé les rapports de plantage)
about:creditsListe tous les contributeurs du projet Firefox
about:debuggingAffiche la page de déboguage des modules complémentaires
about:devtoolsIntroduction aux outils de développement
about:downloadsAffiche tous les téléchargements faits dans Firefox
about:homePage de démarrage de Firefox lors de l'ouverture d'une nouvelle fenêtre
about:licenseAffiche les informations de licence
about:logoLogo de Firefox
about:memoryFournit un moyen d'afficher l'utilisation de la mémoire, de l'enregistrer dans un rapport et de lancer les GC et CC
about:mozillaPage spéciale affichant un message extrait de l'ouvrage "Le Livre de Mozilla"
about:networkingAffiche des informations sur le réseau
about:newtabPage de démarrage à l'ouverture d'un nouvel onglet
about:performanceAffiche une indication de l'utilisation du processeur et de la mémoire des onglets/modules/processus
about:pluginsAffiche les informations sur les plugins installés
about:policiesListe les stratégies d'entreprise
about:preferencesParamètres de Firefox (également accessibles à partir du menu Firefox > Préférences)
about:privatebrowsingPage de démarrage lors de l'ouverture d'une fenêtre de navigation privée
about:profilesAffichages et gestion des profils
about:restartrequiredPage informant l'utilisateur de la nécessité d'un redémarage après une mise à jour
about:readerIndique qu'une page utilise le mode lecture
about:rightsAffiche des informations sur les droits
about:robotsPage spéciale affichant des remarques concernant les robots
about:serviceworkersAffiche les ServiceWorkers inscrits
about:sessionrestoreRestauration de session (affichée après un plantage de Firefox)
about:supportInformations de dépannage (également accessible à partir du menu Firefox > ? (point d'interrogation) > Informations de dépannage)
about:sync-logAffiche un protocole de synchronisation relatif à la fonctionnalité Sync
about:telemetryAffiche 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)
about:url-classifierAffiche le statut de la classification d'URL (utilisée pour les protections contre l'hameçonnage et les logiciels malveillants)
about:webrtcInformations sur l'utilisation de WebRTC
about:welcomePage affiché après l'installation de Firefox
about:welcomebackPage d'information affichée après la réinitialisation de Firefox
+ +

Ces URL sont définies dans {{source("docshell/base/nsAboutRedirector.cpp")}}, à l'intérieur du tableau kRedirMap. Celui-ci couvre la plupart des URL, de config jusqu'aux URL du pseudo-protocole chrome:, comme chrome://global/content/config.xul. Les informations sur les emplacements about sont dupliquées dans {{source("docshell/build/nsDocShellModule.cpp")}}.

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 +--- +
{{FirefoxSidebar}}

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 (appelé aussi « contenu » ou « contenu web »).

+ +

Les dernières versions de Firefox exécutent l'interface du navigateur dans un processus différent de celui des pages web. 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 multiprocessus dans Firefox est appelé Electrolysis, qui correspond à l'abréviation e10s.

+ +

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 repose sur la possibilité d'accéder directement à du contenu web.

+ +

Au lieu d'accéder au contenu directement, le JavaScript présent dans le code chrome devra utiliser le gestionnaire de messages pour accéder au contenu. Pour faciliter la transition, nous avons mis en place des objets (les Cross Process Object Wrappers) et vous pouvez vous référer à cette page pour découvrir les limitations des scripts chrome. Si vous développez des extensions, vous pouvez lire le guide pour travailler avec Firefox multiprocessus.

+ +
+
+
+
+
Présentation technique
+
Une vision très haut niveau de comment le multiprocessus pour Firefox est mis en œuvre.
+
Guide de compatibilité du contenu web
+
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 !
+
Glossaire
+
La définition du jargon utilisé dans le projet Electrolysis.
+
Gestionnaire de messages
+
Guide complet sur les objets utilisés pour communiquer entre le code chrome et le contenu.
+
Extensions basées sur le SDK
+
Comment migrer vos extensions en utilisant le SDK d'extensions.
+
Quelle URI se charge où
+
Un guide rapide sur quelles URI - chrome:, about:, file:, resource: - sont chargés dans chaque processus.
+
+
+ +
+
+
Motivation
+
Pourquoi nous implémentons le multiprocessus dans Firefox : performance, sécurité et stabilité.
+
Guide de migration des extensions
+
Si vous êtes un développeur d'extension, apprenez si votre extension est affectée et comment mettre à jour votre code.
+
Objets CPOW
+
Les objets appelés Cross Process Object Wrappers sont une aide à la migration, permettant au code chrome d'accéder de manière synchrone au contenu.
+
Deboggage des processus du contenu
+
Comment déboguer du code fonctionnant dans le processus contenu.
+
Sélection d'onglet dans Firefox multiprocessus
+
Comment le passage entre les onglets marche dans Firefox multiprocessus.
+
+
+
+ +
+
+
+
+
Limitations des scripts chrome
+
Les pratiques ne fonctionnant plus dans le code chrome et comment y remédier.
+
+
+ +
+
+
Limitations des scripts avec privilèges
+
Les pratiques ne fonctionnant plus dans le code des scripts de cadre et comment y remédier.
+
+
+
+ +
+

Contactez-nous

+ +

Pour plus d'informations sur le projet, vous impliquer ou poser des questions :

+ + 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 +--- +
{{FirefoxSidebar}}

Il y a trois raisons qui nous poussent à faire tourner le contenu de Firefox dans un processus séparé : performance, sécurité, stabilité.

+ +

Performance

+ +

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 (jank) - 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 Snappy. En voici les principaux axes :

+ + + +

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).

+ +

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.

+ +

Nous pensons que ce compromis est logique pour plusieurs raisons :

+ + + +

Sécurité

+ +

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 bac à sable. 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.

+ +

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.

+ +

Stabilité

+ +

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.

+ +
+

Cette page contient pas mal de contenu provenant de l'article de blog de Bill McCloskey's sur Firefox multi-processus : http://billmccloskey.wordpress.com/2013/12/05/multiprocess-firefox/ (en)

+
+ +

 

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 +--- +
{{FirefoxSidebar}}
+

Cette page est une traduction d'un extrait de l'article du blog Bill McCloskey sur Firefox et le multiprocessus: http://billmccloskey.wordpress.com/2013/12/05/multiprocess-firefox/

+
+ +

À 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 browser.xul, 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  window, qui a une propriété document, et celui-ci contient tout les éléments XML déclarés dans browser.xul. 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 <browser> pour afficher le contenu web.

+ +

Le premier endroit où Firefox multiprocessus diverge de sa version en monoprocessus est que chaque élément <browser> a un attribut remote="true". Quand un tel élément est ajouté au document, un nouveau processus, appelé child process, pour le contenu est lancé. Un canal IPC est créé qui relie processus parent et enfant. Initialement l'enfant affiche about:blank, mais le parent peut envoyer des commandes à l'enfant pour naviguer autre part.

+ +

Rendu

+ +

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 off main thread compositing (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.

+ +

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".

+ +

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.

+ +

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.

+ +

User input

+ +

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 <browser> 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.

+ +

With multiple processes, event handling works the same way until the <browser> 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.

+ +

Inter-process communication

+ +

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.

+ +

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 IPDL, which sort of stands for “inter-* protocol definition language”. A typical IPDL file is PNecko.ipdl. It defines a set messages and their parameters. Parameters are serialized and included in the message. To send a message M, C++ code just needs to call the method SendM. To receive the message, it implements the method RecvM.

+ +

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:

+ +
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;
+}
+
+ +

When AddHistoryEntry 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 AddHistoryEntry on its side.

+ +

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 this code. Notice the content process check followed by the SendVisitURI call and an immediate return. The message is received here; this code just calls VisitURI in the parent.

+ +

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.

+ +

Frame scripts

+ +

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 the message manager 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 <browser> element. A message manager can be used to load JS code into the child process and to exchange messages with it.

+ +

As a simple example, imagine that we want to be informed every time a load 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:

+ +
// Get the global message manager.
+let mm = Cc["@mozilla.org/globalmessagemanager;1"].
+         getService(Ci.nsIMessageListenerManager);
+
+// Wait for load event.
+mm.addMessageListener("GotLoadEvent", function (msg) {
+  dump("Received load event: " + msg.data.url + "\n");
+});
+
+// Load code into the child process to listen for the event.
+mm.loadFrameScript("chrome://content/content-script.js", true);
+
+ +

For this to work, we also need to have a file content-script.js:

+ +
// Listen for the load event.
+addEventListener("load", function (e) {
+  // Inform the parent process.
+  let docURL = content.document.documentURI;
+  sendAsyncMessage("GotLoadEvent", {url: docURL});
+}, false);
+
+ +

This file is called a frame script. When the loadFrameScript function call runs, the code for the script is run once for each <browser> 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 true parameter to loadFrameScript). Since the script is run once per browser, it can access the browser’s window object and docshell via the content and docShell globals.

+ +

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 message manager guide.

+ +

Cross-process APIs

+ +

There are a lot of APIs in Firefox that cross between the parent and child processes. An example is the webNavigation property of XUL <browser> elements. The webNavigation property is an object that provides methods like loadURI, goBack, and goForward. 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.

+ +

The webNavigation 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 <browser> and <tabbrowser>. The <browser> customizations reside in browser.xml. Here is how browser.webNavigation is defined:

+ +
<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>
+
+ +

This code is invoked whenever JavaScript code in Firefox accesses browser.webNavigation, where browser is some <browser> element. It checks if the result has already been cached in the browser._webNavigation field. If it hasn’t been cached, then it fetches the navigation object based off the browser’s docshell. 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 webNavigation accessor runs in the parent process, this.docShell above will just return null. As a consequence, this code will fail completely.

+ +

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 <browser> elements. It is called remote-browser.xml, and it extends the existing browser.xml binding.

+ +

The remote-browser.xml binding returns a JavaScript shim object whenever anyone uses browser.webNavigation or other similar objects. The shim object is implemented in its own JavaScript module. It uses the message manager to send messages like "WebNavigation:LoadURI" to a content script loaded by remote-browser.xml. The content script performs the actual action.

+ +

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.

+ +

Cross-process object wrappers

+ +

The message manager API does not allow the parent process to call sendSyncMessage; 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 sendAsyncMessage 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.

+ +

These objects are called cross-process object wrappers, frequently abbreviated to CPOWs. They’re created using the message manager. Consider this example content script:

+ +
addEventListener("load", function (e) {
+  let doc = content.document;
+  sendAsyncMessage("GotLoadEvent", {}, {document: doc});
+}, false);
+
+ +

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 sendAsyncMessage 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:

+ +
let mm = Cc["@mozilla.org/globalmessagemanager;1"].
+         getService(Ci.nsIMessageListenerManager);
+
+mm.addMessageListener("GotLoadEvent", function (msg) {
+  let uri = msg.objects.document.documentURI;
+  dump("Received load event: " + uri + "\n");
+});
+mm.loadFrameScript("chrome://content/content-script.js", true);
+
+ +

It’s important to realize that we’re send object references. The msg.objects.document object is only a wrapper. The access to its documentURI 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.

+ +

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.

+ +

Another problem with CPOWs is that they violate some assumptions people might have about message ordering. Consider this code:

+ +
mm.addMessageListener("GotLoadEvent", function (msg) {
+  mm.sendAsyncMessage("ChangeDocumentURI", {newURI: "hello.com"});
+  let uri = msg.objects.document.documentURI;
+  dump("Received load event: " + uri + "\n");
+});
+
+ +

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 uri to come back as "hello.com". 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 documentURI property will be processed before the "ChangeDocumentURI" message, in which case uri will have some other value.

+ +

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.

+ +

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.

+ +

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.

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 +--- +
{{FirefoxSidebar}}
+ +
Ce document liste la documentation relative à la confidentialité.
+ +
 
+ +

{{ ListSubpages () }}

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 +--- +
{{FirefoxSidebar}}

Qu'est-ce que la protection contre le pistage ?

+ +

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.

+ +

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.

+ +

Quand Firefox bloque un contenu, il écrit un message dans la console web comme ceci :

+ +
The resource at "http://some/url" was blocked because tracking protection is enabled.
+ +

Notez qu'avec Firefox pour Android, vous pouvez accéder à la sortie de la console en utilisant le debogueur distant.

+ +

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.

+ +

Comment Firefox choisit quoi bloquer ?

+ +

Le contenu est bloqué selon le domaine à partir duquel il est chargé.

+ +

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.

+ +

Les sites surveillant les utilisateurs sont, le plus souvent, des sites tiers de publicité et d'analyse.

+ +

Ce que cela signifie pour votre site

+ +

Bien évidemment, cela signifie que quand la protection anti-pistage est activée:

+ + + +

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é.

+ +

Par exemple, vous ne devez pas utiliser Google Analytics de cette façon :

+ +
<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>
+ +

A la place, vous devez prendre en compte le cas où Google Analytics est manquant vérifiant si l'objet `ga` est initialisé :

+ +
<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 && ga.loaded) {
+         ga('send', 'event', 'outbound', 'click', url, {
+         'transport': 'beacon',
+         'hitCallback': function() { document.location = url; }
+       });
+    } else {
+        document.location = url;
+    }
+}
+</script>
+
+ +

Pour plus d'information sur cette technique : Google Analytics, Privacy, and Event Tracking.

+ +

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.

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 +--- +
{{FirefoxSidebar}}
+ +

Firefox 79 inclut une protection contre le pistage par redirection. Ce document décrit le fonctionnement de ces protections.

+ +

Définition du pistage par redirection

+ +

Le pistage par redirection 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 (first-party) pour suivre cet utilisateur ou cette utilisatrice à travers les sites web.

+ +

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 Protection renforcée contre le pistage (ETP pour Enhanced Tracking Protection) 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.

+ +

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.

+ +

La protection contre le pistage par redirection expliquée

+ +

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 bloque les cookies traqueurs (c.-à-d. que la préférence network.cookie.cookieBehavior est réglée sur 4). La prise en charge d’autres politiques de cookies est suivie dans le bug 1643045.

+ +

Quelles origines sont supprimées ?

+ +

Une origine sera supprimée si elle remplit les conditions suivantes :

+ +
    +
  1. Elle a stocké des cookies ou a accédé à un autre stockage de site (comme localStorage, IndexedDB ou Cache API) dans les dernières 72 heures. Comme les cookies sont assignés par hôte, nous supprimerons les variantes d’origine http et https d’un hôte de cookies.
  2. +
  3. L’origine est répertoriée en tant que traqueur dans la liste de notre protection contre le pistage.
  4. +
  5. Aucune origine disposant du même domaine de base (eTLD+1) n’a de permission d’interaction avec l’utilisateur ou l’utilisatrice. +
      +
    • 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.
    • +
    • 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.
    • +
    +
  6. +
+ +

Quelles données sont supprimées ?

+ +

Firefox supprimera les données suivantes :

+ + + +
+

Note : 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.

+
+ +

La suppression du stockage ignore les attributs d’origine. Cela signifie que le stockage sera supprimé dans les containers et le stockage isolé (comme celui de lisolement de la première partie (First-Party)).

+ +

À quelle fréquence les données sont-elles supprimées ?

+ +

Firefox efface le stockage en fonction du déclenchement d’un événement interne appelé idle-daily, qui est défini par les conditions suivantes :

+ + + +

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 privacy.purge_trackers.max_purge_count) pour des raisons de performance.

+ +

Débogage

+ +

Le pistage par redirection peut être activé et désactivé en inversant la préférence privacy.purge_trackers.enabled dans about:config. En outre, il ne fonctionnera que si la préférence network.cookie.cookieBehavior est réglée sur 4 ou 5 dans Firefox 79+ (1, 3, 4, ou 5 à partir de Firefox 80).

+ +

Différents niveaux de journalisation peuvent être déterminés grâce à la préférence privacy.purge_trackers.logging.level.

+ +

Pour le débogage, il est plus facile de déclencher l’effacement du stockage en déclenchant le service directement par la ligne de commande de la console du navigateur. Remarquez que c’est différent de la console web que vous pouvez utiliser pour déboguer un site web et cela nécessite que la préférence devtools.chrome.enabled soit réglée sur true 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 :

+ +
await Components.classes["@mozilla.org/purge-tracker-service;1"].getService(Components.interfaces.nsIPurgeTrackerService).purgeTrackingCookieJars()
+ +

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 privacy.userInteraction.expiration. 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.

+ +

Autres mises en œuvre

+ +

WebKit a livré en premier la protection contre le pistage par redirection dans ITP 2.0 (ils se réfèrent à la même attaque en l’appelant pistage par rebond (bounce tracking)). À compter de juillet 2020, il y a plusieurs différences importantes entre la mise en œuvre dans WebKit et dans Firefox :

+ + 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 +--- +
{{FirefoxSidebar}}
+ +

Changements pour les développeurs Web

+ +

Nouveau dans Firefox DevTools

+ + + +

CSS

+ + + +

HTML

+ + + +

JavaScript

+ +

L'implémentation d'EcmaScript 6 (Harmony) continue!

+ + + +

Interfaces/APIs/DOM

+ + + +

MathML

+ +

Pas de changement.

+ +

SVG

+ +

Pas de changement.

+ +

Voir aussi

+ + + +

Versions plus anciennes

+ +

{{Firefox_for_developers('24')}}

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 +--- +
{{FirefoxSidebar}}

Cette page a été déplacée vers FxSiteCompat.com.

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 +--- +
{{FirefoxSidebar}}
+ +

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.

+ +

Changements pour les développeurs Web

+ +

CSS

+ + + +

HTML

+ + + +

JavaScript

+ +

L'implémentation d'EcmaScript 6 se poursuit!

+ + + +

Interfaces/APIs/DOM

+ + + +

MathML

+ + + +

SVG

+ + + +

Outils de développement

+ + + +

Voir aussi

+ + + +

Versions plus anciennes

+ +

{{Firefox_for_developers('25')}}

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 +--- +
{{FirefoxSidebar}}

Cette page a été déplacée vers FxSiteCompat.com.

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 +--- +
{{FirefoxSidebar}}
+ +

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.

+ +

Changements pour les développeurs Web

+ +

Outils de développement

+ + + +

Plus de détails dans cet article.

+ +

CSS

+ + + +

HTML

+ + + +

JavaScript

+ +

L'implémentation d'EcmaScript 6 (Harmony) se poursuit!

+ + + +

Interfaces/APIs/DOM

+ + + +

MathML

+ +

Pas de changement.

+ +

SVG

+ + + +

Changements pour les développeurs d'addon et de Mozilla

+ + + +

Sécurité

+ + + +

Voir aussi

+ + + +

Anciennes versions

+ +

{{Firefox_for_developers('26')}}

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 +--- +
{{FirefoxSidebar}}

Cette page a été déplacée vers FxSiteCompat.com.

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 +--- +
{{FirefoxSidebar}}
+ +

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.

+ +

Changements pour les développeurs Web

+ +

Outils de développement

+ + + +

Plus de détails dans cet article.

+ +

CSS

+ + + +

HTML

+ + + +

JavaScript

+ + + +

Interfaces/APIs/DOM

+ + + +

MathML

+ + + +

SVG

+ +

Pas de changement.

+ +

Audio/Vidéo

+ + + +

Réseau

+ + + +

Changements pour les développeurs d'add-ons et de Mozilla

+ + + +

Sécurité

+ + + +

Voir aussi

+ + + +

Anciennes versions

+ +

{{Firefox_for_developers('27')}}

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 +--- +
{{FirefoxSidebar}}

Cette page a été déplacée vers FxSiteCompat.com.

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 +--- +
{{FirefoxSidebar}}
+ +

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.

+ +

Changements pour les développeurs Web

+ +

Outils de développement

+ +

Les principaux changements comprennent:

+ + + +

Consultez l'article du blog Mozilla Hacks pour plus de détails et d'autres changements mineurs.

+ +

CSS

+ + + +

HTML

+ + + +

JavaScript

+ + + +

Interfaces/APIs/DOM

+ + + +

MathML

+ +

Pas de changement.

+ +

SVG

+ +

Pas de changement.

+ +

Sécurité

+ + + +

Modifications pour les développeurs d'add-on et Mozilla

+ + + +

Changements non-Australis à déterminer.

+ +

Voir aussi

+ + + +

Anciennes versions

+ +

{{Firefox_for_developers('28')}}

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 +--- +
{{FirefoxSidebar}}

Cette page a été déplacée vers FxSiteCompat.com.

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 +--- +
{{FirefoxSidebar}}
+ +

Changements pour les développeurs Web

+ +

Outils de développement

+ + + +

CSS

+ + + +

HTML

+ +

Pas de changement.

+ +

JavaScript

+ + + +

Interfaces/APIs/DOM

+ + + +

MathML

+ +

Pas de changement.

+ +

SVG

+ + + +

Audio/Vidéo

+ + + +

Sécurité

+ +

Pas de changement.

+ +

Changements pour les développeurs d'add-on et de Mozilla

+ + + +

Voir aussi

+ + + +

Anciennes versions

+ +

{{Firefox_for_developers('29')}}

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 +--- +
{{FirefoxSidebar}}

Cette page a été déplacée vers FxSiteCompat.com.

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 +--- +
{{FirefoxSidebar}}

Changes for Web developers

+ +

Developer Tools

+ +

Highlights:

+ + + +

All devtools bugs fixed between Firefox 30 and Firefox 31.

+ +

CSS

+ + + +

HTML

+ + + +

JavaScript

+ +

New ECMAScript 6 features implemented:

+ + + +

Interfaces/APIs/DOM

+ + + +

MathML

+ + + +

SVG

+ +

No change.

+ +

Audio/Video

+ +

No change.

+ +

Security

+ + + +

Changes for add-on and Mozilla developers

+ + + +

Add-on SDK

+ +

Highlights:

+ + + +

GitHub commits made between Firefox 30 and Firefox 31. This will not include any uplifts made after this release entered Aurora.

+ +

Bugs fixed between Firefox 30 and Firefox 31. This will not include any uplifts made after this release entered Aurora.

+ +

See also

+ + + +

Older versions

+ +

{{Firefox_for_developers('30')}}

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 +--- +
{{FirefoxSidebar}}

Cette page a été déplacée vers FxSiteCompat.com.

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 +--- +
{{FirefoxSidebar}}

Changes for Web developers

+ +

Developer Tools

+ +

Highlights:

+ + + +

All devtools bugs fixed between Firefox 31 and Firefox 32.

+ +

CSS

+ + + +

HTML

+ + + +

JavaScript

+ + + +

Interfaces/APIs/DOM

+ + + +

MathML

+ + + +

SVG

+ +

No change.

+ +

Audio/Video

+ +

No change.

+ +

Security

+ + + +

Changes for add-on and Mozilla developers

+ +

Xray vision is now applied to JavaScript objects that are not themselves DOM objects: Xrays for JavaScript objects.

+ +

A getDataDirectory() method has been added to Addon instances. This method returns the preferred location, within the current profile, for add-ons to store data.

+ +

Add-on SDK

+ +

Highlights

+ + + +

Details

+ +

GitHub commits made between Firefox 31 and Firefox 32. This will not include any uplifts made after this release entered Aurora.

+ +

Bugs fixed between Firefox 31 and Firefox 32. This will not include any uplifts made after this release entered Aurora.

+ +

See also

+ + + +

Older versions

+ +

{{Firefox_for_developers('31')}}

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 +--- +
{{FirefoxSidebar}}

Firefox 32 was released on . 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.

+ +

This article only explains the changes that may affect backward compatibility for websites. For the other new features and changes, please read the following documents:

+ + + +

Follow @FxSiteCompat on Twitter for further updates.

+ +
+

DOM

+ +
+ + + + +

Previously, the {{ domxref("navigator.doNotTrack") }} property was incorrectly returning "yes" even when the Do Not Track option was being disabled by the user. Starting with Firefox 32, it returns "0" (disabled), "1" (enabled) or "unspecified" to follow the spec.

+
+ +
+

new Document() now returns Document instead of XMLDocument

+ + + +

The Document 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 XMLDocument. The {{ domxref("DOMImplementation.createDocument") }} method continues returning an XMLDocument object.

+
+ +
+

HTMLCollection no longer matches an empty string name

+ + + +

Previously, the empty named property of an {{ domxref("HTMLCollection") }} object, like document.forms[0][""], was returning the first unnamed child element. This behavior has been changed to return undefined to match the updated spec.

+
+ +
+

HTMLTableElement.insertRow now always inserts the row to <tbody>

+ + + +

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 <tr> will be inserted to a newly created <tbody> instead of the existing <thead>.

+
+ +
+

WindowUtils has been removed

+ + + +

As part of the ongoing effort to standardize global objects, the non-standard WindowUtils interface has been removed from {{ domxref("window") }}.

+
+ +
+

window.openDialog has been removed

+ + + +

The non-standard {{ domxref("window.openDialog") }} method is no longer available from Web content. {{ domxref("window.open") }} should be used instead.

+
+
+ +
+

Networking

+ +
+

Cache backend has been overhauled

+ + + +

The new HTTP cache backend has been landed on Firefox 32 to improve the page load performance. See Honza Bambas' blog post for details. If you encountered any regressions, please report the issue to Bugzilla.

+
+
+ +
+

Security

+ +
+

Several 1024-bit root certificates have been removed

+ + + +

As part of the ongoing security improvements, several SSL and code signing trust bits for 1024-bit root certificates have been removed from Network Security Services (NSS) used in Firefox and other products. Those include AC Raíz Certicámara, Entrust.net, GTE CyberTrust, NetLock, TDC Internet, ValiCert and VeriSign. 1024-bit root certificates will all be removed over the next few Firefox releases, because these are no longer considered as secure.

+
+
+ +
+

WebRTC

+ +
+

onconnection and onclosedconnection have been dropped

+ + + +

The onconnection and onclosedconnection properties have been removed from the {{ domxref("RTCPeerConnection") }} interface, currently implemented as mozRTCPeerConnection, since they are no longer in the spec.

+
+
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 +--- +
{{FirefoxSidebar}}

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.

+ +

Changes for Web developers

+ +

Developer Tools

+ +

Highlights

+ + + +

For details please see the hacks post. Special thanks to the 33 contributors that added all the features and fixes in this release.

+ +

CSS

+ + + +

HTML

+ + + +

JavaScript

+ + + +

Interfaces/APIs/DOM

+ + + +

MathML

+ + + +

SVG

+ +

No change.

+ +

Audio/Video

+ +

No change.

+ +

WebGL

+ + + +

Security

+ + + +

Changes for add-on and Mozilla developers

+ + + +

Add-on SDK

+ +

Highlights

+ + + +

Details

+ +

GitHub commits made between Firefox 32 and Firefox 33. This will not include any uplifts made after this release entered Aurora.

+ +

Bugs fixed between Firefox 32 and Firefox 33. This will not include any uplifts made after this release entered Aurora.

+ +

See also

+ + + +

Older versions

+ +

{{Firefox_for_developers('32')}}

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 +--- +
{{FirefoxSidebar}}

Cette page a été déplacée vers FxSiteCompat.com.

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 +--- +
{{FirefoxSidebar}}
+

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.

+
+ +

Changes for Web developers

+ +

Developer Tools

+ +

Highlights:

+ + + +

All devtools bugs fixed between Firefox 33 and Firefox 34.

+ +

CSS

+ + + +

HTML

+ +

No change.

+ +

JavaScript

+ + + +

Interfaces/APIs/DOM

+ + + +

MathML

+ +

No change.

+ +

SVG

+ +

No change.

+ +

Audio/Video

+ +

No change.

+ +

Security and Networking

+ + + +

Changes for add-on and Mozilla developers

+ + + +

Add-on SDK

+ +

Highlights

+ + + +

Details

+ +

GitHub commits made between Firefox 33 and Firefox 34. This will not include any uplifts made after this release entered Aurora.

+ +

Bugs fixed between Firefox 33 and Firefox 34. This will not include any uplifts made after this release entered Aurora.

+ +

See also

+ + + +

Older versions

+ +

{{Firefox_for_developers('33')}}

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 +--- +
{{FirefoxSidebar}}

Cette page a été déplacée vers FxSiteCompat.com.

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 +--- +
{{FirefoxSidebar}}
+
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.
+ +
 
+
+ +

Changes for Web developers

+ +

Developer Tools

+ +

Highlights:

+ + + +

All devtools bugs fixed between Firefox 35 and Firefox 36.

+ +

CSS

+ + + +

HTML

+ + + +

JavaScript

+ + + +

Interfaces/APIs/DOM

+ + + +
 
+ +

MathML

+ +

No change.

+ +

SVG

+ +

No change.

+ +

Audio/Video

+ +

No change.

+ +

Networking

+ + + +

Security

+ + + +

Changes for add-on and Mozilla developers

+ +

Add-on SDK

+ +

Highlights

+ + + +
var { require } = Cu.import("resource://gre/modules/commonjs/toolkit/require.js", {});
+ +

Details

+ +

Github commits made between Firefox 35 and Firefox 36.

+ +

JavaScript code modules

+ + + +

Interfaces

+ +

nsIContentPolicy

+ +

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:

+ +
+
TYPE_FETCH
+
Indicates a content load request initiated by the {{domxref("GlobalFetch.fetch()")}} method.
+
TYPE_IMAGESET
+
Indicates a request to load an {{HTMLElement("img")}} (with the {{htmlattrxref("srcset", "img")}} attribute or {{HTMLElement("picture")}} element.
+
+ +

XUL

+ +

No change.

+ +

Other

+ + + +

See also

+ + + +

Older versions

+ +

{{Firefox_for_developers('35')}}

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 +--- +
{{FirefoxSidebar}}

Cette page a été déplacée vers FxSiteCompat.com.

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 +--- +
{{FirefoxSidebar}}

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.

+ +

Changes for Web developers

+ +

Developer Tools

+ +

Highlights:

+ + + +

All devtools bugs fixed between Firefox 36 and Firefox 37.

+ +

CSS

+ + + +

HTML

+ + + +

JavaScript

+ + + +

Interfaces/APIs/DOM

+ + + +

MathML

+ +

No change.

+ +

SVG

+ + + +

Audio/Video

+ +

No change.

+ +

Networking

+ + + +

Security

+ + + +

Changes for add-on and Mozilla developers

+ +

Add-on SDK

+ +

No change.

+ +

XUL

+ +

No change.

+ +

See also

+ + + +

Older versions

+ +

{{Firefox_for_developers('36')}}

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 +--- +
{{FirefoxSidebar}}

Cette page a été déplacée vers FxSiteCompat.com.

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 +--- +
{{FirefoxSidebar}}

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.

+ +

Changes for Web developers

+ +

Developer Tools

+ +

Highlights:

+ + + +

All devtools bugs fixed between Firefox 37 and Firefox 38.

+ +

CSS

+ + + +

HTML

+ + + +

JavaScript

+ + + +

Interfaces/APIs/DOM

+ + + +

MathML

+ +

No change.

+ +

SVG

+ +

No change.

+ +

Audio/Video

+ +

No change.

+ +

Networking

+ +

No change.

+ +

Security

+ + + +

Changes for add-on and Mozilla developers

+ +

Add-on SDK

+ +

Highlights

+ + + +

Electrolysis (E10s) updates

+ + + +

Details

+ + + +

XUL

+ +

No change.

+ +

JavaScript code modules

+ +

Downloads.jsm

+ + + +

XPCOM

+ + + +

See also

+ + + +

Older versions

+ +

{{Firefox_for_developers('37')}}

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 +--- +
{{FirefoxSidebar}}

Cette page a été déplacée vers FxSiteCompat.com.

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 +--- +
{{FirefoxSidebar}}
+ +

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.

+ +

Changements pour les développeurs Web

+ +

Outils de développement

+ +

Points forts:

+ + + +

Tous les bogues de devtools corrigés entre Firefox 38 et Firefox 39.

+ +

CSS

+ + + +

HTML

+ + + +

JavaScript

+ + + +

Interfaces/APIs/DOM

+ + + +

MathML

+ +

Pas de changement.

+ +

SVG

+ +

Pas de changement.

+ +

Audio/Video

+ +

Pas de changement.

+ +

Miscelleanous

+ + + +

La mise en réseau

+ + + +

Sécurité

+ +

Pas de changement.

+ +

Changements pour les développeurs d'add-on et de Mozilla

+ +

Pas de changement.

+ +

Voir aussi

+ + + +

Anciennes versions

+ +

{{Firefox_for_developers('38')}}

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 +--- +
{{FirefoxSidebar}}

Cette page a été déplacée vers FxSiteCompat.com.

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 +--- +
{{FirefoxSidebar}}
+ +
Pour tester les dernières fonctionnalités de développement de Firefox, installer Firefox Developer Edition 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.
+ +

Changements pour les développeurs Web

+ +

Outils de développement

+ +

Points forts:

+ + + +

Tous les bogues devtools corrigés entre Firefox 41 et Firefox 42.

+ +

CSS

+ + + +

HTML

+ + + +

JavaScript

+ + + +

Interfaces/APIs/DOM

+ +

DOM & HTML DOM

+ + + +

Service Workers

+ + + +

API Web Animations

+ +

Notre implémentation expérimentale de l'API Web Animations a été étendue pour prendre en charge:

+ + + +

Composants Web

+ +

Notre implémentation expérimentale du Shadow DOM a été modifiée:

+ + + +

WebGL

+ + + +

WebRTC

+ + + +

Nouvelles API

+ + + +

Divers

+ + + +

MathML

+ +

Pas de changement.

+ +

SVG

+ +

Pas de changement.

+ +

Audio/Video

+ +

Pas de changement.

+ +

HTTP

+ + + +

La mise en réseau

+ + + +

Sécurité

+ + + +

Changements pour les développeurs d'add-on et de Mozilla

+ +

Interfaces

+ +

nsIContentPolicy

+ + + +

XUL

+ +

Pas de changement.

+ +

Modules de code JavaScript

+ +

Pas de changement.

+ +

XPCOM

+ +

Pas de changement.

+ +

Autre

+ +

Pas de changement.

+ +

Voir aussi

+ + + +

Anciennes versions

+ +

{{Firefox_for_developers('41')}}

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 +--- +
{{FirefoxSidebar}}

Cette page a été déplacée vers FxSiteCompat.com.

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 +--- +
{{FirefoxSidebar}}

Firefox 1.5, basé sur le moteur Gecko 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 à SVG 1.1 et <canvas>, les évènements XForms et XML, ainsi que de nombreuses améliorations du DHTML, du JavaScript et du DOM.

+ +

Outils pour développeurs

+ +

Plusieurs outils et extensions sont disponibles pour aider les développeurs à travailler avec Firefox 1.5.

+ + + +

Note : Certaines extensions ne sont pas encore supportées par Firefox 1.5 et seront automatiquement désactivées.

+ +

Fonctionnalités

+ +

Voici certaines des nouvelles fonctionnalités de Firefox 1.5 :

+ +

Site Web et développeurs d'applications

+ +
+
Introduction à SVG dans HTML
+
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 SVG dans Firefox pour connaître l'état et les problèmes connus de l'implémentation du SVG dans la version 1.5.
+
+ +
+
Dessiner avec canvas
+
Apprenez à utiliser la nouvelle balise <canvas> et comment dessiner des graphiques et d'autres objets dans Firefox.
+
+ +
+
Colonnes CSS3
+
Apprenez à utiliser le nouveau support de mise en page multi-colonnes automatiques comme proposé par CSS3.
+
+ +
+
Utilisation du cache de Firefox 1.5
+
Découvrez bfcache et comment il accélère la navigation en arrière et en avant.
+
+ +

XUL et développeurs d'extension

+ +
+
Construire une extension
+
Ce tutoriel vous guidera par étape dans la création d'une extension très simple pour Firefox. Consultez également un autre tutoriel sur la base de connaissance de MozillaZine 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.
+
+ +
+
XPCNativeWrapper
+
XPCNativeWrapper est un moyen pour empaqueter un objet afin qu'il puisse accéder à des privilèges chrome. 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).
+
+ +
+
Système de préférences
+
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.
+
+ +
+
Caractères internationaux dans du JavaScript XUL
+
Les fichiers JavaScript XUL peuvent maintenant contenir des caractères non-ASCII.
+
+ +
+
Modifications de l'API Tree
+
Les interfaces pour accéder aux éléments XUL <tree> ont été modifiées.
+
+ +
+
Modifications XUL pour Firefox 1.5
+
Résumé des modifications du XUL. Consultez également Adaptation des applications XUL pour Firefox 1.5.
+
+ +

Nouvelles fonctionnalités pour l'utilisateur

+ +

Utilisation courante

+ + + +

Sécurité et vie privée

+ + + +

Support des standards Web ouverts

+ +

Le support des standards Web de Firefox garde une longueur d'avance avec des implémentations fonctionnelles et multiplateformes pour :

+ + + +

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, JavaScript 1.6.

+ +

Changements depuis Firefox 1.0

+ +

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 liste détaillée des modifications est disponible sur squarefree.com.

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 +--- +
{{FirefoxSidebar}}

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.

+ +

Changements pour les développeurs Web

+ +

HTML

+ + + +

DOM

+ + + +

CSS

+ + + +

SVG

+ + + +

WebSocket

+ + + +

IndexedDB

+ + + +

Réseau

+ + + +

Outils de développement

+ + + +

Changements pour les développeurs de Mozilla et de modules complémentaires

+ +

Module de code JavaScript

+ +

NetUtil.jsm

+ + + +

Nouveau module de code JavaScript

+ +
+
source-editor.jsm
+
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'Ardoise et les autres outils de développement intégrés dans Firefox.
+
+ +

Changements dans les interfaces

+ + + +

Interface supprimées

+ +

Les interfaces suivantes ont été supprimées car elles n'étaient plus indispensables :

+ + + +

Changement lié au thème

+ + + +

Changement dans les préférences

+ +
+
{{Pref("ui.tooltipDelay")}}
+
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.
+
+ +

Changement dans le système de compilation

+ + + +

Autre changement

+ + + +

Voir également

+ +

{{Firefox_for_developers('10')}}

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 +--- +
{{FirefoxSidebar}}
+ +

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.

+ +

Changements pour les développeurs Web

+ +

HTML

+ + + +

CSS

+ + + +

JavaScript

+ + + +

DOM

+ + + +

Nouvelles WebAPIs

+ + + +

SVG

+ + + +

MathML

+ + + +

Réseau

+ + + +

Outils de développement

+ + + +

Mozilla travaille sur l'intégration des ses propres outils de développement Web qui complètent l'add-on populaire Firebug. 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 outils de développement Web.

+ +

Changements divers

+ + + +

Changements pour les développeurs de Mozilla et de modules complémentaires

+ +

Modules de code JavaScript

+ +

source-editor.jsm

+ + + +

XUL

+ + + +

XPCOM

+ + + +

XPConnect

+ + + +

Changements dans les interfaces

+ + + +

SpiderMonkey

+ + + +

Compilation

+ + + +

Autres changements

+ + + +

Voir également

+ +

{{Firefox_for_developers('11')}}

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 +--- +
{{FirefoxSidebar}}

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.

+ +

Changements pour les développeurs Web

+ +

HTML

+ + + +

CSS

+ + + +

JavaScript

+ + + +

DOM

+ + + +

UA string

+ + + +

SVG

+ + + +

WebGL

+ + + +

MathML

+ + + +

Réseau

+ + + +

Outils de développement

+ +

Amélioration de la vue 3D

+ + + +

Améliorations du panneau de style

+ + + +

Amélioration de l'Ardoise

+ + + +

Changements pour les développeurs de Mozilla et de modules complémentaires

+ +

Note de compatibilité

+ +

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.

+ +

Modules de code JavaScript

+ +

source-editor.jsm

+ + + +

ARIA

+ + + +

Interfaces

+ + + +

Voir également

+ +

{{Firefox_for_developers('12')}}

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 +--- +
{{FirefoxSidebar}}

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.

+ +

Changements pour les développeurs Web

+ +

HTML

+ + + +

DOM

+ + + +

CSS

+ + + +

MathML

+ + + +

HTTP

+ + + +

Changements pour les développeurs de Mozilla et de modules complémentaires

+ +

Modules de code JavaScript

+ +

source-editor.jsm

+ + + +

XUL

+ + + +

Interfaces

+ + + +

Vérification orthographique

+ + + +

Voir également

+ +

{{Firefox_for_developers('13')}}

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 +--- +
{{FirefoxSidebar}}

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.

+ +

Changements pour les développeurs Web

+ +

HTML

+ + + +

CSS

+ + + +

DOM

+ + + +

JavaScript

+ + + +

WebGL

+ + + +

MathML

+ + + +

Réseau

+ + + +

Changements pour les développeurs de Mozilla et de modules complémentaires

+ +

Changements dans les interfaces

+ +
+
{{interface("nsIDOMWindowUtils")}}
+
aModifiers de sendMouseEvent(), sendTouchEvent(), sendMouseEventToWindow(), sendMouseScrollEvent() et sendKeyEvent() supporte toutes les touches de modification qui sont supportées par KeyboardEvent.getModifierState(). Utiliser les valeurs MODIFIER_*. Et désormais le 5ème paramètre de sendKeyEvent() est changé d'un boolean vers un unsigned long. Pour la compatibilité ascendante, si l'appelant passe true ou false, le comportement n'est pas changé. Ce changement permet aux appelants d'indiquer l'emplacement de la touche.
+
{{interface("nsIBrowserHistory")}}
+
La méthode hidePage() n'a jamais été implémentée, et a été entièrement supprimée dans cette version. La méthode addPageWithDetails() a également été supprimée dans le cadre des travaux pour faire une API Places asynchrone ; à la place, utilisez plutôt {{ifmethod("mozIAsyncHistory", "updatePlaces")}}. De plus, l'attribut count 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")}}.
+
+ +
+
{{interface("inIDOMUtils")}}
+
La méthode parseStyleSheet() permet d'ajouter et d'analyser des feuilles de style.
+
+ +

Nouvelles interfaces

+ +
+
{{interface("nsISpeculativeConnect")}}
+
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.
+
+ +

Interfaces supprimées

+ +

Les interfaces suivantes ont été supprimées.

+ + + +

Voir également

+ +

{{Firefox_for_developers('14')}}

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 +--- +
{{FirefoxSidebar}}

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.

+ +

Changements pour les développeurs Web

+ +

HTML

+ + + +

CSS

+ + + +

DOM

+ + + +

JavaScript

+ + + +

MathML

+ + + +

Outils de développement

+ + + +

Changements pour les développeurs de Mozilla et de modules complémentaires

+ +

Changements dans les interfaces

+ +

{{interface("nsIPrivateDOMEvent")}} a été fusionné dans {{interface("nsIDOMEvent")}}. ({{bug("761613")}})

+ +

Nouvelles interfaces

+ +

Interfaces supprimées

+ +

Les interfaces suivantes ont été supprimées.

+ +

Voir également

+ +

{{Firefox_for_developers('15')}}

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 +--- +
{{FirefoxSidebar}}
+ +

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.

+ +

Changements pour les développeurs Web

+ +

HTML

+ + + +

CSS

+ + + +

DOM

+ + + + +

JavaScript

+ + + +

MathML

+ + + +

XUL

+ + + +

Agent Utilisateur

+ +

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 Gecko/20100101 -> Gecko/17.0. Cela peut vous affecter si vous faites du reniflement.

+ +

Changements pour les développeurs de Mozilla et de modules complémentaires

+ +

Changements dans les interfaces

+ +
+
{{interface("nsIInputStream")}}
+
La méthode available() retourne une longueur de 64-bit au lieu de 32-bit. ({{bug(215450)}})
+
{{interface("nsIDOMWindowUtils")}}
+
La méthode sendMouseScrollEvent() a été remplacée par sendWheelEvent(). ({{bug(719320)}})
+
{{interface("nsIFilePicker")}}
+
La méthode open(), pour ouvrir la boîte de dialogue d'un fichier de façon asynchrone, a été ajoutée et la méthode show() a été dépréciée. ({{bug("731307")}})
+
{{interface("nsIScriptSecurityManager")}}
+
Les méthodes checkLoadURIStr() et checkLoadURI() ont été retirées. ({{bug(327244)}})
+
{{interface("nsIRefreshURI")}}
+
La méthode setupRefreshURIFromHeader() a un paramètre principal en plus.
+
+ +

Voir également

+ +

{{Firefox_for_developers('16')}}

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 +--- +
{{FirefoxSidebar}}

Cette page a été déplacée vers FxSiteCompat.com.

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 +--- +
{{FirefoxSidebar}}

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.

+ +

Changements pour les développeurs Web

+ +

HTML

+ + + +

CSS

+ + + +

DOM

+ + + +

JavaScript

+ + + +

Réseau

+ + + +

Changements pour les développeurs de Mozilla et de modules complémentaires

+ +

Changements dans les interfaces

+ +
+
{{interface("nsIStreamListener")}}
+
Le 4ème paramètre (aOffset) de la méthode onDataAvailable() modifie unsigned long long. ({{bug("784912")}})
+
{{interface("nsIUploadChannel")}}
+
setUploadStream() supporte plus de 2 Go de content-length. ({{bug("790617")}})
+
{{interface("nsIEditor")}}
+
addEditorObserver() a été supprimé, utilisez setEditorObserver() à la place, removeEditorObserver() ne prend plus le paramètre {{interface("nsIEditorObserver")}}. ({{bug("785091")}})
+
{{interface("nsIHttpProtocolHandler")}}
+
Il n'y a plus de garantie que les observateurs http-on-modify-request soit appelés de manière synchrone au cours de nsIChannel.asyncOpen(). Pour les observateurs qui ont besoin d'être appelés pendant asyncOpen(), le nouvel observateur http-on-opening-request a été ajouté. {{bug("800799")}}
+
{{interface("nsIProtocolProxyService")}}
+
La méthode resolve a été retirée. Maintenant, seule la méthode asyncResolve peut être utilisée. Voir ({{bug("769764")}}).
+
+ +

Interfaces supprimées

+ +

Les interfaces suivantes ont été supprimées.

+ + + +

Voir également

+ + + +

Anciennes versions

+ +

{{Firefox_for_developers('17')}}

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 +--- +
{{FirefoxSidebar}}

Cette page a été déplacée vers FxSiteCompat.com.

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 +--- +
{{FirefoxSidebar}}

{{ draft() }}

+ +

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.

+ +

Vous voulez aider à documenter Firefox 19 ? Regardez la liste des bugs qui ont besoin de rédaction et lancez-vous !

+ +

Changements pour les développeurs web

+ +

JavaScript

+ + + +

CSS

+ + + +

DOM

+ + + +

XForms

+ +

Le support des XForms a été retiré dans Firefox 19.

+ +

Changements pour les développeurs d'add-ons et les développeurs Mozilla

+ +
+

Note:  nsresult 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 nsresult fait de mauvaises suppositions concernant ces valeurs.

+
+ + + +

Changements dans les intefaces

+ +
+
{{interface("nsIImgLoadingContent")}}
+
Le paramètre (aObserver) de la méthode addObserver() change de {{interface("imgIDecoderObserver")}} pour {{interface("imgINotificationObserver")}}. La méthode notify() de {{interface("imgINotificationObserver")}} n'est pas scriptable, vous devez donc utiliser createScriptedObserver() à partir de {{interface("imgITools")}}.
+
{{interface("nsIChannel")}}
+
La propriété contentLength a changée de long à int64_t
+
+ +

A voir également

+ + + +

Anciennes versions

+ +

{{Firefox_for_developers('18')}}

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 +--- +
{{FirefoxSidebar}}

Cette page a été déplacée vers FxSiteCompat.com.

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 +--- +
{{FirefoxSidebar}}

''Une grande partie du contenu de cette page est juste là pour boucher les trous. Voyez la version anglaise de cette page pour savoir comment la compléter.''

+ +

Nouvelles fonctionnalités pour les développeurs dans Firefox 2

+ +

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.

+ +

Pour les développeurs Web et les développeurs d'applications

+ +
+
Microrésumés
+
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.
+
+ +
+
Création d'un générateur de microrésumé
+
Un tutoriel sur la création d'un générateur de microrésumés.
+
+ +
+
Référence grammaticale XML d'un microrésumé
+
Un guide de référence sur la grammaire XML utilisée pour la création de générateurs de microrésumés.
+
+ +
+
Création de plugins MozSearch
+
Firefox 2 utilise MozSearch, un format de plugins de recherche basé sur OpenSearch.
+
+ +
+
Création de plugins OpenSearch pour Firefox
+
Firefox 2 support le format de moteur de recherche OpenSearch.
+
+ +
+
Gestion de suggestions dans les plugins de recherche
+
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.
+
+ +
+
Nouveautés dans JavaScript 1.7
+
Firefox 2 fournit JavaScript 1.7, qui comprend de nouvelles fonctionnalités comme let, des assignations déstructurantes, des générateurs et itérateurs, et la définition de tableaux par compréhension.
+
+ +
+
WHATWG Client-side session and persistent storage (ou DOM Storage)
+
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.
+
+ +
+
SVG dans Firefox
+
Firefox 2 améliore le support du SVG (Scalable Vector Graphics) en implémentant l'élément <textPath> et en ajoutant le support de quelques attributs non encore supportés.
+
+ +
+
Contrôle du correcteur d'orthographe dans les formulaires HTML
+
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.
+
+ +
+
La sécurité dans Firefox 2
+
Firefox 2 a modifié les protocoles de sécurité activés par défaut.
+
+ +

Pour les développeurs XUL et les développeurs d'extensions

+ +
+
Mise à jour des extensions pour Firefox 2
+
Comment migrer vos extensions existantes pour qu'elles fonctionnent avec Firefox 2.
+
+ +
+
API de restauration de session
+
Ajout d'élément à enregistrer et à restaurer d'une session à l'autre dans Firefox.
+
+ +
+
API d'accès au contenu de flux
+
API permettant aux développeurs d'accéder et de traiter des flux RSS et Atom.
+
+ +
+
Support SAX
+
API de parcours XML basé sur les évènements.
+
+ +
+
Ajout de moteurs de recherche depuis des pages Web
+
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.
+
+ +
+
Utilisation du correcteur orthographique dans XUL
+
Explique comment vérifier l'orthographe de certains mots et comment obtenir une liste de suggestions de corrections depuis le code.
+
+ +
+
Ajout de fournisseurs de données de protection anti-phishing
+
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.
+
+ +
+
Storage
+
Firefox 2 propose mozStorage, une architecture de base de données basée sur sqlite.
+
+ +
+
Changements dans les thèmes graphiques pour Firefox 2
+
Discussion autour des changements à apporter au thèmes graphiques existants pour qu'ils fonctionnent avec Firefox 2.
+
+ +
+
Améliorations de Textbox (à partir de Firefox 2.0.0.1 uniquement)
+
L'élément <textbox> dispose à présent d'une méthode reset() pour réinitialiser la valeur de la boîte de texte à sa valeur par défaut. La propriété defaultValue peut être utilisée pour récupérer et modifier cette valeur par défaut ({{ Bug(312867) }}).
+
Support d'une propriété editor permettant d'obtenir l'interface interne nsIEditor pour le champ texte ({{ Bug(312867) }}).
+
+ +

Nouvelles fonctionnalités pour les utilisateurs

+ +

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.

+ +

Apparence et comportement

+ + + +

Sécurité et vie privée

+ + + +

Voir aussi

+ +

{{Firefox_for_developers('1')}}

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 +--- +
{{FirefoxSidebar}}

Firefox 20 est sorti le 2 avril 2013. Cette page résume les principaux changements dans Firefox 20 qui sont utiles aux développeurs.

+ +

Changements pour les développeurs Web

+ +

HTML

+ + + +

JavaScript

+ + + +

CSS

+ + + +

DOM

+ + + +

MathML

+ + + +

Changements pour les add-ons et les développeurs Mozilla

+ + + +

Voir également

+ + + +

Anciennes versions

+ +

{{Firefox_for_developers('19')}}

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 +--- +
{{FirefoxSidebar}}

Cette page a été déplacée vers FxSiteCompat.com.

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 +--- +
{{FirefoxSidebar}}
+ +

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.

+ +

Changement pour les développeurs Web

+ +

HTML

+ + + +

JavaScript

+ + + +

CSS

+ + + +

DOM

+ + + +

SVG

+ + + +

Networking

+ + + +

Worker

+ + + +

Changement pour les add-ons et les développeurs Mozilla

+ + + +

Voir également

+ + + +

Anciennes versions

+ +
{{Firefox_for_developers('20')}}
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 +--- +
{{FirefoxSidebar}}

Cette page a été déplacée vers FxSiteCompat.com.

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 +--- +
{{FirefoxSidebar}}

Vous voulez aider à documenter Firefox 22 ? Parcourez la liste des bugs qui ont besoin d'être documentés et lancez-vous !

+ +

Changements pour les développeurs Web

+ +

HTML

+ + + +

JavaScript

+ + + +

DOM

+ + + +

CSS

+ + + +

Changements pour les développeurs Mozilla et développeurs d'add-on

+ + + +

Outils pour développeurs de Firefox

+ + + +

A voir aussi

+ + + +

Versions

+ +
{{Firefox_for_developers('21')}}
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 +--- +
{{FirefoxSidebar}}

Cette page a été déplacée vers FxSiteCompat.com.

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 +--- +
{{FirefoxSidebar}}
Changements pour les développeurs Web
+ +

Sécurité

+ + + +

Outils de développement

+ + + +

HTML

+ + + +

JavaScript

+ + + +

DOM

+ + + +

CSS

+ + + +

MathML

+ + + +

Changements pour les développeurs Mozilla et développeurs d'add-on

+ +

Outils pour développeurs de Firefox

+ +

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é.

+ +

Voir aussi

+ + + +

Anciennes versions

+ +

{{Firefox_for_developers('22')}}

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 +--- +
{{FirefoxSidebar}}

Cette page a été déplacée vers FxSiteCompat.com.

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 +--- +
{{FirefoxSidebar}}

Changements pour les développeurs Web

+ +

CSS

+ + + +

HTML

+ + + +

JavaScript

+ + + +

DOM

+ + + +

Outils de développement

+ + + +

MathML

+ + + +

Changements pour les développeurs Mozilla et développeurs d'add-on

+ + + +

Voir aussi

+ + + +

Anciennes versions

+ +

{{Firefox_for_developers('23')}}

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 +--- +
{{FirefoxSidebar}}

Cette page a été déplacée vers FxSiteCompat.com.

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 +--- +
{{FirefoxSidebar}}

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.

+ +

Nouvelles fonctionnalités pour les développeurs dans Firefox 3.5

+ +

Pour les développeurs de sites et d'applications web

+ +

HTML5

+ +
+
Utilisation d'audio et video dans Firefox
+
Firefox 3.5 ajoute la gestion des éléments HTML5 audio et video.
+
Ressources hors ligne dans Firefox
+
Firefox 3.5 gère entièrement la spécification de ressources hors ligne d'HTML5.
+
Glisser et déposer
+
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.
+
+ +

Nouvelles fonctionnalités CSS

+ +
+
Gestion des polices téléchargeables
+
La nouvelle règle-@ @font-face 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.
+
Media queries
+
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.
+
Mise à jour de {{ cssxref(":before") }} et {{ cssxref(":after") }} pour CSS 2.1
+
Les pseudo-éléments :before et :after ont été mis à jour pour respecter complètement CSS 2.1, avec l'ajout des propriétés position, float et list-style-*, ainsi que de certaines valeurs de display.
+
Unité de longueur ch
+
L'unité ch peut à présent être utilisée à tout endroit où peut être indiquée une unité de longueur. 1ch est la largeur du caractère « 0 » (zéro).
+
{{ cssxref("opacity") }}
+
L'extension à CSS -moz-opacity de Mozilla a été supprimée en faveur de la propriété standard opacity.
+
{{ cssxref("text-shadow") }}
+
La propriété text-shadow, 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.
+
{{ cssxref("word-wrap") }}
+
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.
+
Valeur pre-line pour la propriété white-space
+
La propriété {{ cssxref("white-space") }} accepte à présent la valeur pre-line.
+
{{ cssxref("-moz-box-shadow") }}
+
{{ cssxref("-moz-border-image") }}
+
{{ cssxref("-moz-column-rule") }}
+
{{ cssxref("-moz-column-rule-width") }}
+
{{ cssxref("-moz-column-rule-style") }}
+
{{ cssxref("-moz-column-rule-color") }}
+
La gestion de ces extensions à CSS de Mozilla a été ajoutée dans Firefox 3.5.
+
La {{ cssxref("valeur_de_couleur#Extensions_spécifiques_à_Mozilla","-moz-nativehyperlinktext") }}
+
Cette nouvelle valeur de couleur représente la couleur de lien hypertexte par défaut de l'utilisateur du système.
+
La nouvelle propriété {{ cssxref("-moz-window-shadow") }} et la pseudo-classe {{ cssxref(":-moz-system-metric(mac-graphite-theme)") }}
+
Ces nouvelles fonctionnalités CSS ont été ajoutées pour faciliter la mise en place de thèmes.
+
Nouvelles valeurs pour {{ cssxref("-moz-appearance") }}
+
Les valeurs -moz-win-glass et -moz-mac-unified-toolbar ont été ajoutées à -moz-appearance.
+
Utilisation des transformations CSS
+
Firefox 3.5 gère les transformations CSS. Consultez {{ cssxref("-moz-transform") }} et {{ cssxref("-moz-transform-origin") }} pour plus de détails.
+
{{ cssxref(":nth-child") }}
+
{{ cssxref(":nth-last-child") }}
+
{{ cssxref(":nth-of-type") }}
+
{{ cssxref(":nth-last-of-type") }}
+
{{ cssxref(":first-of-type") }}
+
{{ cssxref(":last-of-type") }}
+
{{ cssxref(":only-of-type") }}
+
Ces sélecteurs sont nouvellement gérés dans Firefox 3.5
+
+ +

Nouvelles fonctionnalités DOM

+ +
+
localStorage
+
Firefox 3.5 ajoute la gestion de la propriété localStorage pour le stockage web, fournissant ainsi une manière pour les applications web de stocker des données localement sur l'ordinateur du client.
+
Utilisation de workers DOM
+
Firefox 3.5 gère les workers DOM afin de permettre une gestion multithreadée dans les applications web.
+
Utilisation de la géolocalisation
+
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.
+
Identification d'éléments DOM à l'aide de sélecteurs
+
L'API Selectors permet d'interroger un document afin d'identifier les éléments correspondant à une règle de sélection donnée.
+
Évènements de mouvement de souris
+
Firefox 3.5 gère les évènements de mouvements de souris dont les glissades sur un trackpad.
+
L'objet NodeIterator
+
L'objet NodeIterator permet de parcourir la liste de nœuds dans un sous-arbre DOM.
+
L'évènement MozAfterPaint
+
Ce nouvel évènement DOM est envoyé après les mises à jour de l'affichage dans les fenêtres.
+
L'évènement MozMousePixelScroll
+
Ce nouvel évènement DOM permet de détecter les évènements de défilement à la souris par pixels plutôt que par ligne.
+
+ +

Nouvelles fonctionnalités JavaScript

+ +
+
Nouveautés dans JavaScript 1.8.1
+
Un aperçu de tous les changements dans JavaScript 1.8.1.
+
Object.getPrototypeOf()
+
Cette nouvelle méthode renvoie le prototype d'un objet spécifié.
+
Utilisation de JSON dans Firefox
+
La gestion de JSON est à présent intégrée dans le DOM.
+
Nouvelles méthodes de nettoyage des espaces sur l'objet String
+
L'objet String dispose à présent des méthodes trim(), trimLeft() et trimRight().
+
+ +

Réseau

+ +
+
Contrôle d'accès entre sites pour HTTP
+
Dans Firefox 3.5, il devient possible pour les requêtes HTTP, notamment celles faites au travers d'XMLHttpRequest, de fonctionne entre différents domaines si le serveur le permet.
+
Évènements de progression pour XMLHttpRequest
+
Des évènements de progression sont à présent émis pour permettre aux extensions de surveiller l'état des requêtes.
+
Amélioration des appels XMLHttpRequest synchrones
+
Les timeouts DOM et les évènements d'entrée sont à présent supprimés pendant un appel XMLHttpRequest synchrone.
+
Contrôle du préchargement DNS
+
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.
+
+ +

Nouvelles fonctionnalités de Canvas

+ +
+
API HTML5 text pour les éléments canvas
+
Les éléments canvas gèrent à présent l'API texte d'HTML5.
+
Effets d'ombres dans un canvas
+
Les effets d'ombrages sont à présent gérés dans canvas.
+
createImageData()
+
La méthode createImageData() de canvas est à présent gérée, ce qui permet à du code de créer spécifiquement un objet ImageData plutôt que demander que ce soit fait automatiquement. Les performances d'autres méthodes d'ImageData peuvent en être améliorées puisqu'elles n'ont pas à créer l'objet.
+
Attribut moz-opaque
+
L'attribut DOM moz-opaque 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.
+
+ +

Nouvelles fonctionnalités SVG

+ +
+
Application d'effets SVG à du contenu HTML
+
Vous pouvez à présent appliquer des effets SVG à du contenu HTML et XHTML ; cet article explique comment.
+
+ +

Autres nouvelles fonctionnalités

+ +
+
Correction de couleurs ICC dans Firefox
+
Firefox 3.5 gère à présent la correction de couleurs ICC pour les images balisées.
+
L'attribut defer est géré sur les éléments script
+
Cet attribut indique au navigateur qu'il peut décider de continuer d'analyser et d'afficher la page sans attendre que le script ait terminé son exécution.
+
+ +

Autres améliorations

+ + + +

Pour les développeurs XUL et développeurs d'applications

+ +

Si vous développez des extensions, vous devriez tout d'abord lire Mise à jour des extensions pour Firefox 3.5 qui fournit un aperçu pratique des changements qui pourraient affecter vos extensions.

+ +

Nouveaux composants et nouvelles fonctionnalités

+ +
+
Gestion du mode de navigation privée
+
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.
+
Changements liés à la sécurité dans Firefox 3.5
+
Cet article détaille les changements liés à la sécurité dans Firefox 3.5.
+
Changements dans les thèmes pour Firefox 3.5
+
Cet article détaille les changements liés aux thèmes dans Firefox 3.5.
+
Surveillance des points d'accès WiFi
+
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.
+
+ +

Changements et améliorations notables

+ + + +

Nouvelles fonctionnalités pour les utilisateurs

+ +

Interface

+ +
+
Navigation en fonction de sa localisation
+
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.
+
Gestion de la vidéo et de l'audio ouverts
+
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.
+
Stockage local de données
+
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.
+
+ +

Sécurité et vie privée

+ +
+
Navigation privée
+
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.
+
Meilleurs contrôles sur la vie privée
+
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.
+
+ +

Performances

+ +
+
Du JavaScript plus rapide
+
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.
+
Rendu plus rapide des pages
+
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.
+
+ +

Voir également

+ +

{{Firefox_for_developers('3')}}

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 +--- +

Firefox 3.6 (nom de code Namoroka) 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.

+ +

Pour les développeurs de sites et d'applications Web

+ +

CSS

+ +
+
Utilisation de dégradés
+
Firefox 3.6 ajoute le support de -moz-linear-gradient et -moz-radial-gradient pour la propriété background.
+
Fonds multiples
+
La propriété background (ainsi que background-attachmentbackground-color, background-image, background-position et background-repeat) peuvent gérer des fonds multiples. Ceux-ci seront affichés par couches, les uns au dessus des autres.
+
Fonctionnalités de médias spécifiques à Mozilla
+
Des fonctionnalités de médias ont été ajoutées pour des mesures spécifiques à Mozilla, afin de pouvoir utiliser des media queries pour vérifier plus aisément la disponibilité de fonctionnalités comme un écran tactile.
+
Redimensionnement d'images de fond
+
La propriété background-size du brouillon CSS 3 Backgrounds and Borders est gérée sous le nom de -moz-background-size.
+
Support des polices WOFF
+
@font-face supporte désormais le format de polices Web téléchargeables WOFF
+
Evènements pointeurs
+
La propriété pointer-events si le contenu d'un élément peut être ou non la cible d'évènements pointeur avec la souris.
+
+ +

Autres changements CSS

+ + + +

HTML

+ +
+
Utilisation de fichiers à partir d'applications Web
+
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.
+
Support des affiches pour les vidéos HTML5
+
L'attribut poster est pris en charge pour l'élément <video>, ce qui permet au contenu de choisir une image à afficher tant que la vidéo n'a pas commencée.
+
Support de la propriété indeterminate pour les cases à cocher et boutons radio
+
Les éléments HTML <input> des types checkbox et radio supportent désormais la propriété indeterminate qui permet d'avoir un troisième état « indéterminé ».
+
Contrôle du lissage d'images dans canvas
+
La nouvelle propriété mozImageSmoothingEnabled peut être utilisée pour activer et désactiver le lissage lors d'un redimensionnement dans les éléments <canvas>.
+
Exécution d'un script asynchrone
+
En définissant l'attribut async sur un élément <script>, le script ne bloquera pas le chargement ou l'affichage du reste de la page. En revanche, le script s'exécutera dès qu'il sera téléchargé.
+
+ +

JavaScript

+ +

Gecko 1.9.2 introduit JavaScript 1.8.2, qui ajoute un certain nombre de fonctionnalités de langage de la norme ECMAScript 5 :

+ + + +

DOM

+ +
+
Terminaison des web workers par eux-mêmes
+
Les web workers prennent désormais en charge la méthode nsIWorkerScope.close(), qui leur permet de se terminer d'eux-mêmes.
+
Glisser-déposer de fichiers
+
L'objet DataTransfer fournit à présent aux observateurs de glisser-déposer une liste des fichiers glissés.
+
Vérification pour voir si un élément correspond à un sélecteur CSS
+
La nouvelle méthode element.mozMatchesSelector permet de déterminer si un élément correspond bien à un sélecteur CSS. Voir bug 518003.
+
Dispositf de détection de l'orientation
+
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 MozOrientation. Firefox 3.6 gère notamment l'accéléromètre des ordinateurs portables Mac.
+
Détection des changements de largeur et hauteur d'un document
+
Le nouvel évènement MozScrollAreaChanged est déclenché lorsqu'une des propriétés scrollWidth ou scrollHeight d'un document change.
+
+ + + +

XPath

+ +
+
Gestion de la méthode XPath choose()
+
La méthode choose() est à présent gérée par notre implémentation de XPath.
+
+ +

Pour les développeurs XUL et les développeurs d'extensions

+ +

Si vous êtes un développeur d'extensions, vous devriez commencer par lire Updating extensions for Firefox 3.6, qui offre une vue d'ensemble sur les changements qui pourraient affecter vos extensions. Les développeurs de Plug-in devraient lire Updating plug-ins for Firefox 3.6.

+ +

Nouvelles fonctionnalités

+ +
+
Détection de l'orientation de l'appareil
+
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 MozOrientation. Firefox 3.6 supporte l'accéléromètre des ordinateurs portables Mac.
+
Surveillance de l'activité HTTP
+
Vous pouvez maintenant surveiller en temps réel les données HTTP demandées et reçues.
+
Intégration à la Barre des tâches de Windows
+
Il est maintenant possible de personnaliser l'apparence des fenêtres dans la barre des tâches sous Windows 7 ou plus récent. C'est désactivé par défaut dans Firefox 3.6.
+
+ +

Places

+ + + +

Storage

+ +
+
Tri des données locales avec l'API Storage
+
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.
+
Énumération des propriétés d'une requête
+
Vous pouvez maintenant utiliser for...in pour énumérer toutes les propriétés d'une déclaration.
+
mozIStorageStatement's getParameterIndex a changé de comportement entre Firefox 3.5 et 3.6.
+
Voir bug 528166 pour plus de détails.
+
Liaison asynchrone de plusieurs ensembles de paramètres pour exécution d'une requête.
+
Voir bug 490085 pour plus de détails.
+
+ +

Préférences

+ + + +

Thèmes

+ +

Voir Updating themes for Firefox 3.6 pour la liste des changements liés aux thèmes.

+ +
+
Thèmes légers
+
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 Personas dans Firefox.
+
+ +

Divers

+ + + +

Pours les développeurs de Firefox/Gecko

+ +

Certains changements sont vraiment intéressant si vous travaillez sur le fonctionnement interne de Firefox.

+ +

Interfaces fusionnées

+ +

Les interfaces suivantes ont été fusionnées :

+ + + +

Interfaces supprimées

+ +

Les interfaces suivantes ont été entièrement supprimées car elles étaient inutilisées, non implémentées ou obsolètes :

+ + + +

Interfaces déplacées

+ +

Les interfaces suivantes ont été déplacées de leurs précédents fichiers IDL vers leurs nouveaux :

+ + + +

Un grand nombre d'interfaces ont été déplacées. Voir Interfaces moved in Firefox 3.6 pour la liste complète.

+ +

Autres changements dans les interfaces

+ +

Les modifications suivantes ont été faites :

+ + + +

Changements dans l'accessibilitée du code

+ + + +

Voir également

+ +
+ +
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 +--- +
{{FirefoxSidebar}}

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.

+ +

Nouvelles fonctionnalités pour les développeurs dans Firefox 3

+ +

Pour les développeurs de sites et d'applications Web

+ +
+
Mise à jour des applications Web pour Firefox 3
+
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.
+
+ +
+
Évènements online et offline
+
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.
+
+ +
+
Gestionnaires de protocoles web
+
Il est à présent possible d'enregistrer des applications Web en tant que gestionnaires de protocoles à l'aide de la méthode navigator.registerProtocolHandler().
+
+ +
+
Dessin de texte avec canvas
+
Il est possible de dessiner du texte dans un élément canvas dans Firefox 3 avec une API non normalisée.
+
+ +
+
Support des transformations pour canvas
+
Firefox gère à présent les méthodes transform() et setTransform() sur les éléments canvas.
+
+ +
+
Utilisation de microformats
+
Firefox dispose à présent d'API permettant de travailler avec des microformats.
+
+ +
+
Évènements de glisser-déposer
+
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.
+
+ +
+
Gestion du focus en HTML
+
Les nouveaux attributs activeElement et hasFocus de HTML 5 sont gérés.
+
+ +
+
Ressources hors ligne dans Firefox
+
Firefox permet applications Web de demander que des ressources soient mises en cache pour permettre leur utilisation en mode hors ligne.
+
+ +
+
Améliorations CSS dans Firefox 3
+
Firefox 3 propose un certain nombre d'améliorations dans son support CSS.
+
+ +
+
Améliorations DOM dans Firefox 3
+
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.
+
+ +
+
Support de JavaScript 1.8
+
JavaScript 1.8 est fourni avec Firefox 3.
+
+ +
+
Support d'EXSLT
+
Firefox 3 permet d'utiliser une partie importante des extensions EXSLT à XSLT.
+
+ +
+
Améliorations SVG dans Firefox 3
+
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.
+
+ +
+
Images PNG animées
+
Firefox 3 gère le format d'images PNG animées (APNG).
+
+ +

Pour les développeurs XUL et d'extensions

+ +

Améliorations et modifications notables

+ +
+
Mise à jour des extensions pour Firefox 3
+
Un guide fournissant tout ce qu'il faut savoir pour mettre à jour une extension afin de la faire fonctionner avec Firefox 3.
+
+ +
+
Améliorations XUL dans Firefox 3
+
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).
+
+ +
+
Templates dans Firefox 3
+
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.
+
+ +
+
Mises à jour sécurisées
+
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 AMO 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).
+
+ +
+
Guide de migration vers Places
+
Un article concernant la migration d'une application existante pour utiliser l'API Places.
+
+ +
+
Améliorations du gestionnaire de téléchargement dans Firefox 3
+
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.
+
+ +
+
Utilisation de nsILoginManager
+
Le gestionnaire de mots de passe a été remplacé par le nouveau gestionnaire d'identification.
+
+ +
+
Intégration de liaisons XBL
+
Il est à présent possible d'utiliser le schéma d'URL data: depuis du code chrome pour intégrer des liaisons XBL directement au lieu de devoir les placer dans des fichiers XML séparés.
+
+ +
+
Localisation des descriptions d'extensions
+
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é.
+
+ +
+
Localisation et pluriels
+
Firefox 3 ajout un nouveau module PluralForm fournissant des outils pour aider à mettre des mots correctement au pluriel dans diverses localisations.
+
+ +
+
Changements dans les thèmes pour Firefox 3
+
Notes et informations pour ceux qui voudraient créer des thèmes pour Firefox 3.
+
+ +

Nouveaux composants et fonctionnalités

+ +
+
Bibliothèque FUEL
+
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.
+
+ +
+
Places
+
Les API d'historique et de marque-pages ont été entièrement remplacés par la nouvelle API Places.
+
+ +
+
Service Idle
+
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.
+
+ +
+
ZIP writer
+
La nouvelle interface {{ Interface("nsIZipWriter") }} permet aux extensions de pouvoir créer des archives ZIP.
+
+ +
+
Zoom pleine page
+
Firefox 3 améliore l'expérience utilisateur en offrant un zoom complet des pages en plus du simple zoom de texte.
+
+ +
+
Interfaçage avec le collecteur de cycles XPCOM
+
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.
+
+ +
+
Le gestionnaire de threads
+
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.
+
+ +
+
Modules JavaScript
+
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.
+
+ +
+
L'interface nsIJSON
+
Firefox 3 propose la nouvelle interface {{ Interface("nsIJSON") }}, qui offre des chaînes de caractères JSON de codage et décodage en haute performance.
+
+ +
+
L'interface nsIParentalControlsService
+
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.
+
+ +
+
Utilisation des préférences de contenu
+
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.
+
+ +
+
Surveillance des plugins
+
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.
+
+ +

Bugs corrigés

+ +
+
Bugs importants corrigés dans Firefox 3
+
Cet article fournit des informations concernant les bugs corrigés dans Firefox 3.
+
+ +

Nouvelles fonctionnalités pour les utilisateurs

+ +

Expérience utilisateur

+ + + +

Sécurité et vie privée

+ + + +

Performances

+ + + +

Voir également

+ +

{{Firefox_for_developers('2')}}

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 +--- +

Changement concernant les développeurs

+ +

Outils de développement

+ +

Liens:

+ + + +

Tous les bugs des outils de développement résolus entre Firefox 34 et Firefox 35.

+ +

CSS

+ + + +

HTML

+ + + +

JavaScript

+ + + +

Interfaces/APIs/DOM

+ + + +

 MathML

+ + + +

SVG

+ +

Aucun changement.

+ +

Audio/Video

+ +

Aucun changement.

+ +

Réseau & Sécurité

+ + + +

Changements pour les modules et les développeurs Mozilla

+ +

XUL & Modules

+ + + +

Module SDK

+ +

Titres

+ + + +

Détails

+ +

Commits de GitHub effectués entre Firefox 34 et Firefox 35. Ceci ne comprendra pas les évolutions après la sortie officielle.

+ +

Bugs corrigés entre Firefox 34 et Firefox 35. Ceci ne comprendra pas les évolutions après la sortie officielle.

+ +

Voir aussi

+ + + +

Anciennes versions

+ +
+ +
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 +--- +
{{FirefoxSidebar}}

Cette page a été déplacée vers FxSiteCompat.com.

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 +--- +
+ +

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.

+ +

Fonctionnalités pour les développeurs Web

+ +

Gecko utilise maintenant le parseur HTML5, qui corrige des bugs, améliore l'interopérabilité et les performances. Il permet également d'intégrer du contenu SVG et MathML directement dans le code HTML.

+ +

HTML

+ +
+
Rencontrez le parseur HTML5
+
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.
+
Les formulaires en HTML5
+
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 <input>, la validation des données et d'autres modifications.
+
Sections HTML5
+
Gecko supporte à présent les nouveaux éléments HTML5 liés aux sections dans un document : <article>, <section>, <nav>, <aside>, <hgroup>, <header> et <footer>.
+
Attribut HTML5 hidden
+
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.
+
Autres éléments HTML5
+
Gecko supporte les nouveaux éléments HTML5 suivants : <mark>, <figure>, et <figcaption>.
+
WebSockets
+
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é.
+
+ +

Améliorations de Canvas

+ +

Les modifications suivantes ont étés apportées à l'interface CanvasRenderingContext2D pour permettre à l'implémentation de <canvas> d'être en conformité avec la spécification :

+ + + +
+
+ +

Autres changements HTML

+ + + +

CSS

+ +
+
Transitions CSS
+
Le support des transitions CSS est disponible dans Firefox 4.
+
Les valeurs calculées en CSS
+
Le support de -moz-calc a été ajouté. Cela permet de spécifier des valeurs de <length> comme des expressions mathématiques.
+
Groupement de sélecteurs
+
Le support de :-moz-any pour grouper les sélecteurs et factoriser des combinateurs.
+
Support subrectangle pour background-image
+
La propriété -moz-image-rect permet d'utiliser des subrectangles en tant que background-image.
+
Propriétés CSS tactile
+
Le support des propriétés tactiles a été ajouté. Plus de détails plus tard.
+
Utilisation arbitraires d'élements comme fond
+
Vou pouvez utiliser la fonction CSS -moz-element et la fonction DOM document.mozSetImageElement() pour une utilisation arbitraire des éléments HTML comme fond.
+
Sélecteur :visited et confidentialité
+
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.
+
+ +

Nouvelles propriétés CSS

+ + + + + + + + + + + + + + + + + + + + +
PropriétéDescription
-moz-font-feature-settingsPermet de personnaliser les fonctionnalités avancées des polices OpenType.
-moz-tab-sizeSpécifie la largeur d'un espace de tabulation (U+0009) lors du rendu du texte.
resizePermet de modifier les dimensions d'un élément.
+ +
+
+ +

Nouvelles pseudo-classes CSS

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Pseudo-classDescription
:-moz-handler-crashedUtilisé pour le style d'un élément dont le plugin a planté.
:-moz-placeholderAppliquée à l'espace texte réservé dans les champs des formulaires.
:-moz-submit-invalidAppliquée au bouton d'envoi des formulaires quand un ou plusieurs des champs ne sont pas valides.
:-moz-window-inactiveAppliquée aux éléments d'une fenêtre inactive.
:invalidAutomatiquement appliquée aux champs <input> dont le contenu est invalide.
:optionalAutomatiquement appliquée aux champs <input> qui ne spécifient pas l'attribut required.
:requiredAutomatiquement appliquée aux champs <input> qui spécifient l'attribut required.
:validAutomatiquement appliquée aux champs <input> dont le contenu a été validé avec succès.
+ +

Nouveaux pseudo-selectors CSS

+ + + + + + + + + + + + +
Pseudo-selectorDescription
:-moz-focusringPermet de spécifier l'apparence d'un élément lorsque Gecko estime que l'on doit se fixer dessus.
+ +

Nouvelles fonctions CSS

+ + + + + + + + + + + + + + + + + + + + + + + + +
FonctionDescription
:-moz-anyPermet de grouper les sélecteurs et de factoriser les combinateurs.
-moz-calcPermet de spécifier des valeurs de <length> comme des expressions mathématiques.
-moz-elementPermet d'utiliser un élément arbritaire de fond pour background-image and background.
-moz-image-rectPermet d'utiliser un subrectangle d'une image comme background-image or background.
+ +

Propriétés CSS renommées

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Ancien nomNouveau nomNotes
-moz-background-sizebackground-sizeLe nom -moz-background-size n'est plus supporté.
-moz-border-radiusborder-radiusL'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.
-moz-box-shadowbox-shadow
+ +

Divers changements CSS

+ + + +

Graphisme et vidéo

+ +
+
+
WebGL
+
La norme WebGL (encore en développement) est maintenant supportée par Firefox.
+
Optimisation des performances graphique
+
Trucs et astuces pour profiter le maximum des performances graphiques et vidéo dans Firefox 4.
+
Support de WebM
+
Le nouveau format vidéo ouvert WebM est supporté par Gecko 2.0.
+
Animation SVG avec SMIL
+
Les animations SVG avec SMIL sont désomais supportées.
+
Utilisation de SVG comme image ou arrière-plan CSS
+
Vous pouvez maintenant utilisez SVG avec l'élément <img>, ainsi qu'avec CSS background-image.
+
Attribut Media buffered
+
L'attribut buffered sur les éléments <video> and <audio> est maintenant supporté, vous permettant de déterminer quel fichier multimédia a été tamponné. L'interface DOM TimeRanges a été mise en place pour ce support.
+
Attribut Media preload
+
L'attribut preload de la spécification HTML5 a été implémenté, remplaçant l'attribut autobuffer précédemment mis en place (et qui n'est plus pris en charge). Cela affecte les éléments <video> et <audio> ainsi que l'interface nsIDOMHTMLMediaElement.
+
Amélioration du positionnement du texte SVG
+
Vous pouvez maintenant spécifier des listes des valeurs pour les propriétés x, y, dx, and dy sur les éléments SVG <text> et <tspan>. Cela vous permet de contrôler le positionnement de chaque caractère d'une chaîne, individuellement.
+
+ +

DOM

+ +
+
Tableaux JavaScript typés
+
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 l'API File, WebGL et WebSockets.
+
Obtention des limites des rectangles limites
+
L'objet Range a désormais les méthodes range.getClientRects() et range.getBoundingClientRect().
+
Capture des évènements de la souris sur des éléments quelconques
+
Ajout du support des APIs setCapture() et releaseCapture() originaires d'Internet Explorer. Voir bug 503943.
+
Manipulation de l'historique du navigateur
+
L'objet de l'historique déjà existant et disponible via l'objet window.history, supporte maintenant les nouvelles méthodes HTML5 pushState() et replaceState().
+
Animations utilisant MozBeforePaint
+
Un nouvel évènement a été ajouté, qui, avec l'aide de la méthode window.mozRequestAnimationFrame() et de la propriété window.mozAnimationStartTime, offre un moyen de créer des animations qui sont synchronisées avec les autres.
+
Evènements touch et multi-touch
+
Ajout du support des évènements touch et multi-touch.
+
+ +

Changement des interfaces DOM d'éléments HTML

+ +

Plusieurs éléments HTML ont vu leur interface DOM modifier, conformément à la spécification HTML5.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Interface dans Firefox 3.6Interface dans Firefox 4Elements HTML
HTMLSpanElementHTMLElement<abbr>, <acronym>, <address>, <b>, <bdo>, <big>, <blink>, <center>, <cite>, <code>, <dd>, <dfn>, <dt>, <em>, <i>, <kbd>, <listing>, <nobr>, <plaintext>, <s>, <samp>, <small>, <strike>, <strong>, <sub>, <sup>, , <tt>, <u>, <var>, <xmp>
HTMLDivElementHTMLElement<noembed>, <noframes>, <noscript>
HTMLWBRElementHTMLElement<wbr>
+ +
+
+ +

Divers changements DOM

+ + + +

Securité

+ +
+
Content Security Policy (CSP)
+
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.
+
HTTP Strict Transport Security
+
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.
+
L'en-tête de réponse X-FRAME-OPTIONS
+
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.
+
Changement de la chaîne de l'agent utilisateur
+
C'est un moyen de réduire la quantité et l'entropie des données envoyées dans les requêts HTPP (voir bug 572650), le niveau de cryptage et le signe de la langue ont été enlevés de la chaîne de l'agent utilisateur.
+
+ +

JavaScript

+ +

Pour un aperçu des changements effectués dans JavaScript 1.8.5, voir New in JavaScript 1.8.5. Dans Firefox 4, JavaScript a un plus grand respect de la norme ECMAScript 5.

+ +

Outils pour les développeurs

+ +
+
Utilisation de la Console Web
+
La Console Web est un outil qui aide le débogage.
+
+ +
+
+Gecko 2.0 note +
(Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1)
+
+ +

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 devtools.errorconsole.enabled à true et en redémarrant le navigateur.

+
+ +

Changements pour les développeurs de Mozilla et de modules complémentaires

+ +

Pour des conseils utiles sur la mise à jour des extensions existantes pour Firefox 4, voir Updating extensions for Firefox 4. Il y a plusieurs changements importants qui cassent la compatibilité avec les add-ons, donc n'oubliez pas de lire cet article.

+ +

Si vous développez des thèmes, vous devez lire Theme changes in Firefox 4 afin de connaître certains changements importants.

+ +

Modules de code JavaScript

+ +
+
Services.jsm
+
Le module de code Services.jsm 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.
+
API JS-ctypes
+
L'API JS-ctypes permet d'appeler une bibliothèque de fonctions étrangère C-compatible sans utiliser XPCOM.
+
Gestionnaire de modules complémentaires
+
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.
+
PopupNotifications.jsm
+
Le nouveau module des notifications popup facilite la présentation des notifications non-modales. Vous pouvez voir comment utiliser cette API dans Using popup notifications.
+
Chargement des modules de code à partir des URLs chrome:
+
Vous pouvez maintenant charger des modules de code à partir d'URLs chrome:, même à l'intérieur de fichiers JAR.
+
DownloadLastDir.jsm
+
Le module de code DownloadLastDir.jsm fournit la variable gDownloadLastDir 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.
+
Mesurer les performances en utilisant le module de code PerfMeasurement.jsm code module
+
Le module de code PerfMeasurement.jsm propose une API qui mesure les performances au niveau du CPU dans du code JavaScript.
+
+ +

Divers changements dans les modules de code

+ + + + + +

Changements DOM

+ +
+
ChromeWorker
+
Un nouveau type de travailleur pour du code privilégié, ce qui permet l'utilisation de choses comme js-ctypes à partir des travailleurs dans les extensions et le code d'une application.
+
Evènements tactile
+
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.
+
+ +

Autres changements DOM

+ + + +
+
+ +

XUL

+ +

Changements pour l'élément tabbrowser

+ +

Plusieurs changements ont été apportés à l'élément <xul:tabbrowser> 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.

+ + + +

Changements pour les popups

+ + + +

Suppression du support à distance de XUL

+ +

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 file:// sauf en créant une préférence dom.allow_XUL_XBL_for_file avec la valeur true. 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 Remote XUL Manager vous permet de gérer cette liste blanche.

+ +

Divers changements XUL

+ + + +

Changements dans l'UI affectant les développeurs

+ +
+
La barre d'add-on
+
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.
+
Cacher le chrome du navigateur
+
Vous pouvez désormais cacher le chrome du navigateur quand il est souhaitable de le faire, par exemple, about:addons le fait.
+
+ +

Storage

+ +

Divers changement dans l'API Storage

+ + + +

XPCOM

+ +

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.

+ +
+
Changements d'XPCOM dans Gecko 2.0
+
Détails sur les modifications d'XPCOM qui impactent la compatibilité dans Firefox 4.
+
Components.utils.getGlobalForObject()
+
Cette nouvelle méthode retourne l'objet global avec lequel un objet est associé, ce qui remplace un cas d'utilisation commun de __parent__ qui est désormais retiré.
+
+ +

Places

+ + + +

Changements dans les interfaces

+ + + +

Gestion de la mémoire

+ +
+
Allocation infaillible de la mémoire
+
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.
+
+ +

Autres changements

+ + + +

Autres changements

+ +
+
Seul le fichier chrome.manifest racine est chargé
+
maintenant seul le fichier chrome.manifest racine est chargé ; si vous avez besoin de fichiers manifestes secondaires à charger, vous pouvez utilisez la commande manifest dans votre fichier chrome.manifest racine pour les charger.
+
Suppression du support de Gopher
+
Le protocole Gopher n'est plus supporté nativement. L'extension OverbiteFF permet de continuer à le supporter.
+
Gestion des évènement du processus Content
+
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.
+
Bootstrap des extensions
+
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.
+
Suppression des plugins par défaut
+
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 bug 533891.
+
Extension Manager remplacé par Addon Manager
+
nsIExtensionManager a été remplacée par AddonManager.
+
Child HWNDs n'est plus utilisé
+
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 NPAPI. C'est un gros travail, alors si vous pouviez éviter d'utiliser HWND directement.
+
Changements dans les gestes
+
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 cmd_scrollBottom pour browser.gesture.swipe.down et cmd_scrollTop pour browser.gesture.swipe.up.
+
+ +

Voir également

+ +
+ +
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 +--- +
{{FirefoxSidebar}}
To test the latest developer features of Firefox,
+install Firefox Developer Edition
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.
+ +

Changements pour les développeurs Web

+ +

Outils pour Développeurs

+ +

Nouveautés:

+ + + +

More:

+ + + +

Autres: Tous les bugs devtools corrigés depuis Firefox 39 et Firefox 40.

+ +

 

+ +

CSS

+ + + +

HTML

+ +

pas de changement.

+ +

JavaScript

+ + + +

Interfaces/APIs/DOM

+ +

Nouvelles APIs

+ + + +

Web Animations API

+ +

Amélioration de notre implémentation des animations Web expérimentales, principalement mostley to match latest spec changes:

+ + + +

CSSOM

+ + + +

WebRTC

+ + + +

DOM & HTML DOM

+ + + +

Web Audio API

+ +

Nouvelles extensions pour l'API Web Audio:

+ + + +

Web Workers

+ + + +

IndexedDB

+ + + +

Dev Tools

+ + + +

MathML

+ +

pas de changement.

+ +

SVG

+ +

pas de changement.

+ +

Audio/Video

+ +

pas de changement.

+ +

Networking

+ +

pas de changement.

+ +

Security

+ + + +

Changes for add-on and Mozilla developers

+ +

XUL

+ +

pas de changement.

+ +

JavaScript code modules

+ + + +

XPCOM

+ +

No change.

+ +

Other

+ + + +

See also

+ + + +

Older versions

+ +

{{Firefox_for_developers('39')}}

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 +--- +
{{FirefoxSidebar}}

Cette page a été déplacée vers FxSiteCompat.com.

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 +--- +
{{FirefoxSidebar}}
To test the latest developer features of Firefox,
+install Firefox Developer Edition
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.
+ +

Changements pour les développeurs Web

+ +

Outils pour Développeurs

+ +

Nouveautés:

+ + + +

All devtools bugs fixed between Firefox 40 and Firefox 41: note that many of these bugs, especially those relating to the performance tools, were uplifted to Firefox 40.

+ +

CSS

+ + + +

HTML

+ + + +

JavaScript

+ + + +

Interfaces/APIs/DOM

+ +

HTML Editing API

+ + + +

Events

+ + + +

Web Crypto

+ + + +

Canvas API

+ + + +

Service Workers

+ + + +

Miscellaneous

+ + + +

MathML

+ +

New default and fallback font handling

+ +

Mathematical formulas require special fonts. So far, these fonts were hard-coded in the mathml.css user agent stylesheet (which sets the font-family on {{MathMLElement("math")}} tag) and in the preference option font.mathfont-family (which sets the fallback fonts to use for stretchy and large operators). Firefox 41 introduces, an internal x-math language that is automatically set on the <math> tag as well as corresponding preference options (e.g. font.name.serif.x-math). The user agent stylesheet now sets font-family to serif on the <math> tag and the preference option font.mathfont-family is replaced with font.name.serif.x-math.  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)}}.

+ +

SVG

+ + + +

Audio/Video

+ + + +

HTTP

+ + + +

Networking

+ +

pas de changement.

+ +

Security

+ + + +

Changes for add-on and Mozilla developers

+ +

XUL

+ +

pas de changement.

+ +

JavaScript code modules

+ +

pas de changement.

+ +

XPCOM

+ +

Interfaces

+ +

pas de changement.

+ +

Other

+ +

pas de changement.

+ +

See also

+ + + +

Older versions

+ +

{{Firefox_for_developers('40')}}

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 +--- +
{{FirefoxSidebar}}

Cette page a été déplacée vers FxSiteCompat.com.

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 +--- +
{{FirefoxSidebar}}
+ +

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.

+ +

Changements pour les développeurs Web

+ +

HTML

+ + + +

Améliorations de Canvas

+ + + +

CSS

+ +
+
Animations CSS
+
Le support pour les animations CSS a été ajouté, pour l'instant il faut utilisé le préfixe -moz-.
+
+ +

DOM

+ + + +

JavaScript

+ + + +

SVG

+ + + +

HTTP

+ + + +

MathML

+ + + +

Outils pour les développeurs

+ + + +

Changements pour les développeurs de Mozilla et de modules complémentaires

+ +

Pour des conseils utiles sur la mise à jour des extensions pour Firefox 5, voir Updating add-ons for Firefox 5.

+ +
Note : Firefox 5 requiert que les composants binaires soient recompilés, comme pour toutes les versions majeures de Firefox. Pour plus de détails, voir Interfaces Binaires.
+ +

Changements dans les modules de code JavaScript

+ +

Nouveau module de code JavaScript

+ + + +

NetUtil.jsm

+ + + +

Changements dans les interfaces

+ + + +

Nouvelle interface

+ + + +

Interfaces supprimées

+ +

Les interfaces suivantes ont été supprimées car elles n'étaient plus indispensables :

+ + + +

Aide au débogage

+ + + +

API JavaScript (SpiderMonkey)

+ + + +

Changement dans le système de compilation

+ + + +

Voir également

+ +

{{Firefox_for_developers('4')}}

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 +--- +
{{FirefoxSidebar}}

Pour tester les dernières fonctionnalités développeur de Firefox,
+ installez Firefox Edition Developpeur
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.

+ +

Changes pour les développeurs Web

+ + + +

HTML

+ + + +

CSS

+ + + +

JavaScript

+ + + +

Developer Tools

+ + + +

All devtools bugs fixed between Firefox 49 and Firefox 50.

+ +

HTTP

+ + + +

Security

+ + + +

Networking

+ + + +

DOM

+ + + +

SVG

+ + + +

Drag and Drop API

+ + + +

Pointer Lock API

+ + + +

IndexedDB

+ + + +

Service Workers

+ + + +

WebGL

+ + + +

WebRTC

+ + + +

Web Audio API

+ + + +

Audio/Video

+ + + +

Battery API

+ + + +

Files and directories

+ + + +

See also

+ + + +

Older versions

+ +

{{Firefox_for_developers(49)}}

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 +--- +
{{FirefoxSidebar}}

This article provides information about the changes in Firefox 59 that will affect developers. Firefox 59 was released on March 13, 2018.

+ +

Changes for web developers

+ +

Developer tools

+ + + +

HTML

+ +

The {{HTMLElement("textarea")}} element's {{htmlattrxref("autocomplete", "textarea")}} attribute has been implemented. This lets you enable or disable form auto-fill for the element.

+ +

CSS

+ + + +

SVG

+ +

No changes.

+ +

JavaScript

+ +

No changes.

+ +

APIs

+ +

New APIs

+ +

{{domxref("PointerEvent","PointerEvents")}} have been enabled in Firefox Desktop ({{bug(1411467)}}).

+ +

DOM

+ + + +

DOM events

+ +

The {{domxref("Event.composedPath()")}} method has been implemented ({{bug(1412775)}}).

+ +

Service workers

+ + + +

Media and WebRTC

+ + + +

Canvas and WebGL

+ +

No changes.

+ +

CSSOM

+ +

The {{domxref("CSSNamespaceRule")}} interface and its namespaceURL and prefix properties have been implemented ({{bug(1326514)}}).

+ +

HTTP

+ +

No changes.

+ +

Security

+ + + +

Plugins

+ +

No changes.

+ +

Other

+ +

No changes.

+ +

Removals from the web platform

+ +

HTML

+ +

The non-standard version parameter of the {{htmlelement("script")}} element's {{htmlattrxref("type","script")}} attribute (e.g.  type="application/javascript;version=1.8") has been removed ({{bug(1428745)}}).

+ +

CSS

+ + + +

JavaScript

+ + + +

APIs

+ + + +

SVG

+ +

Support for SMIL's accessKey feature has been removed ({{bug(1423098)}}).

+ +

Other

+ +

Support for the non-standard pcast: and feed: protocols has been removed from Firefox ({{bug(1420622)}}).

+ +

Changes for add-on and Mozilla developers

+ +

WebExtensions

+ + + +

See also

+ +

Site compatibility for Firefox 59

+ +

Older versions

+ +

{{Firefox_for_developers(58)}}

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 +--- +

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.

+ +

Changements pour les développeurs web

+ +

HTML

+ + + +

CSS

+ +
+
-moz-text-decoration-color
+
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é.
+
-moz-text-decoration-line
+
Cette nouvelle propriété vous permet de définir le type de décorations du texte ajoutée à un élément.
+
-moz-text-decoration-style
+
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.
+
-moz-hyphens
+
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.
+
-moz-orient
+
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 <progress>).
+
::-moz-progress-bar
+
Un pseudo-élément spécifique à Mozilla qui vous permet de définir le style de la zone d'un élément <progress> représentant la fraction d'une tâche.
+
+ +

Autres changements

+ + + +

DOM

+ +
+
Utilisation de media queries à partir de code
+
Vous pouvez désormais tester le résultat d'une chaîne media query en programmant la méthode window.matchMedia() et l'interface MediaQueryList.
+
Evènements tactile
+
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.
+
Evènements server-sent
+
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éé.
+
+ + + +

JavaScript

+ + + +

SVG

+ + + +

MathML

+ + + +

Accessibilité (ARIA)

+ + + +

Réseau

+ +
+
WebSockets
+
Pour Firefox 6, WebSockets a été mis à jour à la version 07 du protocole. De plus, l'objet WebSocket a été renommé en MozWebSocket pour l'empêcher d'être utilisé de façon incorrecte pour détecter la disponibilité des WebSockets sans préfixe.
+
+ + + +

Autres changements

+ + + +

Changements pour les développeurs de Mozilla et de modules complémentaires

+ +

Pour des conseils utiles sur la mise à jour des extensions pour Firefox 6, voir Updating add-ons for Firefox 6.

+ +
Note: Firefox 6 requiert que les composants binaires soient recompilés, comme pour toutes les versions majeures de Firefox. Pour plus de détails, voir Interfaces Binaires.
+ +

Modules de code JavaScript

+ +

FileUtils.jsm

+ + + +

XPCOMUtils.jsm

+ + + +

XPCOM

+ + + +

Utilisation du DOM depuis le chrome

+ +
+
Utilisation de l'API DOM File dans du code chrome
+
Bien que vous avez toujours pu utiliser l'API DOM File à partir du code chrome, le constructeur File 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 nsIFile.
+
+ +

Changements dans les interfaces

+ + + +

Nouvelles interfaces

+ +
+
mozIAsyncFavicons
+
Un nouveau service qui vous permet d'accéder au service favicon de façon asynchrone.
+
nsIEventSource
+
Détails à venir.
+
nsIGSettingsCollection
+
Détails à venir.
+
nsIGSettingsService
+
Détails à venir.
+
nsIHttpUpgradeListener
+
L'interface de rappel pour le traitement des demandes de mise à niveau HTTP via la méthode nsIHttpChannelInternal.HTTPUpgrade().
+
nsIStructuredCloneContainer
+
Un conteneur pour les objets qui ont été sérialisé à l'aide de l'algorithme de clonage structuré.
+
nsITelemetry
+
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 bug 649502 et bug 585196.
+
nsITimedChannel
+
Voir bug 576006.
+
nsIWebSocketListener
+
Voir bug 640003.
+
nsIWebSocketProtocol
+
Voir bug 640003.
+
+ +

Interfaces supprimées

+ +

Les interfaces suivantes ont été supprimées car elles n'étaient plus indispensables :

+ + + +

Autres changements

+ +
+
Utilisation des préférences à partir du code d'application
+
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.
+
+ +

Voir également

+ +
+ +
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 +--- +
{{FirefoxSidebar}}
+ +

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.

+ +

Changements pour les développeurs web

+ +

Outils de développeurs

+ + + +

HTML

+ + + +

Suppressions

+ + + +

CSS

+ + + +

Suppressions

+ + + +

SVG

+ +

Aucun changement.

+ +

JavaScript

+ + + +

Suppressions

+ + + +

APIs

+ +

Nouvelles APIs

+ + + +

DOM

+ + + +

Evénements du DOM

+ + + +

Media, Web Audio, et WebRTC

+ + + +

Canvas et WebGL

+ + + +

Suppressions

+ + + +

CSSOM

+ +

Aucun changement.

+ +

HTTP

+ + + +

Sécurité

+ + + +

Plugins

+ +

Aucun changement.

+ +

Conformités WebDriver (Marionette)

+ +

Nouvelles fonctionnalités

+ + + +

Changements API

+ + + +

Corrections de bugs

+ + + +

Autre

+ + + +

Changements des add-on développeurs

+ +

Changements API

+ +

Thèmes

+ + + +

Recherche

+ + + +

Onglets

+ + + + + + + +

Autre

+ + + +

Voir aussi

+ + + +

Anciennes versions

+ +

{{Firefox_for_developers(62)}}

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 +--- +
{{FirefoxSidebar}}
+ +

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.

+ +

Changes for web developers

+ +

Outils de développement

+ + + +

HTML

+ + + +

CSS

+ + + +

Removals

+ + + +

SVG

+ +

No changes.

+ +

JavaScript

+ + + +

APIs

+ +

New APIs

+ + + +

DOM

+ + + +

DOM events

+ + + +

Web workers

+ + + +

Fetch and Service workers

+ + + +

Media, Web Audio, and WebRTC

+ + + +

Canvas and WebGL

+ + + +

Removals

+ + + +

Security

+ + + +

Networking

+ +

No changes.

+ +

Plugins

+ +

No changes.

+ +

WebDriver conformance (Marionette)

+ +

API changes

+ + + +

Bug fixes

+ + + +

Others

+ + + +

Other

+ + + +

Changes for add-on developers

+ +

API changes

+ + + +

Tabs

+ + + +

Manifest changes

+ +

No changes.

+ +

Other

+ + + +

See also

+ + + +

Older versions

+ +

{{Firefox_for_developers(65)}}

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 +--- +

{{FirefoxSidebar}}

+ +

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.

+ +

Changements pour développeurs web

+ +

Outils développeur

+ + + + + +

Le débuggeur JavaScript

+ + + +

Le moniteur réseau

+ + + +

L'inspecteur de styles et du DOM

+ + + +

Storage inspector

+ + + +

Other

+ + + +

Removals

+ + + +

HTML

+ + + +

 Removals

+ + + +

CSS

+ + + +

Removals

+ + + +

SVG

+ +

No changes.

+ +

JavaScript

+ + + +

APIs

+ +

CSS Object Model (CSSOM)

+ + + +

DOM

+ + + +

DOM events

+ + + +

Media, Web Audio, and WebRTC

+ + + +

Removals

+ + + +

HTTP

+ + + +

Removals

+ + + +

Security

+ + + +

WebDriver conformance (Marionette)

+ +

Bug fixes

+ + + +

Other

+ + + +

Plugins

+ +

No changes.

+ +

Changes for add-on developers

+ +

API changes

+ + + +

Manifest changes

+ +

No changes.

+ +

See also

+ + + +

Older versions

+ +

{{Firefox_for_developers(67)}}

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 +--- +

{{FirefoxSidebar}}{{Draft}}

+ +

This article provides information about the changes in Firefox 69 that will affect developers. Firefox 69 is the current Beta version of Firefox, and will ship on September 3, 2019.

+ +

Changes for web developers

+ +

Developer tools

+ + + +

Removals

+ +

HTML

+ + + +

 Removals

+ + + +

CSS

+ + + +

Removals

+ +

SVG

+ + + +

Removals

+ +

JavaScript

+ + + +

Removals

+ +

HTTP

+ + + +

APIs

+ +

No changes.

+ +

New APIs

+ +

DOM

+ + + +

DOM events

+ +

Service workers

+ +

Media, Web Audio, and WebRTC

+ + + +

Canvas and WebGL

+ +

Removals

+ +

Security

+ +

No changes.

+ +

Removals

+ +

Plugins

+ +

No changes.

+ +

Removals

+ +

Other

+ +

No changes.

+ +

Removals

+ +

Changes for add-on developers

+ +

API changes

+ +

No changes.

+ +

Removals

+ +

Manifest changes

+ +

No changes.

+ +

Removals

+ +

See also

+ + + +

Older versions

+ +

{{Firefox_for_developers(68)}}

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 +--- +
{{FirefoxSidebar}}

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.

+ +

Changements pour les développeurs Web

+ +

HTML

+ + + +

Canvas

+ + + +

CSS

+ + + +

MathML

+ + + +

DOM

+ + + +

JavaScript

+ + + +

WebSockets

+ + + +

Console API

+ + + +
+

Web timing

+ + + +

XML

+ + +
+ +

Changements pour les développeurs de Mozilla et de modules complémentaires

+ +

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 Updating extensions for Firefox 7 pour plus d'informations.

+ +
Note: Firefox 7 requiert que les composants binaires soient recompilés, comme pour toutes les versions majeures de Firefox. Pour plus de détails, voir Interfaces Binaires.
+ +

Modules de code JavaScript

+ +

FileUtils.jsm

+ + + +

AddonManager.jsm

+ + + +

XUL

+ + + +

XPCOM

+ + + +

Rapporteur de mémoire

+ +

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")}}.

+ +

Changements de l'expérience utilisateur

+ + + +

Changements dans le système de compilation

+ + + +

Changements dans les interfaces

+ + + +

Nouvelles interfaces

+ +
+
{{interface("nsIDOMFontFace")}}
+
Décrit une seule police de caractères.
+
{{interface("nsIDOMFontFaceList")}}
+
Décrit une liste de polices de caractères, chacune représentée par {{interface("nsIDOMFontFace")}}.
+
+ +

Interfaces supprimées

+ +

Les interfaces suivantes ont été supprimées car elles n'étaient plus indispensables :

+ + + +

Les interfaces suivantes ont été supprimées dans le cadre du retrait de l'API ActiveX :

+ + + +

Autres changements

+ + + +

Voir également

+ +

{{Firefox_for_developers('6')}}

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 +--- +

{{FirefoxSidebar}}{{Draft}}

+ +

This article provides information about the changes in Firefox 70 that will affect developers. Firefox 70 is the current Nightly version of Firefox, and will ship on October 22, 2019.

+ +

Changes for web developers

+ +

Developer tools

+ + + +

Removals

+ +

HTML

+ +

No changes.

+ +

 Removals

+ +

CSS

+ + + +

Removals

+ +

SVG

+ +

No changes.

+ +

Removals

+ +

JavaScript

+ + + +

Removals

+ +

APIs

+ +

New APIs

+ +

DOM

+ + + +

DOM events

+ +

Service workers

+ +

Media, Web Audio, and WebRTC

+ +

Canvas and WebGL

+ +

Removals

+ +

Security

+ +

No changes.

+ +

Removals

+ +

Plugins

+ +

No changes.

+ +

Removals

+ +

Other

+ +

No changes.

+ +

Removals

+ +

Changes for add-on developers

+ +

API changes

+ +

No changes.

+ +

Removals

+ +

Manifest changes

+ +

No changes.

+ +

Removals

+ +

See also

+ + + +

Older versions

+ +

{{Firefox_for_developers(69)}}

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 +--- +

{{FirefoxSidebar}}

+ +

Cet article fournit des informations sur les modifications apportées à Firefox 76 qui affecteront les développeurs. Firefox 76 a été publié le 5 Mai 2020.

+ +

Voir aussi le post d'accompagnement du blog hacks — Firefox 76: Audio worklets and other tricks.

+ +

Changements pour les développeurs web

+ +

Outils pour les développeurs

+ +

Débogueur

+ + + +

Moniteur de réseau

+ + + +

Console web

+ + + +

Débogage à distance

+ + + +

HTML

+ + + +

CSS

+ + + +

SVG

+ +

No changes.

+ +

JavaScript

+ + + +

APIs

+ +

Nouvelles APIs

+ + + +

DOM

+ + + +

Suppressions

+ + + +

HTTP

+ +

Aucun changements.

+ +

Sécurité

+ +

Aucun changements.

+ +

Changements pour les développeurs de modules complémentaires

+ +

Aucun changements.

+ +

Voir aussi

+ + + +

Anciennes versions

+ +

{{Firefox_for_developers(75)}}

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 +--- +

{{FirefoxSidebar}}{{Draft}}

+ +

Cet article fournit des informations sur les modifications apportées à Firefox 77 qui affecteront les développeurs. Firefox 77 est l'actuel version de Firefox Bêta, et sera livrée le 2 Juin 2020.

+ +

Changements pour les développeurs web

+ +

Outils pour les développeurs

+ +

Aucun changement.

+ +

Suppressions

+ +

HTML

+ +

Aucun changement.

+ +

 Suppressions

+ +

CSS

+ +

Aucun changement.

+ +

 Suppressions

+ +

SVG

+ +

Aucun changement.

+ +

Suppressions

+ +

JavaScript

+ +

Aucun changement.

+ +

APIs

+ +

Nouvelles APIs

+ +

DOM

+ +

Événements DOM

+ +

Service workers

+ +

Médias, Web Audio et WebRTC

+ +

Canevas et WebGL

+ +

Suppressions

+ +

HTTP

+ +

Aucun changement.

+ +

Securité

+ +

Aucun changement.

+ +

Suppressions

+ +

Plugins

+ +

Aucun changement.

+ +

Suppressions

+ +

Securité

+ +

Enlèvements

+ +

Autres

+ +

Aucun changement.

+ +

Suppressions

+ +

Changements pour les développeurs de modules complémentaires

+ +

Modifications de l'API

+ +

Aucun changement.

+ +

Suppressions

+ +

Changements manifestes

+ + + +

Suppressions

+ +

Autres

+ + + +

Voir aussi

+ + + +

Anciennes versions

+ +

{{Firefox_for_developers(76)}}

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 +--- +

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.

+ +

Changements pour les développeurs Web

+ +

HTML

+ + + +

DOM

+ + + +

JavaScript

+ + + +

CSS

+ + + +

Réseau

+ + + +

WebSockets

+ + + +

WebGL

+ + + +

MathML

+ + + +

Outils de développement

+ + + +

Changements pour les développeurs de Mozilla et de modules complémentaires

+ +

Voir Updating add-ons for Firefox 8 pour vous guidez dans les modifications que vous êtes susceptibles d'avoir à faire pour rendre vos extensions compatibles avec Firefox 8.

+ +
Note: Firefox 8 requiert que les composants binaires soient recompilés, comme pour toutes les versions majeures de Firefox. Pour plus de détails, voir Interfaces Binaires.
+ +

XPCOM

+ +
+
Components.utils
+
Les nouvelles méthodes Components.utils.createObjectIn() et Components.utils.makeObjectPropsNormal() ont été créées pour faciliter la création d'objets dans des compartiments spécifiques.
+
+ +

Autres changements relatifs à XPCOM

+ + + +

Workers

+ +

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 bug 649537.

+ +

XUL

+ + + +

Changements dans le système de compilation

+ + + +

Enregistrement du chrome

+ + + +

Changements dans les interfaces

+ + + +

Interfaces supprimées

+ +

Les interfaces suivantes ont été supprimées car elles n'étaient plus indispensables :

+ + + +

L'interface nsIWorkerFactory a également été retirée. WLes travailleurs peuvent encore être créés à l'aide des constructeurs Worker et ChromeWorker.

+ +

Autres changements

+ + + +

Voir également

+ +
+ +
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 +--- +
+ +

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.

+ +

Changements pour les développeurs Web

+ +

HTML

+ + + +

CSS

+ + + +

DOM

+ +
+
Utilisation du mode plein écran
+
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.
+
+ + + +

Workers

+ + + +

WebGL

+ + + +

MathML

+ + + +

Réseau

+ + + +

Outils de développement

+ + + +

Changements pour les développeurs de Mozilla et de modules complémentaires

+ +

Voir Updating add-ons for Firefox 9 pour un aperçu des modifications que vous devriez apporter pour rendre vos extensions compatibles avec Firefox 9.

+ +

XUL

+ + + +

Changements dans le module de code JavaScript

+ + + +

Changement dans le service

+ + + +

NSPR

+ + + +

Changements dans les interfaces

+ +

Interface supprimée

+ + + +

Divers changements dans les interfaces

+ + + +

Parseur IDL

+ +

Le parseur IDL ne supporte plus la notion de pointeurs unique qui n'a jamais été entièrement implémentée.

+ +

Changements dans le système de compilation

+ + + +

Autres changements

+ + + +

Voir également

+ +
+ +
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 +--- +
{{FirefoxSidebar}}
+ +

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.

+ +
{{ListSubpages("",1,0,1)}}
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 +--- +

Pour de plus en plus de gens, les appareils mobiles sont le premier, voire le seul moyen d'accéder au Web. Firefox pour Android (nom de code Fennec) est un navigateur ouvert, modifiable, basé sur les standards, comme la version de Firefox pour les ordinateurs.

+ +

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.

+ +

Contribuer à Firefox pour Android

+ +

Le point de départ pour obtenir des informations à propos du projet Firefox pour Android est la page Wiki du projet.

+ +

Vous pouvez nous aider à créer et améliorer Firefox pour Android :

+ + + +

Développer pour le web mobile

+ +

Nous avons démarré un guide pour concevoir des sites web pour les appareils mobiles.

+ +

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 :

+ + + +

Pour tester votre site web sur Firefox pour Android, vous pouvez l'installer sur un appareil Android ou l'exécuter sur votre ordinateur en utilisant l'émulateur Android.

+ +

Construire des add-ons pour mobile

+ +

Firefox pour Android supporte les add-ons et utilise exactement le même système d'extension 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 même procédé que celui qui serait utilisé sur ordinateur. Les add-ons qui fonctionnent sur Firefox pour ordinateur ne fonctionnent pas automatiquement sur Firefox pour Android. Les interfaces graphiques y sont vraiment trop différentes.

+ +
Firefox pour Android a un identifiant unique d'application qui doit être utilisé dans install.rdf. L'identifiant est {aa3c5121-dab2-40e2-81ca-7ea25febc110}
+ +

Les deux approches d'add-ons, avec redémarrage ou sans redémarrage 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.

+ +

Aperçu rapide

+ + + +

Obtenir de l'aide avec Firefox pour Android

+ +

La documentation et les tutoriels pour utiliser Firefox pour Android et résoudre vos problèmes sont disponibles sur le site de support de Mozilla.

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 +--- +

Résumé

+

Notre objectif est d'ouvrir le Web mobile à tous les navigateurs mobiles à travers la promotion des standards et des bonnes pratiques.

+

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 :

+ +

Nous désignons cette catégorie de problèmes, comme des problèmes de compatibilité Web. Les problèmes de compatibilité Web sont principalement issus d'une ou plusieurs des causes suivantes :

+
+
+ Détection de l'agent utilisateur (UA-sniffing)
+
+ Identifier le navigateur par sa chaîne d'agent utilisateur (user-agent) et envoyer un contenu différent.
+
+ Utiliser des propriétés CSS non standards (principalement Webkit)
+
+ 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
+
+ Utiliser des propriétés DOM non standard (principalement Webkit)
+
+ Utiliser des propriétés DOM non standards en JavaScript que le navigateur ne reconnaît pas, causant des problèmes fonctionnels
+
+ Limitation navigateur
+
+ 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.
+
+

Pour Firefox 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.

+

Ci-dessous sont détaillées les étapes que vous pouvez suivre pour identifier et signaler les sites problématiques.

+

Préparation

+

Pour démarrer, préparons notre matériel et nos logiciels pour des tests de compatibilité.

+
    +
  1. 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 liste des appareils supportés par Firefox pour Android.
  2. +
  3. Installer Firefox pour Android depuis Google Play.
  4. +
  5. Installer l'add-on Phony pour Firefox pour Android. Cet add-on permet de faire passer Firefox pour Android pour un autre navigateur en remplaçant sa chaîne agent utilisateur par celle d'un autre navigateur pour chaque requête HTTP.
  6. +
  7. Créer un compte sur Bugzilla pour que vous puissiez signaler les problèmes rencontrés.
  8. +
+

Étapes facultatives :

+ +
+

Note : Voir l'article Détection du navigateur par l'agent-utilisateur pour une explication détaillée sur les agents-utilisateurs des navigateurs.

+
+

Tester la compatibilité

+

Les étapes suivantes vous guideront selon la méthodologie utilisée par Mozilla AQ (Assurance Qualité) lors des tests de compatibilité :

+
    +
  1. Choisissez un site à tester. +
      +
    • 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.
    • +
    • Sinon, vous pouvez choisir un des principaux sites listés dans le rapport Are We Compatible Yet. Les sites qui n'ont pas été analysés sont affichés en blanc.
    • +
    +
  2. +
  3. 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 : +
      +
    1. 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.
    2. +
    3. 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 ? 
    4. +
    +
  4. +
  5. 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 : +
      +
    1. 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 ?
    2. +
    3. 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 ?
    4. +
    +
  6. +
  7. 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 : +
      +
    1. 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 ?
    2. +
    3. Y a-t'il des problèmes de mise en page ? Si oui, quels sont ces problèmes ?
    4. +
    +
  8. +
+

Signaler les résultats

+

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 Firefox for Android Evangelism et fournissez autant d'informations sur le problème que vous pouvez. Voici certaines informations souvent utiles, à renseigner dans votre signalement :

+
+
+ Résumé
+
+ 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é.
+
+ Description
+
+ 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.
+
+ 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.
+
+ Pièces jointes
+
+ 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.
+
+

Information de contact

+

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 compatibility@lists.mozilla.org.

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 +--- +
{{Non-standard_header}}{{CSSRef}}
+ +

La propriété -moz-window-dragging 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.

+ +

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)}}).

+ +

{{cssinfo}}

+ +

Syntaxe

+ +

La propriété -moz-window-dragging s'utilise avec un des mots-clés parmi ceux de la liste suivante.

+ +

Valeurs

+ +
+
drag
+
La fenêtre peut être déplacée.
+
no-drag
+
La fenêtre ne peut pas être déplacée.
+
+ +

Syntaxe formelle

+ +
{{csssyntax}}
+ +

Exemple

+ +
toolbarpaletteitem {
+  -moz-window-dragging: no-drag;
+}
+ +

Spécifications

+ +

Cette propriété ne fait partie d'aucune spécification.

+ +

Compatibilité des navigateurs

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + +
FonctionnalitéChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Support simple{{CompatNo}}{{CompatNo}} +

{{CompatGeckoDesktop(35)}}

+
{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
FonctionnalitéAndroidWebview AndroidEdgeFirefox Mobile (Gecko)IE PhoneOpera MobileSafari MobileChrome pour Android
Support simple{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatGeckoMobile(35)}}{{CompatNo}}{{CompatNo}}{{CompatNo}}{{CompatNo}}
+
+ +

 

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)' +--- +
{{Non-standard_header}}{{CSSRef}}{{Fx_minversion_header(1.9)}}
+ +

La pseudo-classe :-moz-tree-cell-text(hover) correspond à un élément si le curseur de la souris est en train de survoler une cellule d'un arbre.

+ +

Ce sélecteur est principalement destiné aux développeurs de thèmes.

+ +

Spécifications

+ +

Cette pseudo-classe est une pseudo-classe propriétaire liée à Gecko/Mozilla et ne fait partie d'aucune spécification.

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' +--- +
{{Non-standard_header}}{{CSSRef}}
+ +

Cette pseudo-classe est activée avec l'attribut properties.

+ +

Éléments XUL associés

+ + + +

Propriétés associées

+ + + +

Spécifications

+ +

Cette pseudo-classe est une pseudo-classe propriétaire liée à Gecko/Mozilla et ne fait partie d'aucune spécification.

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' +--- +
{{Non-standard_header}}{{CSSRef}}
+ +

Cette pseudo-classe est activée avec l'attribut properties.

+ +

Éléments XUL associés

+ + + +

Propriétés associées

+ + + +

Spécifications

+ +

Cette pseudo-classe est une pseudo-classe propriétaire liée à Gecko/Mozilla et ne fait partie d'aucune spécification.

+ +

Voir aussi

+ + 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' +--- +
{{Non-standard_header}}{{CSSRef}}
+ +

Cette pseudo-classe est activée avec l'attribut properties.

+ +

Éléments XUL associés

+ + + +

Propriétés associées

+ + + +

Spécifications

+ +

Cette pseudo-classe est une pseudo-classe propriétaire liée à Gecko/Mozilla et ne fait partie d'aucune spécification.

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' +--- +
{{Non-standard_header}}{{CSSRef}}
+ +

Cette pseudo-classe est activée avec l'attribut properties.

+ +

Éléments XUL associés

+ + + +

Propriétés associées

+ + + +

Spécifications

+ +

Cette pseudo-classe est une pseudo-classe propriétaire liée à Gecko/Mozilla et ne fait partie d'aucune spécification.

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' +--- +
{{Non-standard_header}}{{CSSRef}}
+ +

Cette pseudo-classe est activée avec l'attribut properties.

+ +

Éléments XUL associés

+ + + +

Propriétés associées

+ + + +

Exemples

+ +

Bookmark icons in the Places window - Mozillazine Forum (en anglais)

+ +

Spécifications

+ +

Cette pseudo-classe est une pseudo-classe propriétaire liée à Gecko/Mozilla et ne fait partie d'aucune spécification.

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' +--- +
{{Non-standard_header}}{{CSSRef}}
+ +

Cette pseudo-classe est activée avec l'attribut properties.

+ +

Éléments XUL associés

+ + + +

Propriétés associées

+ + + +

Spécifications

+ +

Cette pseudo-classe est une pseudo-classe propriétaire liée à Gecko/Mozilla et ne fait partie d'aucune spécification.

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' +--- +
{{Non-standard_header}}{{CSSRef}}
+ +

Cette pseudo-classe est activée avec l'attribut properties.

+ +

Éléments XUL associés

+ + + +

Propriétés associées

+ + + +

Spécifications

+ +

Cette pseudo-classe est une pseudo-classe propriétaire liée à Gecko/Mozilla et ne fait partie d'aucune spécification.

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' +--- +
{{Non-standard_header}}{{CSSRef}}
+ +

Cette pseudo-classe est activée lorsque l'attribut type est défini sur progressmeter.

+ +

Éléments XUL associés

+ + + +

Propriétés associées

+ + + +

Spécifications

+ +

Cette pseudo-classe est une pseudo-classe propriétaire liée à Gecko/Mozilla et ne fait partie d'aucune spécification.

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)' +--- +
{{Non-standard_header}}{{CSSRef}}{{Fx_minversion_header(3)}}
+ +

La pseudo-classe :-moz-tree-row(hover) correspond à un élément si le curseur de la souris est en train de survoler une ligne d'un arbre.

+ +

Ce sélecteur est principalement destiné aux développeurs de thèmes.

+ +

Spécifications

+ +

Cette pseudo-classe est une pseudo-classe propriétaire liée à Gecko/Mozilla et ne fait partie d'aucune spécification.

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' +--- +
{{CSSRef}}{{Non-standard_header}}
+ +

La pseudo-classe -moz-tree-row est utilisée afin de sélectionner des lignes d'un arbre pour leur appliquer des styles

+ +

Éléments XUL associés

+ + + +

Syntaxe

+ +
treechildren::-moz-tree-row { propriétés de style }
+
+ +

Propriétés associées

+ + + +

Exemples

+ +

CSS

+ +
treechildren::-moz-tree-row( toto bar )
+{
+  margin: 2%;
+}
+
+ +

XUL

+ +
<treerow properties="toto">…</treerow>
+
+ +

Spécifications

+ +

Cette pseudo-classe est une pseudo-classe propriétaire liée à Gecko/Mozilla et ne fait partie d'aucune spécification.

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' +--- +
{{CSSRef}}{{Non-standard_header}}
+ +

Cette pseudo-classe est activée via l'attribut properties .

+ +

Éléments XUL associés

+ + + +

Propriétés associées

+ + + +

Spécifications

+ +

Cette pseudo-classe est une pseudo-classe propriétaire liée à Gecko/Mozilla et ne fait partie d'aucune spécification.

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' +--- +
{{CSSRef}}{{Non-standard_header}}
+ +

Cette pseudo-classe est activée via l'attribut properties .

+ +

Éléments XUL associés

+ + + +

Propriétés associées

+ + + +

Spécifications

+ +

Cette pseudo-classe est une pseudo-classe propriétaire liée à Gecko/Mozilla et ne fait partie d'aucune spécification.

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 +--- +
{{CSSRef}}
+ +

Cette page liste les propriétés CSS uniquement accessible depuis le code du chrome de Gecko.

+ +

{{SubpagesWithSummaries}}

+ +

Voir aussi

+ + 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 +--- +
{{FirefoxSidebar}}
+ +
Cette page contient des informations spécifiques au code de Gecko responsable du "chrome" (les éléments de l'interface utilisateur).
+ +

{{SubpagesWithSummaries}}

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 +--- +

Qu'est-ce que Gecko?

+ +

Gecko est un moteur open source de rendu web supportant différents standards d'internet comme le HTML, le CSS, le DOM, XML, javascript et d'autres standards encore.

+ +

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.

+ +

Pour plus d'informations, visitez l'article Gecko (moteur de rendu) sur Wikipedia.

+ +

Qu'est-ce qu'un moteur de rendu?

+ +

Un moteur de rendu 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.

+ +

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 plugins.

+ +

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 XUL.

+ +

How is a layout engine like Gecko different from a Web browser?

+ +

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.

+ +

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 la page recensant une liste de logiciel dans lequel Gecko est utilisé via XULRunner.

+ +

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.

+ +

Why was Gecko built?

+ +

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.

+ +

How is mozilla.org using Gecko?

+ +

mozilla.org will assemble the Gecko layout engine and other browser components into the Mozilla browser application.

+ +

How does Mozilla use Gecko?

+ +

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.

+ +

How can other companies and organizations use Gecko?

+ +

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.

+ +

Which open standards is the Gecko development project working to support, and to what extent does it support them?

+ +

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 Bugzilla:

+ + + +

Does "full support" mean that Gecko has zero bugs today or will have zero bugs at some point in the future?

+ +

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."

+ +

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.)

+ +

Known bugs in the open-source Gecko codebase are documented in Bugzilla. 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:

+ +
The links themselves are probably outdated too.
+ + + +

For information about the known bugs of a specific commercial product based on Gecko, see that product's release notes.

+ +

How does Gecko format XML documents?

+ +

Gecko supports the use of CSS and XSLT to format XML documents.

+ +

For XML documents without associated CSS or XSLT, Gecko displays the pretty-printed source of the document.

+ +

How does Gecko help content developers?

+ +

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

+ +
    +
  1. have a rich, powerful formatting system and object model at their disposal, and
  2. +
  3. "write once, view anywhere."
  4. +
+ +

Gecko's robust support for these standards makes Gecko the platform of choice for web content and web application developers worldwide.

+ +

Are Gecko's APIs based on ActiveX? COM? JavaBeans?

+ +

Gecko is reusable on all platforms thanks to XPCOM, 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.

+ +

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).

+ +

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.

+ +

For future embedding API plans, see {{ interwiki('wikimo', 'Mozilla_2:Embedding_APIs', 'wikimo:Mozilla 2:Embedding APIs') }}.

+ +

Are Gecko's APIs compatible with Microsoft's Trident APIs?

+ +

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.

+ +

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.

+ +

Which platforms does Gecko run on?

+ +

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.

+ +

Older versions of Gecko supported earlier versions of Win32 and Mac OS X.

+ +

What are the components of Gecko?

+ +

Gecko includes the following components:

+ + + +
+

Original Document Information

+ + +
+ +

{{ languages( { "ja": "ja/Gecko_FAQ", "zh-cn": "cn/Gecko_FAQ" } ) }}

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 +--- +

{{ Outdated("It was last updated a very long time ago.") }}

+ +
+
Compte tenu de l'importance croissante du Web comme source d'information, de divertissement, et la connectivité individuelle, la possibilité d'accéder et d'afficher des données enregistrées au format HTML devient de plus en plus important pour une grande variété d'applications logicielles par ailleurs très diverses. Que ce soit pour un simple visualiseur HTML ou pour créer un navigateur web à part entière, la capacité d'analyser et d'afficher des documents de type HTML est une fonction de plus en plus importante dans de nombreuses situations. Pour le développeur d'applications, le problème est de savoir comment mettre en œuvre cette fonctionnalité cruciale d'une manière qui minimise encore le temps de développement qui va permettre de créer un produit agile et robuste. Intégrer Gecko, le moteur de rendu au cœur des navigateurs Netscape et Mozilla, est une solution pour ce problème.
+ +
 
+
+ +

Pourquoi Gecko

+ +

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é.

+ +

Il est Open-Source. Contrairement à d'autres choix d'intégration, tout le code source de Gecko est librement disponible et personnalisable. Vous pouvez le bricoler 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.

+ +

Comme Gecko est associé avec le projet Mozilla, il y a beaucoup de ressources disponibles pour aider à son intégration. Le site officiel de Mozilla a un espace dédié aux projets d'intégration. Il y a un groupe de discussion, mozilla.dev.embedding, qui met l'accent sur l'échange d'informations entre les intégrateurs, ainsi qu'à un certain nombre d'autres groupes de discussion connexes. On peut accéder à un index croisé complet de la base de code et il est simple d'ajouter du code, de suivre ses progrès ou d'aider à corriger des bogues via la base de données de bugs Bugzilla.

+ +

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.

+ +

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 Mozilla & Netscape Public Licenses, qui est la seule source légale des information de license.

+ +

Ce dont vous avez besoin pour embarquer

+ +

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.

+ +

Vous procurer le code

+ +

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.)

+ +

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. 

+ +

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. 

+ +

Understanding the Coding Environment

+ +

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.

+ +

XPCOM

+ +

The most important of the Mozilla technologies is XPCOM, 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.

+ +
The interface
+ +

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.

+ +

Much of the communication within Gecko takes place in terms of these abstract structures (by convention, their names follow the form nsISomething).

+ +
//this
+void ProcessSample(nsISample* aSample) {
+	aSample->Poke("Hello");
+//not this
+void ProcessSample(nsSampleImpl* aSample) {
+	aSample->Poke("hello");
+
+ +
@status FROZEN
+ +

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.

+ +

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 @status FROZEN. You can search for frozen interfaces 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 embedding project page.

+ +

Once an interface has been frozen, it is added to the Gecko Embedding API Reference.

+ +
nsISupports
+ +

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, nsISupports, that serves a more general purpose. In a sense, nsISupports 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.

+ +

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 nsISupports method, QueryInterface(), 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)?"

+ +

If it is (or does), QueryInterface() returns to the caller a pointer bound to the newly requested interface.

+ +
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
+	}
+}
+
+ +

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 nsISupports, AddRef() and Release(), are designed to deal with this issue. Every time a pointer is given out AddRef() must be called on the object, incrementing an internal counter. Every time a pointer is released, Release() 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, nsCOMPtr, a utility which helps automate this process.

+ +
Object creation
+ +

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.

+ +

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.

+ +
Summing up
+ +

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.

+ +

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 FROZEN 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.

+ +
nsCOMPtr
+ +

Sometimes, however, even remembering to call AddRef() and Release() at the right times can be difficult. To make this process easier and more reliable, XPCOM has a built-in "smart" pointer, nsCOMPtr. This pointer takes care of calling AddRef() and Release() for you. Using nsCOMPtr whenever possible will make your code cleaner and more efficient. For more information on the smart pointer, see "The Complete nsCOMPtr User's Manual".

+ +

Mozilla actually provides a large number of built-in macros (by convention, written in all caps in the code) and utilities like nsCOMPtr that can make the entire process of coding with XPCOM easier. Many of these can be found in the following files: nsCom.h, nsDebug.h, nsError.h, nsIServiceManager.h, and nsISupportsUtils.h. Mozilla also supplies other development tools for tracking memory usage and the like. More information on these can be found at http://www.mozilla.org/performance/

+ +
For more information
+ +

More information on XPCOM in general can be found at XPCOM. For an overview of creating XPCOM components, see Chapter 8 of O'Reilly's Creating Applications with Mozilla. There is also a new book completely devoted to this topic, Creating XPCOM Components. A fuller explanation of some of the underlying logic to COM systems can be found in the early chapters of Essential COM 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.

+ +

XPIDL

+ +

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.

+ +

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 XPIDL (a simple C-like language) and the use of the compiler is available.

+ +

XPConnect and XPT files

+ +

XPConnect is an XPCOM module that allows code written in JavaScript 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.

+ +

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 .

+ +

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.

+ +

String classes

+ +

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, nsAString, nsASingleFragmentString, and nsAFlatString, and for the same reasons. (These refer to double-byte strings. There is a parallel hierarchy topped with nsACString, etc., that refers to single-byte strings.) nsAString guarantees only a string of characters. nsASingleFragmentString guarantees that the characters will be stored in a single buffer. nsAFlatString 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 "XPCOM string guide".

+ +

XUL/XBL

+ +

Use of this final Mozilla technology is optional, depending on how you decide to create the user interface for your application. XUL 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 XUL Programmer's Reference and on XBL at XBL:XBL_1.0_Reference. There is also a wealth of good information on XUL at XULPlanet.

+ +

Choosing Additional Functionalities

+ +

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:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionsStatus NowStatus in Future
FTP supportOptional 
HTTPS supportOptional 
International character supportOptional 
XUL supportRequiredProbably optional
Network supportRequiredMaybe optional
JavaScript supportRequiredMaybe optional
CSS supportRequiredAlways required
DOM supportRequiredProbably always
XML supportRequiredProbably always
+ +

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 http://www.mozilla.org/editor/Editor...ing_Guide.html.

+ +

What Gecko Provides

+ +

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.

+ +

Initialization and Teardown

+ +

There are two C++ only functions which serve to initalize and terminate Gecko. The initialization function (NS_InitEmbedding) 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 (NS_TermEmbedding) terminates the Gecko embedding layer, ensuring that global services are unloaded, files are closed and XPCOM is shut down.

+ +

nsIWebBrowser

+ +

Use of this interface during initialization allows embedders to associate a new nsWebBrowser 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.

+ +

The XULPlanet nsWebBrowser reference also has a lot of useful information on this class.

+ +

nsIWebBrowserSetup

+ +

This interface is used to set basic properties (like whether image loading will be allowed) before the browser window is open.

+ +

nsIWebNavigation

+ +

The nsIWebNavigation 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.

+ +

nsIWebBrowserPersist

+ +

The nsIWebBrowserPersist interface allows a URI to be saved to file. As of June 6, 2006, this interface is not yet frozen.

+ +

nsIBaseWindow

+ +

The nsIBaseWindow 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.

+ +

nsISHistory

+ +

The nsISHistory interface provides access to session history information and allows that information to be purged.

+ +

nsIWebBrowserFind

+ +

The nsIWebBrowserFind interface controls the setup and execution of text searches in the browser window.

+ +

What You Provide

+ +

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.

+ +

nsIWebBrowserChrome

+ +

The nsIWebBrowserChrome interface corresponds to the top-level, outermost window containing an embedded Gecko web browser. You associate it with the WebBrowser through the nsIWebBrowser interface. It provides control over window setup and whether or not the window is modal. It must be implemented.

+ +

nsIEmbeddingSiteWindow

+ +

The nsIEmbeddingSiteWindow 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.

+ +

nsIWebProgressListener

+ +

The nsIWebProgressListener interface provides information on the progress of loading documents. It is added to the WebBrowser through the nsIWebBrowser interface. It must be implemented. As of this writing (8/19/02), it is not frozen.

+ +

nsISHistoryListener

+ +

The nsISHistoryListener 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 nsIWebBrowser interface. Implementation is optional.

+ +

nsIContextMenuListener

+ +

The nsIContextMenuListener 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.

+ +

nsIPromptService

+ +

The nsIPromptServices 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.

+ +

Common Embedding Tasks

+ +

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 http://mxr.mozilla.org/mozilla-central/source/embedding/tests/ for a list of examples.

+ +

Gecko setup

+ +

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.

+ +

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 (nsnull 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.

+ +
nsresult rv;
+rv = NS_InitEmbedding(nsnull, provider);
+if(NS_FAILED(rv))
+{
+ASSERT(FALSE);
+return FALSE;
+}
+
+ +

Creating a browser instance

+ +

The embedder-provided BrowserView object calls its method CreateBrowser(). Each browser object (a webbrowser) represents a single browser window. Notice the utility directive do_CreateInstance() and the use of macros.

+ +
//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;
+
+ +

Once the nsWebBrowser object is created the application uses do_QueryInterface() to load a pointer to the nsIWebNavigation interface into the mWebNav member variable. This will be used later for web page navigation.

+ +
rv = NS_OK;
+mWebNav = do_QueryInterface(mWebBrowser, &rv);
+if(NS_FAILED(rv))
+return rv;
+
+ +

Next the embedder-provided CBrowserImpl object is created. Gecko requires that some interfaces be implemented by the embedder so that Gecko can communicate with the embedding application. See the What You Provide Section. In the sample, CBrowserImpl is the object that implements those required interfaces. It will be passed into the SetContainerWindow() call below.

+ +
mpBrowserImpl = new CBrowserImpl();
+if(mpBrowserImpl == nsnull)
+return NS_ERROR_OUT_OF_MEMORY;
+
+ +

The mWebBrowser interface pointer is then passed to the CBrowserImpl object via its Init() method. A second pointer to the platform specific BrowserFrameGlue interface is also passed in and saved. The BrowserFrameGlue pointer allows CBrowserImpl to call methods to update status bars, progress bars, and so forth.

+ +
mpBrowserImpl->Init(mpBrowserFrameGlue, mWebBrowser);
+mpBrowserImpl->AddRef();
+
+ +

Next the embedder-supplied chrome object is associated with the webbrowser. Note the use of an nsCOMPtr.

+ +
mWebBrowser->SetContainerWindow
+	(NS_STATIC_CAST(nsIWebBrowserChrome*, mpBrowserImpl));
+nsCOMPtr<nsIWebBrowserSetup>setup(do_QueryInterface(mWebBrowser));
+if (setup)
+	setup->SetProperty(nsIWebBrowserSetup::SETUP_IS_CHROME_WRAPPER,PR_TRUE);
+
+ +

Then, the real webbrowser window is created.

+ +
rv = NS_OK;
+mBaseWindow = do_QueryInterface(mWebBrowser, &rv);
+if(NS_FAILED(rv))
+return rv;
+
+ +

Binding a window

+ +

Basic location information is passed in.

+ +
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();
+
+ +

Note the m_hWnd passed into the call above to InitWindow(). (CBrowserView inherits the m_hWnd from CWnd). This m_hWnd will be used as the parent window by the embeddable browser.

+ +

Adding a listener

+ +

The BrowserImpl object is added as an nsIWebProgressListener. It will now receive progress messages. These callbacks will be used to update the status/progress bars.

+ +
nsWeakPtr weakling
+	(dont_AddRef(NS_GetWeakReference(NS_STATIC_CAST(nsIWebProgressListener*,
+			mpBrowserImpl))));
+void mWebBrowser->AddWebBrowserListener(weakling, NS_GET_IID(nsIWebProgressListener));
+
+ +

Finally the webbrowser window is shown.

+ +
mBaseWindow->SetVisibility(PR_TRUE);
+
+ +

Using session history to navigate

+ +

The pointer to nsIWebNavigation saved above is used to move back through session history.

+ +
void CBrowserView::OnNavBack()
+{
+if(mWebNav)
+	mWebNav->GoBack();
+}
+
+ +

Appendix: Data Flow Inside Gecko

+ +

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.

+ +

Image:EmbeddingBasicsa.gif

+ +

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.

+ +

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.

+ +

Calculations continue as new information flows into the system using a process called reflow. 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.

+ +

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.

+ +

If you want to take a look at the code underlying these structures, the code for the Content Model can be found in /mozilla/content, for the Frame Constructor, CSS, and Reflow in /mozilla/layout, for the View Manager in /mozilla/view, and for the DOM APIs in /mozilla/dom.

+ +
+

Original Document Information

+ + +
+ +

{{ languages( { "ja": "ja/Gecko_Embedding_Basics" } ) }}

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 +--- +

Gecko est le nom du moteur de rendu développé par la fondation Mozilla. Il s'appelait à l'origine NGLayout.

+ +

La fonction de Gecko est de lire le contenu Web tel que HTML, CSS, XUL et JavaScript, 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.

+ +

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 article de Wikipedia sur Gecko). Les produits utilisant la même version de Gecko ont un support identique des standards.

+ +

Le nom et le logo Gecko sont des marques de Netscape Communications Corporation, utilisés sous licence.

+ +

Les versions de Gecko

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Version de GeckoApplications basées sur cette version
Gecko 17.0 (en cours de développement)Firefox 17, SeaMonkey 2.14, Thunderbird 17
Gecko 16.0 (en cours de développement)Firefox 16, SeaMonkey 2.13, Thunderbird 16
Gecko 15.0 (en cours de développement)Firefox 15, SeaMonkey 2.12, Thunderbird 15
Gecko 14.0Firefox 14, SeaMonkey 2.11, Thunderbird 14
Gecko 13.0Firefox 13, SeaMonkey 2.10, Thunderbird 13
Gecko 12.0Firefox 12, SeaMonkey 2.9, Thunderbird 12
Gecko 11.0Firefox 11, SeaMonkey 2.8, Thunderbird 11
Gecko 10.0Firefox 10, SeaMonkey 2.7, Thunderbird 10
Gecko 9.0Firefox 9, SeaMonkey 2.6, Thunderbird 9
Gecko 8.0Firefox 8, SeaMonkey 2.5, Thunderbird 8
Gecko 7.0Firefox 7, SeaMonkey 2.4, Thunderbird 7
Gecko 6.0Firefox 6, SeaMonkey 2.3, Thunderbird 6
Gecko 5.0Firefox 5, SeaMonkey 2.2, Thunderbird 5
Gecko 2.0Firefox 4, SeaMonkey 2.1
Gecko 1.9.2Firefox 3.6, Thunderbird 3.1
Gecko 1.9.1Firefox 3.5, SeaMonkey 2.0, Thunderbird 3.0
Gecko 1.9.0Firefox 3
Gecko 1.8.1Firefox 2, SeaMonkey 1.1, Thunderbird 2.0
Gecko 1.8.0Firefox 1.5, SeaMonkey 1.0, Thunderbird 1.5
Gecko 1.7Firefox 1.0, Mozilla Suite 1.7, Nvu 1.0, Thunderbird 1.0
Les versions plus anciennes de Gecko correspondent aux versions de la Suite Mozilla
+ +
+

Ressources

+ + + +

{{ 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" } ) }}

diff --git "a/files/fr/mozilla/gecko/mozilla_embarqu\303\251/api_overview/index.html" "b/files/fr/mozilla/gecko/mozilla_embarqu\303\251/api_overview/index.html" new file mode 100644 index 0000000000..bf0dbc85cf --- /dev/null +++ "b/files/fr/mozilla/gecko/mozilla_embarqu\303\251/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 +--- +

Introduction

+

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.

+

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.

+

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.

+

Image:public-apis-image2.gif

+

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.

+

Image:public-apis-image1.gif

+

Public Classes

+

The following utility classes are available from the XPCOM DLL. They provide some basic functionality which should be leveraged when building new XPCOM components.

+ +

These are templatized smart pointers which transparently deal with XPCOM reference counting issues. See the nsCOMPtr User's Manual for more information.

+ +

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.

+ +

This is an nsCOMPtr which encapsulates XPCOM weak reference support. See the nsIWeakReference document for more information.

+

Public Return Codes

+ +

Public Functions

+

The following functions are available from the XPCOM DLL.

+ +

This function initializes the Gecko embedding support. This must be the first function call made into Gecko.

+ +

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.

+ +

This helper class provides static accessors to the global nsMemory Service.

+ +

This function returns an instance of the Component Manager service.

+ +

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.

+ +

This is a helper class which works in conjunction with nsCOMPtr to perform a simplified call to nsISupports::QueryInterface(...) with a typesafe assignment.

+ +

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.

+

Internally, this function tries to convert the nsISupports argument into an nsIInterfaceRequestor and then calls GetInterface(...) to retrieve the requested interface.

+ +

This function is the equivilent of do_QueryInterface except that it performs the QI through a weak reference.

+ +

This function simplifies accessing services from the Service Manager.

+ +

This function simplifies creating new component instances.

+ +

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.

+ +

This function creates a weak reference to a component which implements the nsIWeakReference interface.

+

Global Services

+

nsServiceManager

+

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.

+

Through the Service Manager, individual services can be loaded, unloaded and accessed.

+

Implemented Interfaces:

+ +

Related Interfaces:

+ +

nsMemory

+

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.

+

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).

+

Contract-id: NS_MEMORY_CONTRACTID

+

Implemented Interfaces:

+ +

Related Interfaces:

+ +

nsComponentManager

+

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...

+

Contract-id: NS_COMPONENTMANAGER_CONTRACTID

+

Implemented Interfaces:

+ +

Requestor Interfaces:

+ +

Related Interfaces:

+ +

nsURILoader

+

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.

+

Contract-id: NS_URI_LOADER_CONTRACTID

+

Implemented Interfaces:

+ +

Related Interfaces:

+ +

nsUnknownContentTypeHandler

+

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.

+

The default implementation of this service displays a dialog box asking the user if the content should be saved to disk...

+

Contract-id: NS_IUNKNOWNCONTENTTYPEHANDLER_CONTRACTID

+

Implemented Interfaces:

+ +

HelperApp Launch Dialog

+

Contract-id: NS_EXTERNALHELPERAPPSERVICE_CONTRACTID

+

Implemented Interfaces:

+ +

Preferences Service

+

The Preferences service provides access to persistent data stored within a user's profile directory.

+

Contract-id: NS_PREF_CONTRACTID

+

Implemented Interfaces:

+ +

Related Interfaces:

+ +

Profile Manager Service

+

Contract-id:

+

Implemented Interfaces:

+

Document Loader Service (WebProgress)

+

Eventually, this service will be replaced by theWebProgress service...

+

Contract-id: NS_DOCUMENT_LOADER_SERVICE_CONTRACTID

+

Implemented Interfaces:

+ +

Related Interfaces:

+ +

Public Components

+

nsWebBrowser

+

The nsWebBrowser is the main embedding component which Gecko exposes. Conceptually, each nsWebBrowser instance represents a HTML content area.

+

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.

+

Contract-id: NS_WEBBROWSER_CONTRACTID

+

Implemented Interfaces:

+ +

Requestor Interfaces:

+ +

Related Interfaces:

+ +

Overview:

+

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.

+

The embedding application receives notifications from Gecko through a set of callback interfaces it may choose to implement.

+

Image:public-apis-image3.gif

+

Below is a code snippet which an embedding application can use to create and initialize a WebBrowser:

+
      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 :-)
+
+
+

Web Navigation

+

The nsIWebNavigation interface is used to load URIs into the WebBrowser and provide access to session history capabilities - such as back and forward.

+

Clipboard

+

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.

+

Printing (not yet implemented)

+

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.

+

Searching

+

Searching within a nsWebBrowser is controlled via the nsIWebBrowserFind interface. The search is always performed within the DOMWindow which currently has the focus.

+

Focus Management

+

Focus managment within the WebBrowser is accessed via the nsIWebBrowserFocus interface.

+

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.

+

Context Menu notifications

+

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).

+

Saving Documents

+

Notification Interfaces which the embedding application should implement

+

nsFile

+

Public Interfaces

+

nsISupports

+

Base Component Object Model interface. This interface provides runtime interface discovery and a reference counted memory model fashioned after the Microsoft COM IUnknown interface.

+

Interface status... none

+

Interface definition: nsISupportsUtils.h

+


+ nsIInterfaceRequestor

+

This Interface provides an interface discovery mechanism which does not imply aggregation. Interface status... none

+

Interface definition: nsIInterfaceRequestor.idl

+

nsIWeakReference

+

This interface is used to retern a proxy reference to a component.

+

Interface status... being reviewed

+

Interface definition: nsIWeakReference.idl

+

nsISimpleEmunerator

+

This interface provides a simple enumeration abstraction.

+

Interface status... being reviewed

+

Interface definition: nsISimpleEnumerator.idl

+

nsIServiceManager

+

This interface allows access to global services within mozilla.

+

Interface status... none

+

Interface definition: nsIServiceManager.h

+


+ nsIShutdownListener

+

This interface is used to receive notifications when the Service Manager is being shutdown.

+

Interface status... none

+

Interface definition: nsIServiceManager.h

+


+ nsIComponentManager

+

This interface allows new instances of registered XPCOM components to be instantiated.

+

Interface status... none

+

Interface definition: nsIComponentManager.idl

+


+ nsIFactory

+

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.

+

Interface status... none

+

Interface definition: nsIFactory.idl

+


+ nsIMemory

+

This interface provides access to the global memory management functionality.

+

Interface status... being reviewed

+

Interface definition: nsIMemory.idl

+


+ nsIDOMWindow

+

This interface is used to represent the window containing a specific document.

+

Interface status... being reviewed

+

Interface definition: nsIDOMWindow.idl

+


+ nsIBaseWindow

+

This interface provides access to various window operations.

+

Interface status... being reviewed

+

Interface definition: nsIBaseWindow.idl

+


+ nsIRequest

+

This interface provides a means to control various operations.

+

Interface status... being reviewed

+

Interface definition: nsIRequest.idl

+


+ nsIWebBrowser

+

This is the primary interface to the WebBrowser component.

+

Interface status... being reviewed

+

Interface definition: nsIWebBrowser.idl

+


+ nsIWebBrowserSetup

+

This interface is used to enable or disable various capabilities of a nsWebBrowser instance.

+

Interface status... being reviewed

+

Interface definition: nsIWebBrowserSetup.idl

+


+ nsIWebBrowserChrome

+

This interface provides access to the window containing an nsWebBrowser instance.

+

Interface status... being reviewed

+

Interface definition: nsIWebBrowserChrome.idl

+


+ nsIWebNavigation

+

This interface exposes the web navigation functionality of the nsWebBrowser component.

+

Interface status... being reviewed

+

Interface definition: nsIWebNavigation.idl

+


+ nsIWebBrowserPersist

+

This interface exposes the save-as functionality of the nsWebBrowser component.

+

Interface status... being reviewed

+

Interface definition: nsIWebBrowserPersist.idl

+


+ nsIWebBrowserPrint

+

This interface allows printing of individual (or a collection of) DOM Windows within a nsWebBrowser component.

+

Interface status... being reviewed

+

Interface definition: nsIWebBrowserPrint.idl

+


+ nsIWebBrowserFind

+

This interface exposes the searching capabilities of the nsWebBrowser component.

+

Interface status... none

+

Interface definition: nsIWebBrowserFind.idl

+


+ nsIWebBrowserFocus

+

This interface provides access to the focus information of a nsWebBrowser instance.

+

Interface status... being reviewed

+

Interface definition: nsIWebBrowserFocus.idl

+


+ nsIWebProgress

+

Interface status...

+

Interface definition:

+


+ nsIWebProgressListener

+

Interface status...

+

Interface definition:

+


+ nsIPrompt

+

Interface status...

+

Interface definition:

+


+ nsIPrefs

+

Interface status...

+

Interface definition:

+


+ {{ interface("nsIProfile") }}

+

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.

+


+ nsIDirectoryServiceProvider

+

Interface status...

+

Interface definition:

+


+ nsILocalFile

+

Interface status...

+

Interface definition:

+


+ nsIFile

+

Interface status...

+

Interface definition:

+


+ nsIClipboardCommands

+

Interface status...

+

Interface definition:

+


+ nsISelection

+

Interface status...

+

Interface definition:

+


+ nsIURILoader

+

Interface status...

+

Interface definition:

+


+ nsIURIContentListener

+

Interface status...

+

Interface definition:

+

 

+

Defining New XPCOM Components

+
+

Original Document Information

+ +
+

 

diff --git "a/files/fr/mozilla/gecko/mozilla_embarqu\303\251/faq_de_mozilla_embarqu\303\251/embarquer_gecko/index.html" "b/files/fr/mozilla/gecko/mozilla_embarqu\303\251/faq_de_mozilla_embarqu\303\251/embarquer_gecko/index.html" new file mode 100644 index 0000000000..e35036fbf4 --- /dev/null +++ "b/files/fr/mozilla/gecko/mozilla_embarqu\303\251/faq_de_mozilla_embarqu\303\251/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 +--- +

Obsolète
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.

+ +
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. Do not use the techniques covered on this page; this material is retained for historical purposes only.
+ +

Section 2 : Embarquer Gecko

+ +

De quels fichiers ai-je besoin pour embarquer ?

+ +

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.
+ Lesnightly builds sont créées automatiquement depuis les manifests donc vous pouvez commencer à chercher de ce coté.

+ +

Comment puis-je compiler les sources à embarquer ?

+ +

Premièrement compilez Mozilla, puis saisissez :

+ +
cd mozilla/embedding/config
+make
+
+ +

Note : Si vous utilisez un objdir, placez-vous plutôt dans le répertoire mozilla/<objdir>/embedding/config puis lancez la compilation avec make.

+ +

Un répertoire appelé mozilla/dist/Embed 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 :

+ +
cd mozilla/dist/Embed
+./run-mozilla.sh ./TestGtkEmbed
+
+ +

Comment est faite la distribution embarquée ?

+ +

Look in embedding/config/ 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.

+ +

Note that this sample only contains atypical 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.

+ +

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.

+ +

The embedding distribution readme file provides more information.

+ +

Todo: provide a more complete map of features <-> files

+ +

Pourquoi ai-je besoin de distribuer des fichiers XPT avec mon application ?

+ +

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.

+ +

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 here.

+ +

Comment me prémunir des changements de Gecko ?

+ +

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: Frozen Interface and APIs. Interfaces are being reviewed and frozen all the time and cover most things embedders will want to do.

+ +

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.

+ +

See the Embedding API Reference for more information

+ +

Cela veut-il dire que mon application fonctionnera avec toutes les futures versions de GRE/Gecko/Mozilla ?

+ +

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 binary compatibility. when ported too, this should be an internal link

+ +

Quelles plate-formes sont supportées ?

+ +

Short answer is anything Mozilla can run on, then Gecko can too. However, the embedding is concentrating on three primary platforms:

+ + + +

L'embarquement supporte-t-il des protocoles sécurisés comme HTTPS ?

+ +

Yes, psm is supported in embedding.

+ +

Comment mes applications communiquent-elles avec Gecko ?

+ +

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.

+ +

Todo: insert jud's picture here?

+ +

Puis-je embarquer sans...

+ +

(Some of the more common questions)

+ + + +

Puis-je embarquer l'éditeur HTML de Mozilla ?

+ +

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).

+ +

Documentation is lacking, mostly because of pending API changes. Check out the Embedding Editor page for more info.

+ +

Quel toolkit de widget peut utiliser Mozilla ?

+ +

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.

+ +

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.

+ +

In the future, widgets may be defined with XBL.

+ +

Mozilla embarqué supporte-t-il Java ?

+ +

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.

+ +

Puis-je embarquer Mozilla dans n'importe quel autre cas ?

+ +

Aside from programming direct to the embedding API you may also embed Mozilla:

+ + + +

Interwiki Language Links

+ +
 
diff --git "a/files/fr/mozilla/gecko/mozilla_embarqu\303\251/faq_de_mozilla_embarqu\303\251/introduction_\303\240_gecko_et_\303\240_l'embarqu\303\251/index.html" "b/files/fr/mozilla/gecko/mozilla_embarqu\303\251/faq_de_mozilla_embarqu\303\251/introduction_\303\240_gecko_et_\303\240_l'embarqu\303\251/index.html" new file mode 100644 index 0000000000..1836cab0bb --- /dev/null +++ "b/files/fr/mozilla/gecko/mozilla_embarqu\303\251/faq_de_mozilla_embarqu\303\251/introduction_\303\240_gecko_et_\303\240_l'embarqu\303\251/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... +--- +

 

+

Introduction à Gecko et à l'embarquement

+

Qu'est-ce que Gecko ?

+

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.

+

La FAQ de Gecko est légèrement obsolète FAQ.

+

Qu'est-ce que Mozilla ?

+

Mozilla est un navigateur web open-source multi plates-formes, un éditeur et une application de messagerie / newsgroup créé sur Gecko.

+

Qu'est-ce que le GRE ?

+

Le GRE (formellement le MRE) qui est l'acronime de Gecko Runtime Environment, 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 XULRunner.

+

Qu'est-ce que XPCOM ?

+

XPCOM est un + + modèle objet de composants + (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 + + nsISupports + , 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 + + nsISupports + , 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é + + XPConnect + qui permet l'implémentation d'objets dans tout language supporté. Grâce à + + XPConnect + , ces objets peuvent aussi être appelés à partir de n'importe lequel de ces languages.

+

On peut trouver plus d'informations ici.

+

Que signifie embarquer Gecko ?

+

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 + + Modèle Objet de Document + (NdT: en anglais DOM, + + Document Object Model + ) et plus encore. Vous pouvez même bâtir entièrement une nouvelle application en utilisant Gecko.

+

Quels sont les termes de licence pour embarquer Gecko ?

+

Les mêmes que pour le reste de Mozilla. Voir la page du MPL pour plus d'informations.

+

Existe-t'il un SDK ?

+

Nous travaillons lentement sur une SDK, gelant et documentant les interfaces et retouchant le processus de construction. Pour le moment nous vous recommandons de télécharger le code source puis de le compiler.

+

Des compilations nocturnes du SDK pour la plateforme Windows 32bits peuvent être disponibles ici.

+

Quelle est la dernière version ? Quelle version utiliser ?

+

Les compilations embarquées et les source tarballs sont produites la nuit et peuvent être obtenues ici. Si vous privilégiez la stabilité, les compilations de la branche 1.7.x de Mozilla sont vivement recommendées.

+

Qui utilise déjà gecko ?

+

Voir ici la liste des logiciels embarquant Gecko.

+

Interwiki Language Links

diff --git "a/files/fr/mozilla/gecko/mozilla_embarqu\303\251/index.html" "b/files/fr/mozilla/gecko/mozilla_embarqu\303\251/index.html" new file mode 100644 index 0000000000..b8a2b5bb4c --- /dev/null +++ "b/files/fr/mozilla/gecko/mozilla_embarqu\303\251/index.html" @@ -0,0 +1,59 @@ +--- +title: Mozilla embarqué +slug: Mozilla/Gecko/Mozilla_embarqué +tags: + - Mozilla_embarqué +translation_of: Mozilla/Gecko/Embedding_Mozilla +--- +
+

Gecko 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 DOM et ainsi de suite. Des applications entières peuvent être crées en s'appuyant sur Gecko.

+
+ + + + + + + + +
+

Documentation

+ +
+
FAQ de Mozilla embarqué
+
Une Foire Aux Questions très complète concernant Mozilla embarqué.
+
+ +
+
Les bases de Gecko embarqué
+
Une introduction à l'incorporation du moteur de rendu Gecko dans une application (à traduire de en:Gecko Embedding Basics).
+
+ +
+
Intégration de l'éditeur
+
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.
+
+ +
+
Construisez votre propre navigateur - Comment embarquer Mozilla
+
Une introduction rapide à Mozilla embarqué (à traduire de en:Roll your own browser - An embedding HowTo.
+
+ +

Tous les articles…

+
+

Communauté

+ +
    +
  • Voir les forums de Mozilla…
  • +
+ +

{{ DiscussionList("dev-embedding", "mozilla.dev.embedding") }}

+ + + +
+
Gecko, XPCOM
+
+
+ +

 

diff --git "a/files/fr/mozilla/gecko/mozilla_embarqu\303\251/int\303\251gration_\303\251diteur/index.html" "b/files/fr/mozilla/gecko/mozilla_embarqu\303\251/int\303\251gration_\303\251diteur/index.html" new file mode 100644 index 0000000000..4e6e8c8281 --- /dev/null +++ "b/files/fr/mozilla/gecko/mozilla_embarqu\303\251/int\303\251gration_\303\251diteur/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 +--- +

Introduction

+ +

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.

+ +

Mises en œuvre possibles de l'intégration

+ +

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). <htmlarea> 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.

+ +

Compositeur intégré dans une application XUL

+ +

Les développeurs ont besoin d'intégrer des compositeurs dans leurs applications XUL en utilisant la balise <editor>, 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'<editor>s par fenêtre qu'ils le souhaitent et pouvoir contrôler si ces <editor>s sont en mode HTML ou en mode texte.

+ +

Compositeur intégré dans une application native

+ +

Dans ce cas de figure, l'<iframe> 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.

+ +

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'nsEditorShell existant fait des suppositions sur l'hébergement de document XUL, qui doivent être contredites.)

+ +

Compositeur intégré dans une page web (<htmlarea>)

+ +

IE 5 supporte l'élément <HTMLArea> ; 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 XBL pour implémenter ce type d'objet, comme c'est prévu pour d'autres types de contrôles.

+ +

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 <htmlarea>, comme une fenêtre flottante, ou comme une barre d'outil de haut-niveau (top-level).

+ +

Problèmes connus

+ +

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.

+ +

Problème d'appartenance de l'éditeur

+ +

L'éditeur d'une fenêtre compositrice appartient au nsEditorShell, qui à son tour est créé, dirigé et détruit par nsEditorBoxObject. 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 nsEditorBoxObject pour chaque balise <editor>, et permet à Javascript d'accéder aux propriétés de cet objet box (tel que le nsIEditorShell). La balise <editor> est tout simplement une <iframe> dans laquelle l'éditeur est créé. Dans les autres aspects, il se comporte comme une <iframe> XUL.

+ +

Le problème avec ce modèle d'appartenance est qu'il ne peut y avoir qu'un éditeur par balise <editor>, alors que le document chargé dans l'<iframe> peut très bien contenir de multiples <iframe>s (dans le cas d'un document frameset ou dans un document contenant lui-même un <html:iframe>). Aujourd'hui, le compositeur ne fonctionne pas très bien avec ce types de document.

+ +

Limitation d'un éditeur par fenêtre

+ +

Le compositeur construit sur une architecture XUL/C++ s'est développé sur le présupposé qu'une seule balise <editor> par fenêtre suffirait. Lors de la construction de la fenêtre, nous prenons l'editorShell de l'élément <editor> que l'on met dans window.editorShell. 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 window.editorShell. Ce présupposé manquait de clairevoyance et doit être corrigé.

+ +

L'éditeur suppose une structure de document XUL

+ +

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.

+ +

Objectifs de l'intégration

+ +

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 :

+ + + +

Atteindre ces objectifs doit également permettre de résoudre les problèmes suivants, liés au compositeur :

+ + + +

Solutions proposées

+ +

Régler les problèmes d'appartenance de l'éditeur

+ +

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 nsEditorBoxObject. Il doit y avoir un docShell par <iframe> éditable. Cela implique :

+ + + + + +

Plus d'un éditeur par fenêtre

+ +

Les clients compositeurs basés sur Mozilla supposent tous qu'il n'y a qu'une balise <editor> par fenêtre. Ils ont tous besoin de fonctionner avec plusieurs éditeurs. Corriger cela nécessite des modifications JS de cette ordre :

+ + + +

Isoler l'éditeur de l'interface

+ +

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.

+ + + +

Les étapes de l'intégration

+ +

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.

+ +
    +
  1. Décider comment implémenter le support d'une session édition muti-éditeur
  2. +
  3. Éliminer les interdépendances spécifiques entre le compositeur et le document XUL, via nsIEditorUserInterface
  4. +
  5. Créer 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
  6. +
  7. Faire du docShell,le propriétaire de l'éditeur, créant nsIEditorFrame
  8. +
  9. Créer l'API de la session d'édition qui s'occupera des collections d'éditeurs (ou rendre l'éditeur refocusable)
  10. +
+ +

Questions ouvertes

+ +

Ou doit se trouver la logique d'ouverture et enregistrement de fichier ?

+ +

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.

+ +
Réponse possible
+ +

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 à nsIFile ont été résolu - once some nsIFile problems have been solved).

+ +

Toute l'IU du compositeur doit-elle être remplaçable ?

+ +

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 ?

+ +
Réponse possible
+ +

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.

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 +--- +

+

+

Aperçu

+

Le SDK Gecko est un ensemble de fichiers XPIDL, d'entêtes et d'outils pour développer des composants XPCOM pouvant à leur tour être accéder depuis XUL grâce à JavaScript. +

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. +

Il ne faut pas confondre le SDK Gecko avec XULRunner. 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. +

+

Obtenir le SDK

+

Notez 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. +

+

Téléchargement

+

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). +

+ + + + + +
Lien de téléchargement +Gecko 1.7 (Firefox 1.0) +Gecko 1.8 (Firefox 1.5 et 2.0) +
Windows +Download +Download +
Mac +N/A +Download +
Linux i686 +Download +Download +
+

Le SDK n'est pas officiellement disponible pour d'autres plateformes ; si vous en avez besoin, vous devrez probablement le compiler vous même. +

Décompressez le fichier dans un répertoire de votre disque. +

+

Compiler le SDK

+

Pour compiler le SDK, vous devez compiler XULRunner (le SDK Gecko est compilé en même temps que XULRunner). Consultez la documentation sur la compilation pour plus de précisions. +

Le SDK Gecko est généré dans dist/sdk dans votre répertoire objet. Vous pouvez ensuite copier ce répertoire vers un autre emplacement et supprimer l'arborescence XULRunner. +

+

Contenu du SDK

+

Le SDK contient les éléments suivants : +

+ +

Pour plus d'informations sur la manière de lier des composants XPCOM en utilisant la bibliothèque "glue" XPCOM, consultez XPCOM Glue. +

+
+
+{{ 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 +--- +

Pontoon 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.

+ +
+

Vous voulez participer à l'amélioration de Pontoon? Apprenez comment participer su GitHub.

+
+ +
+

Vous venez de démarrer votre projet de localisation? Jetez un oeil sur la page Localisez votre projet de notre wiki.

+
+ +

A. Rendre votre projet localisable

+ +

Nous comprenons que les éléments suivants puissent être considérés des meilleures pratiques standards pour la localisation de projets chez Mozilla, mais nous ne perdons rien à faire un petit rappel:

+ +
    +
  1. Assurez-vous que votre projet supporte l'un des frameworks l10n (gettext, XLIFF, L20n, lang, properties, etc.).
  2. +
  3. Extrayez les strings localisables dans des fichiers de ressources.
  4. +
  5. Envoyez (push) les ressources vers un repository (SVN, HG, Git). +
      +
    • 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 templates, en-US, en-us ou en. 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 locales dédié à cet objectif. Le code des locales ne doit pas faire partie du nom du fichier.
    • +
    • Forme correcte: +
      /locales/{locale_code}/path/to/file.extension
      +
    • +
    • Forme incorrecte: +
      /locales/{locale_code}/path/to/file.{locale_code}.extension
      +
    • +
    +
  6. +
  7. Assurez-vous que Pontoon a les droits en écriture sur votre repository. + +
  8. +
+ +

B. (optionnel) Activer la localisation en-page de votre projet web

+ +
    +
  1. Liez un script depuis l'élément <body> 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: + + +
  2. +
  3. Si votre site utilise CSP,  assurez-vous que les actions suivantes sont autorisées pour le domaine pontoon.mozilla.org: +
      +
    1. charger dans une iframe
    2. +
    3. charger des CSS distants
    4. +
    5. chargez des images distantes
    6. +
    +
  4. +
  5. Si votre site utilise le header X-Frame-Options, assurez-vous que le chargement dans des iframes est autorisé pour le domaine pontoon.mozilla.org.
  6. +
  7. Assurez-vous que votre site supporte HTTPS. C'est gratuit, automatisé et libre. Let's encrypt!
  8. +
+ +

C. Ajoutez votre projet à Pontoon

+ +

Votre projet est maintenant prêt à être configuré sur Pontoon. Enregistrez un bug sur Localization Infrastructure and Tools :: Administration / Setup et fournissez-nous l'information suivante:

+ + + +

Pour plus de détails, contactez l'Équipe de gestion du projet.

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 +--- +

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.

+ +

{{LandingPageListSubpages}}

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 +--- +

Instantbird 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 Chat Core backend, qui est également utilisée dans Thunderbird.

+ +

Instantbird est construit sur le même plate-form technique que Firefox. 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.

+ + + + + + + + +
+

Documentation

+ +
+
Constuction d'Instantbird
+
Information sur la création d'Instantbird à partir du dépôt comm-central.
+
Chat Core
+
Le code backend, y compris documentation rugueux sur chat protocols ({{ Interface("prplIProtocol") }} and ami.e.s.).
+
Affichage des Messages
+
Information sur le thème de l'affichage des messages.
+
Raccourcis Clavier
+
Liste des raccourcis clavier.
+
+

Liens Utils

+
+
Dernier nightly builds
+
Ceux-ci sont généralement stables, mais attendent à des problèmes de temps à autreet déposer des bugs.
+
+ +

Voir Tout...

+
+

Communauté

+ +
    +
  • #instantbird sur irc.mozilla.org (pour des utilisateurs et développeurs)
  • +
  • Assistance est géré sur la liste de diffusion pour support-instantbird ou sur IRC: {{ DiscussionList("support-instantbird", "mozilla.support.instantbird") }}
  • +
  • Questions d'extensions peut-être discuté sur le dev-chat groupe ou sur IRC: {{ DiscussionList("dev-chat", "mozilla.dev.chat") }}
  • +
  • une liste de tout Instantbird canaux de communication
  • +
+ +

Outils

+ + + + + + +
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 +--- +
{{CSSRef}}
+ +

Les attributs CSS suivants ne sont disponibles qu'à partir du code privilégié (chrome) et sont spécifiques à Mozilla.

+ +

{{LandingPageListSubpages}}

+ +

Voir aussi

+ + 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 +--- +

XUL Tips

+ + + +
var UniqueName = {
+  _privateMember: 3,
+  publicMember: "A string",
+
+  init: function() {
+    this.doSomething(this.anotherMember);
+  },
+
+  doSomething: function(aParam) {
+    alert(aParam);
+  }
+};
+
+ +

XPConnect

+ + + +
if (target instanceof Components.interfaces.nsIRDFResource)
+  return target.Value;
+if (target instanceof Components.interfaces.nsIRDFLiteral)
+  return target.Value;
+return null;
+
+ + + +
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) {
+  }
+}
+
+ + + +

DOM elements

+ + + +

References

+ + + +

{{ languages( { "ja": "ja/JavaScript_style_guide" } ) }}

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 +--- +
{{gecko_minversion_header("1.9")}}
+ +

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.

+ + + + + + + + +
+

Sujets généraux

+ +
+
Utilisation de modules de code JavaScript
+
Une introduction à la façon d'utiliser les modules de code JavaScript.
+
Component.utils.import
+
Comment importer un module de code JavaScript.
+
Component.utils.unload {{gecko_minversion_inline("7.0")}}
+
Comment décharger un module de code JavaScript.
+
Code snippets: Modules
+
Des exemples de la façon d'utiliser des modules de code.
+
Mozilla Labs JS Modules
+
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.
+
+ +
+
+
+

Modules de code standard

+ +
+
AddonManager.jsm {{gecko_minversion_inline("2.0")}}
+
Interface pour installer, gérer et désinstaller des add-ons.
+
AddonRepository.jsm {{gecko_minversion_inline("2.0")}}
+
Permet de rechercher des addons référentiel.
+
ctypes.jsm {{fx_minversion_inline("3.6")}}
+
Fournit une interface qui permet au code JavaScript d'appeler les bibliothèques natives sans nécessiter le développement d'un composant XPCOM.
+
DeferredTask.jsm {{gecko_minversion_inline("18.0")}}
+
Exécuter une tâche après un délai.
+
Dict.jsm {{gecko_minversion_inline("5.0")}}
+
Fournit une API pour les dictionnaires de paires clé/valeur.
+
DownloadLastDir.jsm {{gecko_minversion_inline("2.0")}}
+
Fournit le chemin d'accès au répertoire dans lequel le dernier téléchargement a eu lieu.
+
Downloads.jsm {{gecko_minversion_inline("23.0")}}
+
Fournit un point d'entrée unique pour interagir avec les capacités de téléchargement de la plate-forme.
+
FileUtils.jsm {{gecko_minversion_inline("1.9.2")}}
+
Fournit des aides pour le traitement des fichiers.
+
Geometry.jsm {{gecko_minversion_inline("2.0")}}
+
Fournit des routines pour effectuer des opérations géométriques de base sur des points et des rectangles.
+
ISO8601DateUtils.jsm
+
Fournit des routines pour convertion entre des objets Date JavaScript et des chaînes de date ISO 8601.
+
NetUtil.jsm
+
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.
+
openLocationLastURL.jsm {{gecko_minversion_inline("1.9.1.4")}}
+
Donne accès à la dernière URL ouverte à l'aide de l'option "Ouvrir l'emplacement" dans le menu Fichier.
+
osfile.jsm {{gecko_minversion_inline("16.0")}}
+
Le module JavaScript OS.File contient des primitives de manipulation de fichiers
+
PerfMeasurement.jsm {{fx_minversion_inline("4.0")}}
+
Permet d'accéder au hardware de bas niveau et aux outils OS de mesure de performance.
+
PluralForm.jsm
+
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.
+
PopupNotifications.jsm {{gecko_minversion_inline("2.0")}}
+
Fournit un moyen facile de présenter des notifications non-modales aux utilisateurs.
+
Promise.jsm {{gecko_minversion_inline("25.0")}}
+
Met en oeuvre la proposition Promises/A+ telle que connue en avril 2013
+
Services.jsm {{gecko_minversion_inline("2.0")}}
+
Fournit getters pour obtenir facilement l'accès aux services couramment utilisés.
+
source-editor.jsm {{fx_minversion_inline("11.0")}}
+
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.
+
Sqlite.jsm {{gecko_minversion_inline("20.0")}}
+
Une API basée sur promise de {{ interface("mozIStorage") }}/SQLite.
+
Task.jsm {{gecko_minversion_inline("17.0")}}
+
Met en œuvre un sous-ensemble d'opérations asynchrones séquentielles simple Task.js , en utilisant la puissance de l'opérateur JavaScript yield.
+
Timer.jsm {{gecko_minversion_inline("22.0")}}
+
Une mise en œuvre pur JS de window.setTimeout.
+
XPCOMUtils.jsm
+
Contient des utilitaires pour les composants JavaScript chargés par le chargeur composant JS.
+
+
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 +--- +

Le module JavaScript OS.File contient des primitives pour manipuler des fichiers hors du thread principal.

+ +

F.A.Q.

+ +
+
Qu'est-ce que OS.File?
+
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.
+
Quelles sont les relations avec l'API de fichier HTML5?
+
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.
+
Why is Off Main Thread File I/O important?
+
One thing that all developers need to remember is that the duration of a File I/O operation is unbounded. 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 several seconds to execute operations that look trivial, such as closing a file, or checking when it was last modified.
+ 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.
+
Why is I/O Efficiency important?
+
I/O efficiency is all about minimizing the number of actual I/O calls. 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 wasting I/O is wasting battery. +

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.

+
+
+ +

Using OS.File

+ +

... from the main thread

+ +

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.

+ +
+
Calling OS.File from the main thread
+
Asynchronous, off-main thread file I/O, main thread API.
+
Calling OS.File.DirectoryIterator from the main thread
+
Asynchronous, off-main thread file directory access, main thread API.
+
+ +

... from a worker thread

+ +

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.

+ +
+
OS.File for workers
+
Synchronous file I/O for worker threads
+
OS.File.DirectoryIterator for workers
+
Visiting directories synchronously from a worker thread
+
+ +

... composants partagés

+ +
+
OS.Path et OS.Constants.Path
+
Manipulation des chemins
+
OS.File.Error
+
Représentation des erreurs liées aux fichiers
+
OS.File.Info
+
Représentation des informations du fichier (taille, date de création, etc.)
+
OS.File.DirectoryIterator.Entry
+
Informations sur les fichiers obtenues lors de la visite d'un répertoire
+
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 +--- +

Cette page explique comment utiliser File I/O depuis le thread principal. Pour d'autres utilisations de OS.File, voir OS.File.

+ +

Utilisation d'OS.File depuis le thread principal

+ +

Pour importer OS.File dans votre code chrome, ajoutez les ligne suivante au début de votre script:

+ +
Components.utils.import("resource://gre/modules/osfile.jsm");
+ +

Pour importer OS.File dans votre code main.js, ajoutez les lignes suivantes au début de votre script:

+ +
const {Cu} = require("chrome");
+
+// To read content from file
+const {TextDecoder, OS} = Cu.import("resource://gre/modules/osfile.jsm", {});
+
+// To read & write content to file
+const {TextDecoder, TextEncoder, OS} = Cu.import("resource://gre/modules/osfile.jsm", {});
+ +

Promises

+ +

Avant d'utiliser OS.File depuis le thread principal, vous avez besoin d'une certaine compréhension de la bibliothèque Promise.

+ +

Voir la documentation object Promise pour plus de détails.

+ +

OS.File fonctionne très bien avec Task.jsm.

+ +

Exemple: Lire le contenu d'un fichier sous forme de texte

+ +

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).

+ +

Le contenu est lu de manière asynchrone. Le résultat est une Promise.

+ +
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
+  }
+);
+
+ +
Cet exemple nécessite Firefox 18 ou une version plus récente.
+ +

Exemple: Ecrire une chaîne dans un fichier

+ +

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.)

+ +
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".
+
+
+ +

La variante suivante fait la même chose, mais échouera si "file.txt" existe déjà:

+ +
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".
+
+
+ +
Ces exemples nécessitent Firefox 19 ou une version plus récente.
+ +

Exemple: Renommer un fichier

+ +

Vous pouvez utiliser OS.File.move pour renommer un fichier:

+ +
let promise = OS.File.move("oldname.txt", "newname.txt", {noOverwrite:true});
+ +

Voici un exemple qui a rebaptise test.txt en testRenamed.txt si le fichier se trouve dans le répertoire C:\Jean\

+ +
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)
+    }
+)
+ +

noOverwrite: true est important, (par défaut false) 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".

+ +

Exemple: Copier un fichier

+ +

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.

+ +
let promise = OS.File.copy("oldname.txt", "newname.txt");
+ +
This example requires Firefox 16 or a more recent version.
+ +

Exemple: Manipulation de chemin

+ +

The following snippet obtains the path to file "sessionstore.js", contained in the user's profile directory.

+ +
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.
+
+
+ +

Exemple: Déterminer si un fichier est un répertoire

+ +

The following snippet determines if some path represents a file or a directory:

+ +
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;
+    }
+  }
+);
+
+ +

Exemple: copier un fichier par morceaux

+ +

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 OS.File.writeAtomic is a better choice.

+ +
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;
+}
+
+ +

Or a variant using Task.js (or at least the subset already present on mozilla-central):

+ +
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;
+    }
+  );
+}
+
+ +

Exemple: Enregistrer un canvas sur le disque

+ +

This exmaple uses Image 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 OS.Path.toFileURI, which accepts a string). After image loads it then draws it to canvas, makes it a blob, and uses FileReader to turn it into ArrayBuffer(View), then uses OS.File.writeAtomic to save to disk.

+ +
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 = Cc['@mozilla.org/files/filereader;1'].createInstance(Ci.nsIDOMFileReader); //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;
+
+ +

Exemple: Ajouter au fichier

+ +

This example shows how to use open, write, and close to append to a file. If the file does not exist, it is created. At the time of this writing, write does not support encoding option so the text to be written has to be encoded with TextEncoder. 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 here), write (a number indicating bytes written), and close (undefined, meaning there is no resolve value).

+ +
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 = 'append some text \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');
+        });
+    });
+});
+ +

Objet Global OS.File

+ +

Aperçu des Méthodes

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Promise<File> open(in string path, [optional] in object mode, [optional] in object options);
Promise<object> openUnique(in string path, [optional] in object options);
Promise<void> copy(in string sourcePath, in string destPath, [optional] in object options);
Promise<bool> exists(in string path);
Promise<string> getCurrentDirectory();
Promise<void> makeDir(in string path, [optional] in object options);
Promise<void> move(in string sourcePath, in string destPath);
Promise<Uint8Array> read(in string path, [optional] in object options);
Promise<void> remove(in string path, [optional] in object options);
Promise<void> removeEmptyDir(in string path, [optional] in object options);
Promise<void> removeDir(in string path, [optional] in object options);
Promise<void> setCurrentDirectory(in string path);
Promise<void> setDates(in string path, in Date|number accessDate, in Date|number modificationDate);
Promise<void> setPermissions(in string path, in object options );
Promise<File.Info> stat(in string path, [optional] in object options);
Promise<void> unixSymLink(in string targetPath, in string createPath);
Promise<void> writeAtomic(in string path, in ArrayView data, in object options);
+ +

Methods

+ +

OS.File.open()

+ +

Use method OS.File.open() to open a file.

+ +
Promise<File> open(
+  in string path,
+  [optional] in object mode,
+  [optional] in object options
+)
+
+ +
Arguments
+ +
+
path
+
The full native name of the file to open.
+
mode {{optional_inline()}}
+
The opening mode for the file, as an object that may contain a subset of the following fields: +
+
read
+
If true, the file will be opened for reading. Depending on other fields, it may also be opened for writing.
+
write
+
If true, the file will be opened for writing. Depending on other fields, it may also be opened for reading.
+
+
Prior to Gecko 27, unless create or truncate are set or explicit unixFlags are given, the file will be opened for appending on Unix/Linux. However, the file is not opened for appending on Windows. See bug 924858. Starting with Gecko 27, you may use the append flag instead. For an example using append see here.
+
+
truncate | trunc
+
If true, 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 create.
+
create
+
If true, file will be opened for writing. The file must not exist. If the file already exists, throw an error. Cannot be used with truncate or existing.
+
existing
+
If true, the file must already exist. If the file does not exist, throw an error. Cannot be used with create.
+
append
+
If true, the file will be opened for appending, meaning the equivalent of .setPosition(0, POS_END) is executed before each write. The default is true, i.e. opening a file for appending. Specify append: false to open the file in regular mode.
+
+
+
options {{optional_inline()}}
+
Platform-specific options for opening the file. For advanced users only. Most users will never have need of these options. To specify options, pass an object that may contain some of the following flags: +
+
unixFlags
+
(ignored under non-Unix platforms) If specified, file opening flags, as per libc function open. If unspecified, build these flags from the contents of mode. You can build these flags from values OS.Constants.libc.O_*.
+
unixMode
+
(ignored under non-Unix platforms) If specified, file creation mode, as per libc function open. 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 OS.Constants.libc.S_I*.
+
winShare
+
(ignored under non-Windows platforms) If specified, a sharing policy, as per Windows function CreateFile. 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_*.
+
winSecurity
+
(ignored under non-Windows platforms) If specified, a security policy, as per Windows function CreateFile. If unspecified, no security attributes.
+
winAccess
+
(ignored under non-Windows platforms) If specified, access mode, as per Windows function CreateFile. This also requires option winDisposition and this replaces argument mode. If unspecified, value is built from mode.
+
winDisposition
+
(ignored under non-Windows platforms) If specified, disposition mode, as per Windows function CreateFile. This also requires option winAccess and this replaces argument mode. If unspecified, value is built from mode.
+
+
+
+ +
Promise resolves to
+ +

An instance of OS.File representing the expected file.

+ +
Note that the operating system limits the number of files that can be opened simultaneously by one process, so do not forget to close that file once you have finished it, to ensure that you are not blocking the rest of the process.
+ +

When opening files for writing, they will be opened for appending unless you specify append: false 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 unixFlags or open the file with either create or truncate flags. In Gecko 26 and earlier on Windows, files will never be opened for appending.

+ +

To open an existing file for writing without appending in a compatible way on all platforms in both Gecko 27 and later and Gecko 26 and earlier, you should specify both the append flag and unixFlags.

+ +
// 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();
+  }
+});
+ +
Example of opening file and keeping it locked
+ +

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.

+ +
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);
+ +

Then when you want to unlock the file so it can be edited from other places, close the file.

+ +
file.close();
+ +

This example is from Stackoverflow: OS.File check last modified date before OS.read

+ +

OS.File.openUnique()

+ +

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.

+ +
Promise<object> openUnique(
+  in string path,
+  [optional] in object options
+) throws OS.File.Error
+ +
Arguments
+ +
+
path
+
The full native name of the file to open.
+
options {{optional_inline()}}
+
Additional options for file opening. This implementation interprets the following fields: +
+
humanReadable
+
If true, create a new filename appending a decimal number, e.g., filename-1.ext, filename-2.ext. If false use hex numbers, e.g., filename-A65BC0.ext.
+
maxAttempts
+
Used to limit the amount of tries after a failed file creation. Default is 99.
+
+
+
+ +
Promise resolves to
+ +

An object contains a file object{file} and the path{path}.

+ +
Promise can be rejected with
+ +
+
OS.File.Error
+
If the file could not be opened.
+
+ +

OS.File.copy()

+ +

Copy a file.

+ +
void copy(
+  in string sourcePath,
+  in string destPath
+  [optional] in object options)
+throws OS.File.Error
+
+ +
Arguments
+ +
+
sourcePath
+
The full path of the file to copy. At the time of this writing, this function does not copy directories.
+
destPath
+
The full path of the destination. Note that this is not a directory but a file.
+
options {{optional_inline()}}
+
An optional object used to control the behavior of this function. You may pass an object with a subset of the following fields:
+
noOverwrite
+
If destPath already exists, do not overwrite it, but rather launch an exception.
+
+ +
Promise can be rejected with
+ +
+
OS.File.Error
+
In case of any error, in particular if the file does not exist.
+
+ +
Performance notes + + +
+ +

OS.File.exists()

+ +

Determine whether a file exists

+ +
Promise<bool> exists(
+  in string path
+)
+
+ +
Arguments
+ +
+
path
+
The name of the file
+
+ +
Promise resolves to
+ +

true if the file exists, false otherwise

+ +
Performance note: 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.
+ +

OS.File.getCurrentDirectory()

+ +

Return the current directory

+ +
Promise<string> getCurrentDirectory()
+ +
Promise resolves to
+ +

The path to the current directory.

+ +
+

Safety note: 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.

+
+ +

OS.File.makeDir()

+ +

Create a new directory

+ +
Promise<void> makeDir(
+  in string path,
+  [optional] in object options
+) throws OS.File.Error
+ +
Arguments
+ +
+
path
+
The full name of the directory to create.
+
options {{optional_inline()}}
+
Options for creating the directory. To specify options, pass an object that may contain some of the following flags:
+
ignoreExisting
+
If true, succeed even if the directory already exists (default behavior). Otherwise, fail if the directory already exists. NOTE: If from is specified then even if ignoreExisting is specified as false, it will not fail due to pre-existence of directories, because the from option tells makeDir to make the folders if not found.
+
unixMode
+
(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 OS.Constants.libc.S_I*.
+
winSecurity
+
(ignored under non-Windows platforms) If specified, a security policy, as per Windows function CreateDirectory. If unspecified, no security attributes.
+
from
+
If specified, the call to makeDir creates all the ancestors of path that are descendents of from. Note that from and its existing descendents must be user-writeable and that path must be a descendent of from.
+
+ +

OS.File.move()

+ +

Move a file.

+ +
Promise<void> move(
+  in string sourcePath,
+  in string destPath
+  [optional] in object options
+)
+ +
Arguments
+ +
+
sourcePath
+
The full path of the file to move. At the time of this writing, the behavior of this function is unspecified if sourcePath is a directory.
+
destPath
+
The full path of the destination. At the time of this writing, the behavior of this function is unspecified if destPath is a directory.
+
options {{optional_inline()}}
+
An optional object used to control the behavior of this function. You may pass an object with a subset of the following fields: +
+
noOverwrite
+
If destPath already exists, do not overwrite it, but rather launch an exception.
+
noCopy
+
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.
+
+
+
+ +
Promise can be rejected with
+ +
+
OS.File.Error
+
In case of any error, in particular if the file does not exist.
+
+ +
Performance note: This operation is OS-optimized under OS X, Linux/Android, and Windows.
+ +

OS.File.read()

+ +

Read the contents of a file

+ +
Promise<Uint8Array> read(
+  in string path,
+  [optional] in number bytes
+)
+
+ +
Arguments
+ +
+
path
+
The full path to the file to read.
+
bytes {{optional_inline()}}
+
The number of bytes to read. If unspecified, read the complete file.
+
+ +
Promise resolves to
+ +

An array holding bytes bytes (or less if the file did not contain as many bytes).

+ +
Promise can be rejected with
+ +
+
OS.File.Error
+
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.
+
+ +
+
+
As of Firefox 30, OS.File.read() takes an options object as second argument.
+
+ +
Promise<Uint8Array> read(
+  in string path,
+  [optional] in object options
+)
+ +
Arguments
+ +
+
path
+
The full path to the file to read.
+
+ +
+
options {{optional_inline()}}
+
An optional object used to control the behavior of this function. You may pass an object with a subset of the following fields: +
+
bytes
+
The number of bytes to read. If unspecified, read the complete file.
+
encoding
+
Instead of using TextDecoder, you can supply a string to this option. For example, instead of: +
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
+  }
+);
+ You can simply do: + +
let promise = OS.File.read("file.txt", { encoding: "utf-8" });
+promise = promise.then(
+  function onSuccess(text) {
+    return text;        // text is a string
+  }
+);
+
+
+
+
+
+ +

OS.File.remove()

+ +

Remove an existing file.

+ +
Promise<void> remove(
+  in string path,
+  [optional] in object options
+)
+
+ +
Arguments
+ +
+
path
+
A string representing the path of the file to remove. At the time of this writing, this function does not remove directories.
+
options {{optional_inline()}}
+
An optional object used to control the behavior of this function. You may pass an object with a subset of the following fields:
+
ignoreAbsent
+
Succeed if the file doesn't exist.
+
+ +
Promise can be rejected with
+ +
+
OS.File.Error
+
In case of any error, in particular if the file does not exist.
+
+ +

OS.File.removeEmptyDir()

+ +

Remove an empty directory

+ +
Promise<void> removeEmptyDir(
+  in string path,
+  [optional] in object options
+)
+
+ +
Arguments
+ +
+
path
+
The complete path to the directory.
+
options {{optional_inline()}}
+
An optional object used to control the behavior of this function. You may pass an object with a subset of the following fields:
+
ignoreAbsent
+
Succeed if the directory doesn't exist.
+
+ +
Promise can be rejected with
+ +
+
OS.File.Error
+
In case of any error, in particular if the file does not exist.
+
+ +

OS.File.removeDir()

+ +

Remove an existing directory and its contents.

+ +
Promise<void> removeDir(
+  in string path,
+  [optional] in object options
+)
+
+ +
Arguments
+ +
+
path
+
A string representing the name of the file to remove.
+
options
+
An object that may contain the following fields
+
ignoreAbsent
+
If false, this function will throw an error if the directory doesn't exist.
+
ignorePermissions
+
If true, this function will remove the directory even when lacking write permissions.
+
+ +
Promise can be rejected with
+ +
+
OS.File.Error
+
In case of any error, in particular if path isn't a directory.
+
+ +

OS.File.setCurrentDirectory()

+ +

Change the current directory of the process.

+ +
Use with extreme caution: 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.
+ +
Promise<void> setCurrentDirectory(
+  in string path
+)
+ +
Arguments
+ +
+
path
+
The complete path to use as current directory.
+
+ +
Promise can be rejected with
+ +
+
OS.File.Error
+
In case of any error, in particular if the path does not represent an existing directory.
+
+ +

OS.File.setDates()

+ +

Set the last access and modification date of the file.

+ +

The time stamp resolution is one second at best, but might be worse depending on the platform, file system, etc.

+ +
Promise<void> setDates(
+  in string path,
+  in Date|number accessDate,
+  in Date|number modificationDate
+)
+ +
Arguments
+ +
+
path
+
The complete path to the file.
+
accessDate
+
The last access date. If numeric, milliseconds since epoch. If omitted or null, the current date will be used.
+
modificationDate
+
The last modification date. If numeric, milliseconds since epoch. If omitted or null, the current date will be used.
+
+ +
Promise can be rejected with
+ +
+
OS.File.Error
+
In case of any error, in particular if the path does not represent an existing file.
+
+ +
+
+

OS.File.setPermissions()

+ +

Sets the file's access permission bits.

+ +
Promise<void> setPermissions(
+  in string path,
+  in object options
+)
+ +
Arguments
+
+
path
+
The complete path to the file.
+
options
+
The new attributes to set
+
winAttributes
+
This is an object with following optional keys. Ignored under non-Windows platforms.
+
hidden
+
Boolean. Set to true to make the target hidden, or false to make it visible.
+
readOnly
+
Boolean. Set to true to make the target "read only".
+
system
+
Boolean. Toggles the "system" attribute, this is equivalent .
+
unixMode
+
Number. This is an number can be created with the constants available in OS.Constants.libc.S_I* or OS.Constants.libc.S_O*. Ignored under non-Unix platforms. To make a file hidden on Unix based platforms, including Mac, simply rename the file with OS.File.move to have "." at the start of the file name.
+
unixHonorUmask
+
Toggles the OS.Constants.Sys.umask flag. Ignored under non-Unix platforms..
+
+
Promise can be rejected with
+
+
OS.File.Error
+
In case of any error, in particular if the path does not represent an existing file.
+
+ +

OS.File.stat()

+ +

Obtain information about a file, such as size, creation date, etc.

+ +
Promise<File.Info> stat(
+  in string path
+)
+ +
Arguments
+ +
+
path
+
The complete path to the file.
+
+ +
Promise resolves to
+ +

An instance of File.Info holding information about a file.

+ +
Promise can be rejected with
+ +
+
OS.File.Error
+
In case of any error, in particular if the path does not represent an existing file.
+
+ +
Performance Note: If the file is already opened, calling method stat() is much faster than calling function OS.File.stat().
+ +

OS.File.unixSymLink()

+ +

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.

+ +
Promise<undefined> unixSymLink(
+  in string pathTarget,
+  in string pathCreate
+)
+ +
Arguments
+ +
+
pathTarget
+
The complete path to the file that should be launced by the symbolic link.
+
+ +
+
pathCreate
+
The complete path to the file that should launch target. The file extension should be .link.
+
+ +
Promise resolves to
+ +

undefined

+ +
Promise can be rejected with
+ +
+
OS.File.Error
+
In case of any error. If the file exists already, unixErrorco of 17 will be returned.
+
+ +

OS.File.writeAtomic()

+ +

Write data to a file, atomically.

+ +

Unlike a regular write, this operation ensures that, until the contents are fully written, the destination file is not modified.

+ +
Promise<void> writeAtomic(
+  in string path,
+  in ArrayBufferView data,
+  in object options
+)
+ +
Arguments
+ +
+
path
+
The full path to the destination file.
+
data
+
An ArrayBufferView holding the data to write.
+
{{ Fx_minversion_note("37.0", "As of Firefox 37, this method will neuter the array buffer.") }}
+
 
+
options
+
An object that may contain the following fields
+
tmpPath
+
If null or unspecified, write the data directly to path. If specified, write the data to a temporary file called tmpPath and, once the write is complete, rename the file to replace path. 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") }}
+
noOverwrite
+
If specified and true, and if path already exists, this function will throw an error without overwriting path.
+
flush
+
If false or unspecified, return immediately once the write is complete. If true, 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.
+
backupTo
+
Available since Firefox 30. If specified, backup the destination file as backupTo. 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.
+
encoding
+
Available since Firefox 22. Instead of using TextEncoder, you can supply a string to this option. For example, instead of: +
let encoder = new TextEncoder();
+let array = encoder.encode("This is some text");
+let promise = OS.File.writeAtomic("file.txt", array, {tmpPath: "file.txt.tmp"});
+ You can simply do: + +
let promise = OS.File.writeAtomic("file.txt", "This is some text", { encoding: "utf-8", tmpPath: "file.txt.tmp" })
+
+
+ +
Limitations
+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 tmpPath and/or flush 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.
+ +
Use with caution: Modifying the contents of data before the operation is complete is a very bad idea.
+ +
Promise can be rejected with
+ +
+
OS.File.Error
+
In case of any error, in particular if the destination file cannot be overwritten, or if tmpPath is not on the same device as path.
+
+ +

Instances of OS.File

+ +

To obtain an instance of OS.File, use function OS.File.open.

+ +

Methods overview

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Promise<void> close()
Promise<void> flush()
Promise<number> getPosition()
Promise<number> read([optional] in number bytes)
Promise<void> setDates(in Date|number accessDate, in Date|number modificationDate);
Promise<void> setPosition(in number bytes)
Promise<File.Info> stat()
Promise<number> write(in ArrayBufferView source, [optional] in object options)
+ +

Methods

+ +

close()

+ +

Close a file and release any associated resource.

+ +

Once the file is closed, any attempt to call methods of the file object will raise an error.

+ +

An example is seen here. In this example the contents is not written to file until .close is called.

+ +
Note that the operating system limits the number of files that can be opened simultaneously by one process, so do not forget to close that file once you have finished it to make sure that you are not blocking the rest of the process.
+ +
Promise<void> close()
+ +

flush()

+ +

Flushes the file's internal buffers, ensuring that all data still in these buffers is now written to disk.

+ +

Disk flushes are very expensive and therefore should be used carefully, sparingly, and only in scenarios where it is vital that data survives system crashes. Even though the function will be executed off the main-thread, it might still affect the overall performance of any running application.

+ +
Promise<void> flush()
+ +

getPosition()

+ +

Return the current position in the file.

+ +
Promise<number> getPosition()
+
+ +
Promise resolves to
+ +

The current position in the file, as a number of bytes from the start.

+ +
Promise can be rejected with
+ +
+
OS.File.Error
+
If the file is closed.
+
+ +

read()

+ +

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.

+ +
Promise<Uint8Array> read(
+  [optional] in number bytes
+)
+ +
Arguments
+ +
+
bytes
+
If specified, read bytes bytes, or less if the file does not contain that many bytes. If unspecified, read all the remaining bytes from this file.
+
+ +
Promise resolves to
+ +

An array containing the bytes read.

+ +
If you need to convert the result of this function to a string, you may do so by using the StringEncoding API.
+ +
Promise can be rejected with
+ +
+
OS.File.Error
+
In case of I/O error.
+
+ +

setDates()

+ +

Set the last access and modification date of the file.

+ +

The time stamp resolution is one second at best, but might be worse depending on the platform, file system, etc.

+ +
Promise<void> setDates(
+  in Date|number accessDate,
+  in Date|number modificationDate
+)
+ +
Arguments
+ +
+
accessDate
+
The last access date. If numeric, milliseconds since epoch. If omitted or null, the current date will be used.
+
modificationDate
+
The last modification date. If numeric, milliseconds since epoch. If omitted or null, the current date will be used.
+
+ +
Promise can be rejected with
+ +
+
OS.File.Error
+
In case of any error, in particular if the path does not represent an existing file.
+
+ +

setPosition()

+ +

Change the current position in the file.

+ +
Promise<void> setPosition(
+  in number offset,
+  in object origin
+)
+
+ +
Arguments
+ +
+
offset
+
+ +
+
The new position, as a number of bytes from the origin.
+
origin
+
One of the following: +
    +
  • OS.File.POS_START (bytes are counted from the start of the file)
  • +
  • OS.File.POS_CUR (bytes are counted from the current position in the file)
  • +
  • OS.File.POS_END (bytes are counted from the end of the file)
  • +
+
+
+ +
Promise can be rejected with
+ +
+
OS.File.Error
+
In case of any error, in particular if the new position is before the start of the file, or if the file is closed.
+
+ +

stat()

+ +

Obtain information about the file, such as size, creation date, etc.

+ +
Promise<File.Info> stat()
+ +
Promise resolves to
+ +

An instance of File.Info holding information about the file.

+ +
Promise can be rejected with
+ +
+
OS.File.Error
+
In case of any error, in particular if the file is closed.
+
+ +

write()

+ +

Write bytes from a buffer to this file.

+ +

Note that, by default, this function may perform several I/O operations to ensure that the buffer is fully written.

+ +

An example is seen here.

+ +
Promise<number> write(
+  in ArrayBufferView source
+  [optional] in object options
+)
+ +
Arguments
+ +
+
source
+
The array in which the the bytes are stored.
+
{{ Fx_minversion_note("37.0", "As of Firefox 37, this method will neuter the array buffer.") }}
+
options {{optional_inline()}}
+
An object that may contain some of the following fields:
+
bytes
+
An upper bound to the number of bytes to write to the file. If unspecified, write up to source.byteLength bytes. If specified, this must be less than source.byteLength.
+
+ +
Promise resolves to
+ +

The number of bytes effectively written to the file.

+ +
Promise can be rejected with
+ +
+
OS.File.Error
+
In case of any I/O error.
+
TypeError
+
If options.bytes is specified and is larger than source.byteLength.
+
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 +--- +

{{ gecko_minversion_header("2") }}

+ +

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é.

+ +

Pour l'utiliser, vous devez en premier importer le code module dans l'environement Javascript: 

+ +
Components.utils.import("resource://gre/modules/Services.jsm");
+
+ +

Then you can obtain references to services by simply accessing them from the Services object exported by the code module. For example, to obtain a reference to the preferences service:

+ +
var prefsService = Services.prefs;
+
+ +

Provided service getters

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Service accessorService interfaceService name
androidBridge{{ interface("nsIAndroidBridge") }}1
appinfo{{ interface("nsIXULAppInfo") }}
+ {{ interface("nsIXULRuntime") }}
Application information service
appShell{{ interface("nsIAppShellService") }}Application shell service
blocklist{{ interface("nsIBlocklistService") }}Blocklist service
cache{{ interface("nsICacheService") }}Cache service
cache2{{ interface("nsICacheStorageService") }}Cache storage service
clipboard{{ interface("nsIClipboard") }}Clipboard
console{{ interface("nsIConsoleService") }}Error console service
contentPrefs{{ interface("nsIContentPrefService") }}Content Preferences service
cookies{{ interface("nsICookieManager2") }}Cookie Manager 2 service
cpmm{{ interface("nsIMessageSender") }}Child process message manager4
crashmanagerCrashManager.jsm 
dirsvc{{ interface("nsIDirectoryService") }}
+ {{ interface("nsIProperties") }}
Directory service
domStorageManager{{ interface("nsIDOMStorageManager") }}DOM Storage Manager
DOMRequest{{ interface("nsIDOMRequestService") }}DOMRequest service
downloads{{ interface("nsIDownloadManager") }}Download manager
droppedLinkHandler{{ interface("nsIDroppedLinkHandler") }}Dropped link handler service
els{{ interface("nsIEventListenerService") }}Event listener service
eTLD{{ interface("nsIEffectiveTLDService") }}EffectiveTLD service
focus{{ interface("nsIFocusManager") }}Focus manager
io{{ interface("nsIIOService") }}
+ {{ interface("nsIIOService2") }}
I/O Service
locale{{ interface("nsILocaleService") }}Locale service
logins{{ interface("nsILoginManager") }}Password Manager service
metro{{ interface("nsIWinMetroUtils") }}2
mm{{ interface("nsIMessageBroadcaster") }}
+ {{ interface("nsIFrameScriptLoader") }}
Global frame message manager3
obs{{ interface("nsIObserverService") }}Observer service
perms{{ interface("nsIPermissionManager") }}Permission manager service
ppmm{{ interface("nsIMessageBroadcaster") }}
+ {{ interface("nsIProcessScriptLoader") }}
Global parent process message manager3
prefs{{ interface("nsIPrefBranch") }}
+ {{ interface("nsIPrefBranch2") }}
+ {{ interface("nsIPrefService") }}
Preferences service
prompt{{ interface("nsIPromptService") }}Prompt service
scriptloader{{ interface("mozIJSSubScriptLoader") }}JavaScript subscript loader service
scriptSecurityManager{{ interface("nsIScriptSecurityManager") }}Script security manager
search{{ interface("nsIBrowserSearchService") }}Browser search service
startup{{ interface("nsIAppStartup") }}Application startup service
storage{{ interface("mozIStorageService") }}Storage API service
strings{{ interface("nsIStringBundleService") }}String bundle service
sysinfo{{ interface("nsIPropertyBag2") }}System info service
telemetry{{ interface("nsITelemetry") }}Telemetry service
tm{{ interface("nsIThreadManager") }}Thread Manager service
uriFixup{{ interface("nsIURIFixup") }}URI Fixup service
urlFormatter{{ interface("nsIURLFormatter") }}URL Formatter service
vc{{ interface("nsIVersionComparator") }}Version comparator service
wm{{ interface("nsIWindowMediator") }}Window mediator service
ww{{ interface("nsIWindowWatcher") }}Window watcher service
+ +

1 Mobile only
+ 2 Windows only
+ 3 Main process only
+ 4 Child process only

+ +

See also

+ + 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 +--- +

{{ gecko_minversion_header("20.0") }}

+ +

Le module de code JavaScript Sqlite.jsm offre une interface de stockage/SQLite. Sqlite.jsm fonctionne avec des interfaces XPCOM de stockage de bas niveau:

+ + + +

{{ note("Le module de code de Javascript Sqlite.jsm peut seulement être utilisé du chrome.") }}

+ +

Avant de pouvoir utiliser ce module, vous devez l'importer dans votre champ d'application:

+ +
let { Cu } = require('chrome')
+Cu.import("resource://gre/modules/Sqlite.jsm")
+ +

Obtention d'une connexion

+ +

Sqlite.jsm exporte le symbole Sqlite. Ce symbole est un objet avec une seule fonction: openConnection. Cette fonction prend un objet dictionnaire définissant les options de connexion:

+ +
+
path
+
(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 .sqlite.
+
sharedMemoryCache
+
(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, true.
+
shrinkMemoryOnConnectionIdleMS
+
(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.
+
+ +

openConnection(options) retourne une promise d'une instance de connexion ouverte ou est rejetée si une erreur survient lors de l'ouverture de la base de données.

+ +

Voici un exemple:

+ +
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.
+  }
+);
+
+ +

Utilisation des connexions ouvertes

+ +

Les connexions ouvertes sont ce que vous interfacer avec Sqlite.jsm. Les sections suivantes détaillent l'API d'une instance de connexion ouverte.

+ +

Gestion des connexions

+ +

Ces API sont utilisées pour gérer et vérifier l'état de la connexion.

+ +

close()

+ +

Ferme la connexion de base de données. Doit être appelé pour chaque connexion ouverte.

+ +

Cette fonction retourne une promise qui sera résolu lorsque la base de données sera fermée.

+ +

Si une transaction est en cours d'execution au moment où cette fonction est appelée, la transaction sera annulée.

+ +

Si des déclarations sont en cours au moment où cette fonction est appelée, elles seront annulées.

+ +

Les utilisateurs ne doivent pas tenter d'utiliser la connexion après avoir appelé cette méthode que la connexion sera inutilisable.

+ +

clone (readOnly)

+ +

Cette fonction retourne un clone de la connexion-promise actuelle.

+ +

Ces fonctions reçoivent l' argument:

+ +
+
readOnly
+
(En option) Si true le clone sera en lecture seule, false 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.
+
+ +

transactionInProgress

+ +

Cette propriété booléenne indique si une opération est en cours. Cela est rarement nécessaire par les appelants externes.

+ +

shrinkMemory()

+ +

Cette fonction peut être appelée pour diminuer l'utilisation de la mémoire de la connexion. Ceci est un wrapper utilisé dans le PRAGMA shrink_memory, qui impose à SQLite la réduiction d'utilisation de la mémoire (par les caches de compensation, etc.).

+ +

Elle peut rendre votre base de données plus lent. Par conséquent, il faut être prudent avant d'appeler cette fonction.

+ +

Cela renvoie une promise qui est résolu lorsque l'opération est terminée.

+ +

discardCachedStatements()

+ +

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.

+ +

Cela renvoie le nombre de déclarations mises en cache qui ont été rejetés.

+ +

Table et gestion du schéma

+ +

Ces API traitent de la gestion des tables et le schéma de base de données.

+ +

getSchemaVersion()

+ +

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.

+ +

setSchemaVersion(value)

+ +

Definie la valeur value de la nouvelle version associée au schéma de la base de données actuelle. Ceci est un wrapper autour de PRAGMA user_version.

+ +

tableExists(name)

+ +

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.

+ +

indexExists(name)

+ +

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.

+ +

Déclaration d'exécution

+ +

Ces API facilitent l'exécution des instructions de connexion.

+ +

executeCached(sql, params, onRow)

+ +

execute(sql, params, onRow)

+ +

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.

+ +

Ces fonctions reçoivent les arguments suivants:

+ +
+
sql
+
(Obligatoire) chaîne SQL à exécuter. Le point-virgule final n'est pas nécessaire.
+
params
+
(En option) Paramètres liés à cette déclaration. Cela peut être un tableau ou un objet. Voir les notes ci-dessous.
+
onRow
+
(En option) Fonction qui est appelée lorsqu'une ligne a été reçue.
+
+ +

La valeur de retour est une promise qui est résolu lorsque l'instruction a terminé l'exécution.

+ +

Quand une instruction est exécutée via executeCached(), 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 (sql 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.

+ +

Quand une instruction est exécutée via execute(), l'objet de la déclaration sous-jacente est jeté au terme de l'exécution.

+ +

executeCached() est recommandé pour les déclarations qui seront exécutées plusieurs fois. execute() est recommandé pour les déclarations qui seront exécutées rarement ou une fois.

+ +

Noter que les utilisateurs ne doivent pas préparer les états manuellement avant l'exécution. Il suffit d'appeler executeCached() et la déclaration sera préparée pour vous automatiquement.

+ +

Les paramètres peuvent être liés à la déclaration faite par la définition de l'argument params . 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.

+ +

{{ 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é.") }}

+ +
{{ 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.") }}
+ +
 
+ +
Lorsque onRow 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 INSERT, UPDATE et DELETE, ce n'est pas pertinentes. Cependant, il peut y avoir des conséquences importante pour SELECT . Si votre déclaration SELECT 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 onRow avec SELECT.
+ +
+
 
+ +
Si StopIteration est emis lors de l'exécution d'un gestionnaire onRow, 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.
+ +
 
+ +
Si une exception StopIteration est levée par le gestionnaire onRow , l'exception est enregistré et le traitement des lignes suivantes se poursuit normalement. La promise est toujours résolue (pas rejetée).
+ +

La promise sera rejeté avec une Error , si la déclaration n'a pas terminé l'exécution complète. L'Error peut avoir une propriété errors. Si elle est définie, ce sera un tableau d'objets décrivant les erreurs. Chaque objet possède les propriétés result et message. result est un code d'erreur numérique et message est une chaîne décrivant le problème.

+ +

Si onRow 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 mozIStorageRow .

+ +

executeTransaction(func, type)

+ +

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.

+ +

Cette fonction reçoit les arguments suivants:

+ +
+
func
+
La fonction définissant le corps de la transaction.
+
type
+
Le type de transaction à effectuer. Ce doit être l'une des constantes de TRANSACTION_* sur l'instance de connexion ouverte. Les valeurs valides sont TRANSACTION_DEFERRED , TRANSACTION_IMMEDIATE , TRANSACTION_EXCLUSIVE . Consultez la documentation SQLite pour leur signification. La valeur par défaut est TRANSACTION_DEFERRED.
+
+ +

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 executeCached() et execute().

+ +

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.

+ +

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.

+ +

Exemples

+ +

Open, Execute, Close

+ +

Dans cet exemple, nous ouvrons une connexion, exécutons une instruction simple, puis fermons la connexion.

+ +
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!");
+          }
+        )
+      }
+    )
+  }
+)
+
+ +

Ce n'est pas un excellent exemple parce qu'il ne comprend pas la gestion des erreurs et est un peu difficile à lire.

+ +

Voici la même chose mais avec Task.jsm:

+ +
Task.spawn(function* demoDatabase() {
+  let conn = yield Sqlite.openConnection({path: "MyDB.sqlite"});
+
+  try {
+    let result = yield conn.execute("SELECT 1");
+  } finally {
+    yield conn.close();
+  }
+});
+ +

Bound Parameters

+ +

Voici quelques exemples montrant des paramètres liés. Supposons que nous ouvrons une connexion avec la variable conn.

+ +
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);
+  }
+});
+
+ +

Et la même chose avec des paramètres nommés.

+ +
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);
+  }
+});
+ +

Transactions

+ +

Ces exemples montrent comment fonctionnent les transactions.

+ +
conn.executeTransaction(function* simpleTransaction() {
+  yield conn.execute("INSERT INTO myTable VALUES (?, ?)", ["foo", "bar"]);
+  yield conn.execute("INSERT INTO myTable VALUES (?, ?)", ["biz", "baz"]);
+});
+ +

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).

+ +

Voici un exemple où nous voulons forcer une annulation de la transaction.

+ +
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!");
+  }
+
+  // ...
+});
+ +

Sélection et retour des données

+ +

Ces exemples montrent comment accéder aux données qui sont retournées.

+ +

Cet exemple montre plusieurs lignes d'une table retournées en utilisant le paramètre onRow.

+ +
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.
+  console.log(result); // It worked!
+  if (callback) {
+    callback(null, accounts);
+  }
+},
+function onError(err) {
+  // An error occurred.
+  console.log(err); // Error, Oh noes!
+  if (callback) {
+    callback(err);
+  }
+});
+ +
+

Remarque: les> paramètres then peuvent être des fonctions anonymes (i.e. function() ) , les seulements nomées sont onStatementComplete et onError pour la lisibilité.

+
+ +

Cet exemple démontre la récupération d'une ligne sans utiliser le paramètre onRow, en utilisant le résultat de conn.execute. Cet exemple montre également la récupération de la clé primaire de la dernière ligne insérée.

+ +
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();
+  }
+});
+ +
+

Remarque: La valeur retournée par last_insert_rowid() l'est par connexion, de sorte que vous devrez peut-être ouvrir des connexions séparées lorsque vous faites plusieurs INSERT à différents endroits, pour être sûr que l'identifiant de ligne qui est retourné corresponde.

+
+ +

Voir aussi

+ + 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 +--- +

La localisation (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. Elles concernent aussi bien les développeurs que les autres contributeurs.

+ + + +

Voir aussi

+ +
+
Localisation de MDN
+
Cette ressource couvre la localisation de la documentation ici, sur MDN
+
Localization des applications
+
Cet ensemble de documents s'applique plus spécifiquement à la localisation d'applications, y compris les applications Firefox OS.
+
L10n
+
Documentation de référence pour l'API L10n utilisée par Mozilla pour localiser Firefox OS.
+
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 +--- +

{{Index("/fr/docs/Mozilla/Localization")}}

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 +--- +

Introduction

+ +
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 :
+ + + +
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.
+ +

 

+ +

Style propre à la langue de localisation de Mozilla

+ +
    +
+ +

Style

+ +

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. Voici les différents aspects à aborder concernant le style.

+ +
 
+ +
Ton et formalisme
+ +
Pour déterminer le ton ou le formalisme d'un projet de localisation de Mozilla dans votre langue, posez-vous ces questions :
+ + + +
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 « cliquez sur le lien » (pas très formel) plutôt que « veuillez cliquer sur le lien » (un peu plus formel). De même, le ton employé au sein d'un même projet de localisation devrait toujours rester cohérent. 
+ +
 
+ +
Expression naturelle
+ +

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 « En ocho días ». En français, on pourrait la traduire littéralement par « dans huit jours » mais aussi par « dans une semaine ». La seconde traduction est plus naturelle bien que les deux puissent être considérées comme correctes.

+ +
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.
+ +
 
+ +
Traiter les références culturelles, les expressions idiomatiques et l'argot
+ +

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 « kick-off meeting ». 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 :

+ +
    +
  1. Trouver une phrase avec une référence équivalente dans votre langue.
  2. +
  3. Retirer la référence culturelle et traduire uniquement le sens concret (par exemple, « une réunion de lancement »
  4. +
+ +

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).  

+ +
Cohérence du style
+ +
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 : https://www.mozilla.org/en-US/styleguide/identity/firefox/branding/. Par exemple, certains noms de marque comme « Firefox » 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.
+ +
 
+ +
+

Terminologie

+ +
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 :
+ + + +
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.  Évitez en particulier d'utiliser :
+ + + +
Astuces sur la traductiond de concepts difficiles
+ +
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:
+ + + +
Developing new term bases
+ +
What is your community's process for identifying and creating a new termbase? Here are a few things to keep in mind:
+ + + +

Unités et grammaire

+ +
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. For those definitions of units and grammar that apply document the reference used or how it will be applied to the translation.
+ +
 
+ +
The translation should strive to achieve proper unit conversions for currency, measurements, etc. for the target audience.
+ +
 
+ +

Units and Unit Conversion

+ +
Date Format
+ +
How are the date formats for weeks and months expressed in the following forms:
+ + + +
Reference material can be find here: https://en.wikipedia.org/wiki/Date_format_by_country
+ +
 
+ +
Calendar view: 
+ + + +
Time Format
+ +
How is time expressed in your language? Including 0-24 hr expression, hour, minute and second.
+ +
 
+ +
Numerals 
+ +
How are numerals and percentages expressed in your language? 
+ +
    Example: 1.23 (decimal separator) or 1,000 (thousand separator) using comma or period. 
+ +
 
+ +
Currency 
+ +
What are other widely used currency and symbols used in your country/language for paid apps. 
+ +
 
+ +
Units
+ +
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.
+ +
 
+ +
Names  
+ +
+

What are the order of family name and given name in your language?  Here is the guideline on the naming convention from w3c.org:

+
+ +
Address and Postal Code Format 
+ +
What is the format in your language?  
+ +
    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]
+ +
    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]
+ +
   
+ +
Telephone Number format
+ +
Space separators between digits can be different for area codes such as State (Province) and City,
+ +
 
+ +

Spelling And Grammar Checks

+ +
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. Do you have automated tests for spell checking and grammar? List those tools and dictionaries here and how regularly they should be used.
+ +
 
+ +
Tense
+ +
Do you have standards for verb forms that indicate or express the time, such as past, present, or future, of the action or state? 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?  (See: https://en.wikipedia.org/wiki/Grammatical_tense )
+ +
 
+ +

Word Forms

+ +
Pluralization  
+ +
What is the appropriate form of expressing pluralization in your language?  List all forms of plural forms and examples if there is more than one.  Additional discussions can be found Here. https://developer.mozilla.org/en-US/docs/Mozilla/Localization/Localization_and_Plurals and here:  http://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html
+ +
 
+ +
Abbreviations  
+ +

How are abbreviations expressed in your language?
+     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.).  (see: https://en.wikipedia.org/wiki/Abbreviation)    

+ +

If your language does not have a standard way of expressing abbreviations, do you simply leave them in English?

+ +
Acronyms 
+ +
+

Are there standard translations of widely accepted acronyms such as CD, DVD, MB in your language? If not, do they remain in English? (see: https://en.wikipedia.org/wiki/Acronym )

+
+ +
Punctuation
+ +
Do you use different punctuation rules in your Firefox localization than what your language standard defines?
+ +
    Example: do you use a period at the end of every user interface element translation or only some? What is the international/national standard for punctuation in your language?
+ +
 
+ +
Emphasis
+ +

Is there an international/national standard for capitalization in your language?

+ + + +
Hyphens and compounds 
+ +
What is the appropriate way of using hyphens and compounds in your language?  ( https://en.wikipedia.org/wiki/Compound_%28linguistics%29
+ +
 
+ +
Prepositions and articles 
+ +
What is the appropriate form of expressing prepositions and articles in your language?
+ +
 
+ +
Diacritics and Special characters  
+ +
Does your language use any special or accented characters and will they be applied and preserved in sort orders, and other aspects of the translation?  (see: https://en.wikipedia.org/wiki/Diacritic )
+ +
 
+ +
Quotes  
+ +
+

Does your language have a standard use for quotation marks, parenthesis, or brackets?

+
+ +
Whitespace 
+ +
+

Does your language require the use of white space around words, sentences, paragraphs, etc.? If so, in what ways?  (see: https://en.wikipedia.org/wiki/Sentence_spacing_in_language_and_style_guides )

+
+ +
User Interface Elements        
+ +
 
+ + +
+ +

General Mozilla l10n style

+ +

Accuracy

+ +

Meaning-based translation

+ +
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:
+ + + +

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.

+ +

Should not be translated

+ +
Shortcuts and accesskeys
+ +

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 CTRL+O (Cmd+O 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 Open File… menu item is stored as

+ +
<!ENTITY openFileCmd.label "Open File…">
+<!ENTITY openFileCmd.accesskey "O">
+<!ENTITY openFileCmd.commandkey "o">
+ +

The commandkey is stored in openFileCmd.commandkey (sometimes the string has .key in the identifier). Normally you should not localize this key, since shortcuts are often common across the entire operative system (e.g. CTRL+S to Save) or similar products (CTRL+T 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 [ can be accessed through ALT+è, a command key [ would not work.

+ +

In the code fragment above you see also an accesskey defined for Open File…. 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.

+ +

If the label is File, and the accesskey is F, it will be displayed as "File" 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 (O)".

+ +

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.

+ +

Accesskeys, like commandkeys, have their own lines within .dtd and .properties files and are usually identified by .accesskey in the string ID.

+ +
Variables
+ +

Variables should never be translated. You can recognize a variable within a string by its beginning with a specific character (e.g., $, #, %, etc.) followed by a combination of words without spacing. For example, $BrandShortName and %S are variables.  You can move a variable around within a string, if the translation of the string requires it.

+ + + +

Brand names, as well as copyright and trademarks should never be translated, nor transliterated into a non-Latin based script. See the Mozilla branding guide for more details.

+ +

Translating culture-specific references

+ +

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.

+ +

[Add a note about Mozilla culture.]

+ + + +

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.

+ +

Fluency

+ +
 
+ +
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.
+ +
 
+ +
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.
+ +
 
+ +
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.
+ +
 
+ +
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.
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 +--- +

Pontoon 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.

+ +
+

Vous êtes développeur ? Parcourez l'article implementing Pontoon in your project ou apprenez comment vous impliquer sur le GitHub.

+
+ +

Premiers pas

+ +

La page d'accueil de Pontoon est d'un usage très simple. Pour commencer, cliquez sur le lien « Sign in » et validez votre inscription avec votre compte Firefox (Firefox account). 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 Firefox Affiliates pour explorer les fonctionnalités de Pontoon et son processus. Et voici Pontoon qui s'ouvre :

+ +

Browser app and workspace

+ +

Barre d'outils principale

+ +

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) :

+ +

Main toolbar

+ +

Liste des chaînes

+ +

Ouvre un panneau latéral qui contient la liste de toutes les chaînes à traduire.

+ +

Sélecteur de projets

+ +

Permet de passer d'un projet de traduction à l'autre.

+ +

Sélecteur de ressources

+ +

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.

+ +

+ +
+
+ +

Sélecteur de locale

+ +

Permet de changer la langue-cible de traduction.

+ +

Go

+ +

Ouvre la sélection qui combine projet-ressource-langue

+ +

Indicateur de progression

+ +

Affiche l'avancement de votre travail de traduction pour la ressource. La fenêtre popup vous donne davantage de détails.

+ +
+
+ + + +

Permet d'exécuter des tâches spécifiques, telles que commiter sur un dépôt, télécharger des fichiers et se déconnecter.

+ + + +

Fournit des informations importantes, telles que la chronologie du projet et une liste des raccourcis clavier.

+ +
+
+ +

Bon, et si on traduisait un peu maintenant ?

+ +
+
+ +

Traduction des chaînes

+ +

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.

+ +

En contexte

+ +

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 :

+ +

In-context localization

+ +
    +
  1. Survolez au pointeur de votre souris le texte que vous souhaitez traduire.
  2. +
  3. Une icône de modification (un crayon) apparaît sur la zone de texte. Cliquez et vous activez le mode traduction.
  4. +
  5. Remplacez le texte original par sa traduction dans votre langue.
  6. +
  7. Cliquez sur l'icône d'enregistrement (une disquette) pour sauvegarder votre traduction.
  8. +
+ +
+

Hors-contexte

+ +

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:

+ +

Out-of-context localization: list Out-of-context localization: translate

+ +
    +
  1. Cliquez sur la chaîne à traduire.
  2. +
  3. Apparaît alors, dans le panneau de traduction, la chaîne originale et ses détails (tels que des commentaires).
  4. +
  5. Traduisez la chaîne dans l'espace de traduction situé en dessous.
  6. +
  7. Cliquez sur enregistrer pour enregistrer votre traduction.
  8. +
+ +

En traduisant des chaînes hors contexte, les traductions apparaîssent sur la page web si elles sont également traduisibles en contexte.

+ +

Outils d'aide à la traduction

+
+ +

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 :

+ +

Translation helpers: History Translation helpers: Machinery Translation helpers: Other locales Translation helpers: Search

+ +

Historique

+ +

Affiche les traductions suggérées pécédemment, y compris celles d'autres utilisateurs.

+ +

Machinery

+ +

Displays matches from various services: internal translation memory, Mozilla Transvision, open source translation memory, Microsoft terminology and machine translation.

+ +

Autres locales

+ +

Affiche les traductions correspondantes dans d'autres langues.

+ +

Recherche

+ +

Fonctionne presque comme Machinery, mais utilise le mot-clé fourni comme paramètre au lieu de la chaîne de caractères originale.

+ +

En cliquant sur une suggestion, vous la copiez dans la zone de traduction.

+ +
+
+ +

Publier sa localisation

+ +

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 toutes les heures. Félicitez-vous donc avec une tape dans le dos, une petite danse, une sieste ou autre chose pour célébrer votre travail!

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 +--- +

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 notes de traduction. Il existe un format établi pour ces documents, qui est détaillé dans le document actuel.

+ +

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.

+ +

Fichiers DTD

+ +
<!-- NOTE DE TRADUCTION (nom de l'entité): commentaire -->
+
+ +

Fichiers de propriétés

+ +
# NOTE DE TRADUCTION (clé): commentaire
+
+ +

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 (nom de l'entité/clé).

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 +--- +

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. 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.

+ +

Démarrer avec Verbatim

+ +

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.

+ + + + + + + + + + + + + + + + + + + + + + +
Démarrer une nouvelle localisationRejoindre une communauté existante
+
    +
  1. Rendez-vous à l'adresse https://localize.mozilla.org, la page d'accueil de Verbatim.
  2. +
+
+
    +
  1. Rendez-vous à l'adresse https://localize.mozilla.org, la page d'accueil de Verbatim.
  2. +
+
+
    +
  1. Si vous avez un compte Mozilla LDAP (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.
  2. +
+
+
    +
  1. Si vous avez un compte Mozilla LDAP (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.
  2. +
+
+
    +
  1. Rapportez un bogue en utilisant  ce modèle bugzilla 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.
  2. +
+ +
Exemple : J'aimerais vous demander d'ajouter fr-FR comme nouveau code de localisation dans Verbatim. La langue est le français. J'aime aussi les cookies. J'adore les cookies. Toutes les pâtisseries me motivent en fait.
+
+
    +
  1. Contactez la communauté 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é.
  2. +
+ +
Exemple : 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é !
+
+ +

Vous voilà enregistré(e) et identifié(e). Nous allons maintenant décrire le processus général de traduction en nous servant de la page des projets MDN comme exemple.

+ +

Traduire

+ +

Tout d'abord, il faut trouver des sources qui ne sont pas encore traduites.

+ +
    +
  1. Rendez-vous sur la page des projects MDN.
  2. +
  3. Sélectionnez votre langue dans l'onglet Overview.
  4. +
  5. Cliquez sur le répertoire LC Messages pour voir apparaître les fichiers .po qui contiennent les chaînes à traduire.
  6. +
  7. Choisissez un fichier .po dont certaines sources sont encore à traduire.
  8. +
  9. Une page s'affiche avec le résumé de ce fichier. Cliquez sur Continue translation et vous êtes redirigé vers l'onglet Translate pour commencer directement à traduire.
  10. +
+ +

Vous êtes maintenant prêt à nous aider, vous allez voir, c'est très facile. Vous pouvez le faire de deux manières :

+ +
    +
  1. Insérez votre traduction en dessous de la chaîne en anglais.
  2. +
  3. Cliquez sur Suggest. Si vous avez les autorités pour approuver une traduction, cliquez sur Submit. la chaîne suivante apparaît.
  4. +
  5. Hourra ! Vous traduisez ! Répétez les étapes 1 et 2 pour toutes les chaînes à traduire.
  6. +
+ +
Remarque : 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.
+ +

Verbatim offre des options très sympas

+ +

Verbatim offre des fonctionnalités intéressantes que vous pouvez voir dans la capture d'écran ci-dessous.

+ +

Translate Tab.png

+ + + +

Possibilités supplémentaires

+ +

Si vous avez l'autorité d'approuver les traductions, vous pourrez également accéder aux fonctionnalités suivantes.

+ +

Relire les traductions suggérées

+ +
    +
  1. Cliquez sur l'onglet Review. Vous verrez alors apparaître le nombre de chaînes en attente de révision pour chaque fichier .po.Review Tab1.png
  2. +
  3. Sélectionnez Review suggestions pour commencer à approuver les suggestions.
  4. +
  5. 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).
  6. +
+ +

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.

+ +

Utiliser VCS avec Verbatim

+ +

VCS (Version Control System) 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é.

+ +

VCS.pngPour publier vos traductions et voir vos modifications, cliquez sur le lien Commit to VCS en dessous de chaque nom de fichier. Comptez environ une heure avant de voir apparaître vos changements sur le site du projet.

+ +

Pour mettre à jour vos fichiers .po avec de nouvelles traductions, cliquez sur le lien Update from VCS en dessous de chaque nom de fichier.

+ +

 

+ +

+Remarque : 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.
+ +

Traduire les fichiers de Verbatim avec une application externe

+ +

Dans l'onglet Translate, vous avez la possibilité d'exporter les fichiers .po et .xliff et de les traduire avec une application externe (p.ex. un éditeur de texte ou une mémoire de traduction).

+ +
    +
  1. Pour télécharger le fichier .po, cliquez sur le lien Download sous chaque nom de fichier, pour le fichier .xliff, cliquez sur le lien Download XLIFF.
  2. +
  3. Traduisez les chaînes avec l'outil de votre choix.
  4. +
+ +

Lorsque le fichier est traduit, vous devez le renvoyer sur le serveur de Verbatim, vous pouvez le faire à partir de l'onglet Translate.

+ +
    +
  1. Naviguez jusqu'à la partie Upload File à la fin de la liste de fichiers.
  2. +
  3. Cliquez sur le bouton Browse et sélectionnez le fichier que vous souhaitez envoyer.
  4. +
  5. Sélectionnez un mode d'envoi selon les options disponibles.
  6. +
  7. Cliquez sur Upload.
  8. +
+ +
+

Important : 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.

+
+ +

Voilà, on y est !

+ +

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 signaler le moindre problème, nous serons ravis de vous aider.

+ +

 

+ +

Retour : Traduire les pages MDN

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 +--- +
Le Marketplace Firefox est un marché en ligne pour les applications web. Dans cette section de MDN, vous trouverez les informations relatives à la préparation et à la publication d'applications sur le Marketplace 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 Marketplace.
+ +
+

Grâce aux technologies web standards et à certains outils, le Marketplace Firefox vous permet de publier des applications open web. 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 Marketplace 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.

+
+ +
+
+

Les clés du succès

+ +
+
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.
+
+ +

Les options de publication

+ +
+
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).
+
+ +

Publier des applications

+ +
+
Ici, on voit comment publier une application sur le Marketplace Firefox (l'envoi initial, le processus de revue, la mise à jour, le suivi des performances et la gestion des retours utilisateur).
+
+
+ +
+
+
+ +

Outils de développement

+ +
+
Les bibliothèques et API du Firefox Marketplace
+
Un aperçu et des liens à propos des API et bibliothèques disponibles pour ajouter aux applications des fonctionnalités relatives au Marketplace.
+
Les outils destinés aux développeurs d'application
+
Une liste exhaustive d'outils qui peuvent être utilisés pour développer des applications web efficacement.
+
WebIDE
+
L'outil principal pour tester, déployer et déboguer des applications Firefox OS grâce au simulateur Firefox OS ou sur un appareil Firefox OS.
+
+
+
+ + + +
    +
  1. Les clés du succès + +
      +
    1. Introduction
    2. +
    3. Quoi construire ?
    4. +
    5. Apprendre à connaître les utilisateurs
    6. +
    7. Choisir le modèle économique
    8. +
    9. Traduire son application
    10. +
    11. Promouvoir son application
    12. +
    13. Créer une communauté
    14. +
    +
  2. +
  3. Les options de publication +
      +
    1. Introduction
    2. +
    3. Les applications empaquetées
    4. +
    5. Les applications hébergées
    6. +
    7. Empaquetée ou hébergée ?
    8. +
    9. Les sites web optimisés pour le mobilewebsites
    10. +
    11. Publier soi-même son application
    12. +
    +
  4. +
  5. Le processus de publication +
      +
    1. Introduction
    2. +
    3. Le checklist pour l'envoi
    4. +
    5. Les critères de revue du Marketplace
    6. +
    7. Un exemple d'illustration
    8. +
    9. Ajouter un sous-domaine pour une application
    10. +
    11. Règles et lignes directrices +
        +
      1. Introduction
      2. +
      3. Capture d'écran pour les critères
      4. +
      5. Politique de confidentialité
      6. +
      7. Test et débogage des applications
      8. +
      +
    12. +
    +
  6. +
  7. Soumettre son application +
      +
    1. Aperçu
    2. +
    3. Première étape : s'inscrire
    4. +
    5. Deuxième étape : charger l'application
    6. +
    7. Troisième étape : lister les détails
    8. +
    9. Quatrième étape : les prochaines étapes
    10. +
    11. Cinquième étape : le système de notation des applications
    12. +
    13. Sixième étape : définir les membres d'une équipe
    14. +
    15. Septième étape : éditer les localisations
    16. +
    +
  8. +
  9. Gérer et mettre à jour une application publiée +
      +
    1. Introduction
    2. +
    3. L'état de l'application
    4. +
    5. Mettre à jour une application
    6. +
    7. Les statistiques d'une application
    8. +
    +
  10. +
  11. Soumettre un module complémentaire +
      +
    1. Un aperçu de l'envoi
    2. +
    3. Les critères de revue pour un module complémentaire
    4. +
    +
  12. +
  13. API et bibliothèques
  14. +
  15. FàQ sur le Marketplace Firefox
  16. +
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 +--- +

{{Index("/fr/Marketplace")}}

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 +--- +
+

Vous avez travaillé dur pour coder votre dernière application, mais comment pouvez-vous obtenir quelque chose en retour lors de la publication ? Cette section présente tous les informations dont vous aurez besoin pour implémenter le paiement d'application, que ce soit les paiements depuis le marketplace ou des paiements dans l'application.

+
+ +
+
+
+
Tirer profit de votre application
+
Ce guide détaillé contient des discussions préliminaires sur la façon de monétiser vos applications, y compris les applications payantes, les prix et la gestion des paiements.
+
Guide du paiement d'application
+
Cet article couvre les aspects techniques des applications payées.
+
Paiements dans les application
+
Un guide détaillé pour la mise en œuvre des paiements dans les applications dans votre application Web.
+
Valider un reçu
+
Un guide pour savoir quand et comment faire valider le reçu de paiement de votre application, que vous vouliez mettre en œuvre la validation vous-même ou utiliser une bibliothèque préexistante.
+
Guide des prix
+
Un tour d'horizon des points de fixation du prix que vous pouvez choisir pour vos applications payantes, et comment ceux-ci varient selon les différentes devises, ainsi que des informations utiles sur la gestion des paiements.
+
Statuts de paiements
+
Un résumé des pays qui bénéficient de nos services de paiement — essentiellement, peuvent être distribuées les applications payantes?
+
+
+ +
+
Tools for app developers
+ +
Technology reference documentation
+ +
Getting help from the community
+

If you still aren't sure how to do what you're trying to get done, feel free to join the conversation!

+ +

Don't forget about the netiquette...

+
+
+ +

 

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 +--- +
+

La méthode d'installation et de gestion des applications dans Firefox OS, Firefox pour Android et Firefox pour PC de bureau est indépendant de Firefox Marketplace. Cela ouvre la possibilité pour vous de non seulement auto-publier des applications, mais aussi pour créer et héberger votre propre marché. En fin de compte, vous pouvez aussi mettre en place un marché indépendant en utilisant le logiciel open source. Cette page décrit les options et donne un aperçu de la mise en œuvre de chaque.

+
+ +

vos options
+
+ Les trois principales options que vous pouvez utiliser pour créer votre propre boutique sont:
+
+      Procédé d'annuaire
+      méthode de magasin
+      remplir la mise en œuvre du marché
+
+ Ces options sont décrites plus en détail ci-dessous.
+
+ Remarque: les applications peuvent être limités à l'installation à partir d'une liste des origines autorisés avec la installs_allowed_from bien manifeste. Vous aurez besoin de confirmer que cette propriété n'est pas définie pour exclure l'origine de votre magasin lors de l'inscription applications.

+ +

Directory method

+ +

Here you create a directory of apps served by the Firefox Marketplace, making use of the Firefox Marketplace API 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.
+ You can find an example of this method of store creation in TheCount. At the time of writing, to see the example in action click apps with at least 30 ratings 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.

+ +

The installation button for an app with at least 30 ratings in TheCount, a stats and reporting website.

+ +

You can find the code used to implement the button in the project's Github repository.

+ +

Store method

+ +

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 self-published, that is, you cannot serve Packaged Apps using Privileged and Certified APIs.

+ +

Full Marketplace implementation

+ +

Here you implement the various components of Marketplace (zamboni plus other components such as Solitude and WebPay, if you want to implement payments). For more information, please see the zamboni documentation.

+ +

Useful APIs

+ +

When implementing the directory or store methods, you'll find the following APIs of use.

+ +

Interacting with Marketplace

+ +

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:

+ + + +

To find more information on these APIs and others that might be useful, please see the Firefox Marketplace API documentation.

+ +

Managing apps on a device

+ +

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.

+ +

For example, the navigator.mozApps.getInstalled() 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.

+ +

For more details, please see App Installation and Management APIs.

+ +

Other information

+ +

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.

+ + 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 +--- +

Dans cette section, vous découvrirez :

+ + + +
+

Le contenu de cette section est toujours en cours de développement.

+
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 +--- +
+

Le Marketplace de Firefox fournit un canal à travers lequel vous pouvez publier vos applications et les rendre facilement détectables par les utilisateurs de Firefox OS. Cependant, ce n'est pas votre seule option pour rendre disponibles vos applications. Cette section vous aidera à comprendre les idées de base sur les formats utilisables pour les applications et les diverses options pour leur publication.

+
+ +

Vos options de publications

+ +
+
Application packagée
+
Choisissez votre méthode préférée de livraison pour vos applications - une option qui vous offre l'accès à des API privilégiées et sécurisées
+
Hosted apps
+
Découvrez comment rendre vos applications disponibles à partir d'un serveur, tout en donnant aux utilisateurs les avantages d'une application installée.
+
Packaged or hosted?
+
Utilisez cette liste de contrôle pour déterminer le format qui convient le mieux à votre application.
+
Auto-publication d'application
+
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.
+
Mobile-optimized websites
+
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.
+
+ +

 

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 +--- +
+

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 Web Runtime for Android, 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.

+
+ +

What is Open Web Apps for Android?

+ +

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.

+ +

These packages are created by the APK Factory Service, which is run as a web service by Marketplace. The APK Factory Service makes use of the APK Factory Library to create the actual package and the APK Signer to digitally sign the APK. This service is available to your own Marketplace, should you choose to create one.

+ +

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 Firefox Marketplace.

+ +
+

Note: 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.

+
+ +

Web Runtime for Android supports 12 APIs to access device capabilities, such as vibration, geolocation, and battery status. You can see a complete list of supported APIs here: 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.

+ +

Web Runtime for Android will continue to add support for other APIs in future releases. Some of the APIs planned are:

+ + + +
+

Note: 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 Design section of the App Center.

+
+ +

Using Open Web Apps for Android from Firefox Marketplace

+ +

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.

+ +

Submitting an app

+ +

When you submit an app to the Firefox Marketplace, 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.

+ +

Approving an app

+ +

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.

+ +

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.

+ +

Installing an app

+ +

When a user selects your app in the Marketplace on their Android device, installation works as follows:

+ +
    +
  1. Firefox Marketplace displays the app's details and Free install button as normal.
  2. +
  3. When the user taps Free, {{ 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.
  4. +
  5. The APK is downloaded to the Android device and the standard Android app installation process invoked.
  6. +
  7. If the user hasn't enabled the Security setting Unknown sources, Android will alert the user and give them the option to cancel the installation or open Settings.
  8. +
  9. Once Unknown sources is enabled, the user is shown an install confirmation dialog. The dialog lists the permissions requested by privileged apps.
  10. +
  11. If the user taps Install the app is installed.
  12. +
  13. Once the app has been installed, the user is given the option to Open the app and in Firefox Marketplace the Free button is replaced with a Launch button.
  14. +
+ +

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 Apps on the Tools menu as well.

+ +

Keeping apps up to date

+ +

Firefox for Android provides a mechanism installing update apps.

+ +

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.

+ +

For all other changes, you need to add a new version to the Firefox Marketplace:

+ + + +

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.

+ +

Using Open Web Apps for Android from your own Marketplace

+ +

You're able to create your own Marketplace. 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).

+ +

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.

+ +

How the APK Factory works

+ +

This section describes how the APK Factory works.

+ + + +

The following diagrams offer an alternative representation of the workflow of the APK Factory:

+ +

Web Sequence diagram showing the operation of the APK factory

+ +

Package naming and APK signing keys

+ +

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.

+ +

Package naming

+ +

The package name for an APK consists of the hosting site and a unique serial number, for example:

+ + + +

APK signing keys

+ +

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 APK Signer service. These signing keys are sensitive, and stored securely in the APK Signer.

+ +

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.

+ +
+

Note: 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.

+
+ +

FAQ

+ +

Here are answers to some frequently asked questions about APKs for Open Web Apps for Android.

+ +

What about re-installation of apps installed as bookmarks?

+ +

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.

+ +

How will in-app purchases work?

+ +

The APK is given access to the trusted UI, mozPay, and all payment processes for in-app purchases, so in-app payments will function as normal.

+ +

How do I download a copy of my app's APK?

+ +

You can download a copy of your app from the APK Factory service by retrieving a URL in the format:

+ +

https://controller.apk.firefox.com/application.apk?manifestUrl=ESCAPED_URL_TO_MANIFEST

+ +

where ESCAPED_URL_TO_MANIFEST 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.

+ +

Examples

+ +

For a hosted app:

+ +

> wget https://controller.apk.firefox.com/application.apk?manifestUrl=http%3A%2F%2Fmykzilla.org%2Fapp%2Fmanifest.webapp -O mykzilla.apk

+ +

For a packaged app:

+ +

> 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
+  

+ +

Can I generate an APK manually from a different URL?

+ +

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.

+ +

If I setup my own copy of the APK Factory can I use the APKs it generates?

+ +

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 If I also have an Android native version of my app, can both be installed on an Android device? for more information.)

+ +

Can I submit an APK created by the APK Factory to Google Play or other Android store?

+ +

You can submit an APK generated by APK Factory to Google Play or an alternative Android store. However, it's your responsibility to:

+ + + +

Can I use my Android signing keys to sign the APK and choose the package name?

+ +

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 dev-marketplace mailing list, or the Marketplace IRC channel.

+ +

If I also have an Android native version of my app, can both be installed on an Android device?

+ +

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.

+ +
+

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.

+
+ +

How can I test/debug APKs?

+ +

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.

+ +

Also see

+ + 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 +--- +
+

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.

+
+ +

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 manifeste 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.

+ +

Il y a trois types d'application packagée : 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 privilèges et d'API certifiées. 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.

+ +

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.

+ +
+

Note : 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.

+
+ +

Type d'applications packagées

+ +

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 sécurité des applications implémenté dans Firefox OS. Cette section fourni des informations sur chaque type d'application packagée.

+ +

Application Web

+ +

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  politiques de sécurité des contenus nécessaires aux applications certifiées et privilégiées.

+ +

Ce type d'application packagée ne requière pas le champ field dans son fichier manifest.webapp car la valeur par défaut (web) est correcte.

+ +

Les applications web peuvent être auto-publiées ou distribuées via le Firefox Marketplace. Elles peuvent aussi être fournies aux utilisateurs via le mécanisme d'application hébergée.

+ +

Application privilégiée

+ +

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.

+ +

Pour spécifier qu'une application est privilégiée, ajoutez le type field dans le manifest.webapp et passez-le à privileged. Chaque API privilégiée que votre application nécessite doit être spécifiée dans le champ permissions du manifeste.

+ +

Vous devez mettre les CSP suivantes dans le manifeste d'une application privilégiée :

+ +
"default-src *; script-src 'self'; object-src 'none'; style-src 'self' 'unsafe-inline'"
+ +

Ces applications ne peuvent être distribuées que via le Firefox Marketplace.

+ +

Application certifiée

+ +
+

Les applications certifiées ne sont généralement pas disponibles pour les développeurs tiers et ne sont pas distribuées via 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 dev-webapps.

+
+ +

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.

+ +

Pour spécifiée qu'elle est certifiée, l'application doit contenir le champ field avec la valeur certified dans le manifest.webapp. Chaque API privilégiée que votre application nécessite doit être spécifiée dans le champs permissions du manifeste.

+ +

Vous devez mettre les CSP suivantes dans le manifeste d'une application privilégiées :

+ +
"default-src *; script-src 'self'; object-src 'none'; style-src 'self'"
+ +

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 politique des CSP par défaut et le bug 768029.

+ +

Les applications certifiées sont pré-chargées dans les appareils par les constructeurs et les opérateurs.

+ +

Tester des applications packagées

+ +

Pour installer des applications dans le simulateur Firefox OS ou directement dans un téléphone, voyez le guide d'utilisation du manager d'application. Vous pouvez aussi installer sur un appareil via un serveur web en suivant le guide pour publier des applications par vous-mêmes.  N'oubliez pas que si vous déployez par vous-même, seules les applications web pourront être installées.

+ +

Publiez votre application packagée

+ +

Vous avez deux options pour publier vos applications : le Firefox Marketplace ou par vous-même.

+ +

Publier sur le Firefox Marketplace

+ +

Le processus pour publier une application packagée est décrit dans la section parlant de la publication d'application.

+ +

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é mini-manifeste, basé sur votre manifeste. Quand un utilisateur installe votre application, le mini-manifeste est passé à la fonction Apps.installPackage() 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.

+ +

La publier vous-même

+ +

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 à ce sujet.

+ +

Mettre a jour votre application

+ +

Pour des informations sur la mise à jour d'application, voyez la page dédiée à ce sujet.

+ +

Plus d'information

+ + + +

 

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 +--- +
+

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.

+
+

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:

+
    +
  1. Un serveur où le manifest de l'application est accessible.
  2. +
  3. 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.
  4. +
  5. Un code sur un site web appelant {{ domxref("Apps.install") }} ou {{ domxref("Apps.installPackage") }} selon la situation.
  6. +
+

Limitations

+

Avant de publier vous-même votre Open Web Apps, vous devriez garder en mémoires les limitations suivantes:

+ +

Auto-publication d'applications empaquetées

+

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:

+
    +
  1. +

    Empaquetez le contenu de votre application dans une archive ZIP et donnez lui le nom package.zip.  L'archive doit contenir toutes les ressources de l'application ainsi que que le manifeste principal.

    +
    +

    Attention: Le manifeste doit être à la racine de l'archive.

    +
    +
  2. +
  3. Créez un fichier appelé manifest.webapp 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 champs du mini-manifeste ci-dessous. +
    {
    +    "name": "Le nom de mon application",
    +    "package_path" : "<a class="LinkyMobile-ext" href="http://my-server.com/my-app-directory/my-app.zip" title="Linkification: http://my-server.com/my-app-directory/my-app.zip">http://my-server.com/my-app-directory/package.zip</a>",
    +    "version": "1",
    +    "developer": {
    +        "name": "A. Developpeur",
    +        "url": "<a class="LinkyMobile-ext" href="http://my-server.com" title="Linkification: http://my-server.com">http://my-server.com</a>"
    +    }
    +}
    +
  4. +
  5. Créez le script qui installera l'application. Pour cela, l'exemple ci-dessous utilise une simple page HTML nommée index.html ,  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. +
    <html>
    +  <body>
    +    <p>Page d'installation de l'application empaquetée</p>
    +    <script>
    +      // Cette URL doit être une URL compléte
    +      var manifestUrl = '<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>';
    +      var req = navigator.mozApps.installPackage(manifestUrl);
    +      req.onsuccess = function() {
    +        alert(this.result.origin);
    +      };
    +      req.onerror = function() {
    +        alert(this.error.name);
    +      };
    +    </script>
    +  </body>
    +</html>
    +
  6. +
  7. Copiez les fichiers package.zip, package.manifest, et index.html sur votre serveur dans le dossier choisi (my-app-directory dans cet exemple).
  8. +
  9. Maintenant vous pouvez installer l'application sur un appareil compatible. Ouvrez le fichier index.html (dans cet exemple le chemin de ce fichier est http://mon-serveur.com/App-directory/index.html)  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.
  10. +
+
+

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: http://10.10.12.1:8080/package.zip.

+
+

Champs du mini-manifeste

+

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 manifeste de l'application.

+

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 name, version, developer et locales fields seront exactement les mêmes dans les deux manifestes. Il ne vous reste plus qu'à ajouter les champs package_path, release_notes et size:

+
+
+ package_path (requis)
+
+ Le chemin absolu (URL compléte:  http://mon-serveur.com/App-directory/manifest.webapp) vers l'archive de l'application.
+
+ release_notes (optionel)
+
+ Notes de version de l'application. Sur le Firefox Marketplace cette information est fournie lors du processus de soumission.
+
+
+
+ size (optionel)
+
+ 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.
+
+

Voici un exemple d'un mini-manifeste:

+
{
+  "name": "My app",
+  "package_path": "<a class="LinkyMobile-ext" href="http://thisdomaindoesnotexist.org/myapp.zip" title="Linkification: http://thisdomaindoesnotexist.org/myapp.zip">http://thisdomaindoesnotexist.org/myapp.zip</a>",
+  "version": "1.0",
+  "size": 172496,
+  "release_notes": "Première publication",
+  "developer": {
+    "name": "Dupont Michel",
+    "url": "<a class="LinkyMobile-ext" href="http://thisdomaindoesnotexist.org/" title="Linkification: http://thisdomaindoesnotexist.org/">http://thisdomaindoesnotexist.org/</a>"
+  },
+  "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"
+  }
+}
+
+

Les autres champs de cet exemple sont:

+
+
+ name (requis)
+
+ Le nom de l'application. La longueur maximale est de 128 caractères.
+
+ version (optionel)
+
+ Le numéro de version de cette application.
+
+ developer  (optionel)
+
+ Information sur le développeur, contenant les champs name (nom) et url (adresse). Les informations saisies doivent correspondre avec celles du fichier manifest dans l'archive ZIP.
+
+ locales (optionel)
+
+ Information sur le langage, au format xx-YY.
+
+ icons (optionel)
+
+ Les icones utilisés par cette application.
+
+

Les autres champs de l'exemple proviennent du manifeste de l'application voir la page associée pour plus d'information.

+

Auto-publication d'application hébergée

+

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 page associée. 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

+

Voir aussi

+ 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 +--- +

REDIRECTION Introduction — App Publishing [en-US] (Introduction - publication d'applications)

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 +--- +
+

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.

+
+ +

D'après Mozilla, les modalités d'une évaluation d'application sont :

+ + + +

Sécurité

+ +

Tous les détails de l'architecture de sécurité des applications sont disponibles ici : https://wiki.mozilla.org/Apps/Security

+ + + +

Confidentialité

+ +

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 modèle de politique de confidentialité. Regardez également nos directives sur la politique de confidentialité.

+ +

Contenu

+ + + +

Règles de contenu

+ +

Cette liste décrit les types de contenu qui ne sont pas appropriés sur le Firefox Marketplace. Cette liste est indicative, non définitive, et peut donc être mise à jour. 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.

+ + + +

Fonctionnalité

+ + + +

Ergonomie

+ + + +

Politique de blocage

+ +

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 :

+ + + +

Plus d'informations

+ +

Les ressources suivantes fournissent plus d'informations sur le processus d'évaluation des applications et les commentaires :

+ + + +

 

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 +--- +
+

Cet article explique le processus par lequel vous mettez à jour des applications publiées, auto-éditées ou publiées sur le Firefox Marketplace.

+
+ +
+

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.

+
+ +

Mise à jour des applications hébergées

+ +

Hosted Apps respectent les règles normales de mise en cache Web, et peuvent utiliser des mécanismes avancés pour améliorer le démarrage ou pour permettre une utilisation hors ligne, tels que AppCache. Par conséquent, il n'y a normalement pas de règles spéciales pour la mise à jour des applications - il vous suffit de mettre à jour l'application sur votre site.

+ +

Cependant, quelques changements sur vos applications peuvent impliquer des mises à jour du manifeste.

+ +

Changer le contenu d'un manifeste

+ +

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 évaluation.

+ +

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") }} . 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.

+ +

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.

+ +

Changement de l'emplacement d'un manifeste

+ +

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.

+ +

Si vous voulez  faire ceci pour des applications soumises au Marketplace de Firefox, retournez à la soumission d'application et dans la page " Edit Details " changez la valeur de l'URL du manifeste. La suite dépendra du statut de votre application :

+ + + +

Avis sur les applications mises à jour

+ +

Lorsqu'une applicationi hébergée est signalée pour évaluation à la suite d'une mise à jour, ce qui suit se produit :

+ + + +
+

Dans la mesure du possible, vous devez éviter de changer l'emplacement de l'application / manifeste après la publication dans le Marketplace de Firefox, en raison de l'impact sur l'utilisateur. Un changement de l'emplacement du manifeste se traduira par une nouvelle instance installée de l'application lorsque {{ domxref("Apps.install") }} est invoquée . De nombreux utilisateurs trouveront cela perturbant.

+
+ +

Mise à jour des applications empaquetées

+ +

Les Packaged Apps ont un processus de mise à jour différent de celui des applications hébergées. Pour mettre à jour une application empaquetée, vous téléchargez une nouvelle version du fichier zip sur le Marketplace de Firefox. L'application mise à jour est ensuite évaluée et, lorsqu'elle est approuvée, publiée sur le Marketplace.  Cela déclenche une mise à jour de toutes les versions installées. Les utilisateurs de l'OS Firefox peuvent également demander une mise à jour en utilisant l'application Paramètres. Pour télécharger une nouvelle version de votre application, connectez-vous au Marketplace avec le même compte que pour la présentation précédente, puis cliquez sur l'icône d'engrenage en haut à droite et cliquez sur « My Submissions » (mes soumissions).   Sous l'en-tête « Manage My Submissions » (gérer mes soumissions) et pour l'application en question, cliquez sur "Status & Versions." De là, faites défiler vers le bas et cliquez sur " Select a File " (Sélectionner un fichier) sous "Upload New Version" (Télécharger la nouvelle version).  À partir de là, vous pouvez choisir de ne pas avoir une  publication automatique de votre application après son évaluation en décochant la case  "Publish my app in the Firefox Marketplace as soon as it's reviewed". Les appareils des utilisateurs vérifieront chaque jour l'existence de mises à jour d'applications, et verront une notification d'une mise à jour disponible pour son téléchargement à leur discrétion.

+ +

Would you like to publish to marketplace upon review?

+ + 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 +--- +
+

Documentation pour la publication d'une application sur Firefox Marketplace.

+
+ +
+
+
+
App testing and troubleshooting
+
Un petit guide pour tester et dépanner, à suivre avant de soumettre votre application sur Firefox Marketplace.
+
Proposer une application sur le Firefox Market
+
Ce guide étape par étape vous aidera à soumettre votre application avec succès à Firefox Marketplace.
+
Critères d'évaluation du Marketplace
+
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.
+
Marketplace screenshot criteria
+
Règles pour les captures d'écran à soumettre avec votre application afin de maximiser son impact et sa qualité sur le marché.
+
+
+
+ +

 

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 +--- +

This section describes the process for submitting an app to Firefox Marketplace

+

Residual details: https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit/Submitting_an_app

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 +--- +

The Mozilla MathML project is Mozilla's project to build and enhance MathML support within Firefox and other Mozilla-based applications. For a quick overview, see the slides for the innovation fairs at Mozilla Summit 2013.

+ +

Updates

+ +

Mathzilla

+ + + +

August 11, 2013

+ +

Math(ML) in Education Digital Content

+ +

August 6, 2013

+ +

Math in the browser

+ +

May 3, 2013

+ +

Firefox Nightly passes the MathML Acid2 test ; Slashdot article ; ghacks article.

+ +

January 10, 2013

+ +

Chrome 24 has been released with basic MathML support!

+ +

update: MathML disabled again in Chrome 25 :-(

+ +

December 1, 2012

+ +

All the pages of the Mozilla MathML Project have now been migrated to MDN!

+ +

November 26, 2012

+ +

Math typesetting - Why are we leaving such an important issue to under-resourced volunteers and small organisations?

+ +

Community

+ + + + + + + +

Sample MathML Documents

+ + + +

Create MathML Documents

+ + + +
+

Original Document Information

+ + +
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 +--- +

Test de torture de MathML

+
+

HTML Content

+
<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>
+

CSS Content

+
  /* 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;
+  }
+
+
+

JavaScript Content

+
  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);
+
+
+
+

Note: Afin d'obtenir le meilleur rendu pour les équations ci-dessous, assurez-vous d'avoir les polices mathématiques installées. Cette page contient également plus d'informations sur les polices expérimentales avec une table MATH, qui ne sont pas encore supportées ( voir aussi cette version utilisant les Web fonts).

+

 

+

{{ EmbedLiveSample('MathML_Torture_Test', '100%', '2500px') }}

+
+
+  
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 +--- +

Les nouvelles fonctionnalités de la version à venir de Firefox Mobile (Fennec), 1.1, ont amélioré le support pour la balise <meta name="viewport">. Les versions précédentes supportaient les propriétés width, height, et initial-scale de la balise viewport, mais étaient problématiques 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.

+ +

touch.facebook.com avant :

+ +

05-11-fennec-meta-viewport-2.png

+ +

touch.facebook.com après :

+ +

05-11-fennec-meta-viewport-1.png

+ +

Vous pouvez tester les changements par vous-même dans la dernière version de Fennec (1.1) et les dernières principales nightly builds pour Maemo, Windows, Mac, et Linux.

+ +

Trame

+ +

Les navigateurs mobiles tels que Fennec affichent les pages dans une « fenêtre » virtuelle (le viewport), 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.

+ +

Safari Mobile a créé la « balise meta viewport » pour permettre aux développeurs web de contrôler la taille et l'échelle du viewport. Beaucoup d'autres navigateurs mobiles supportent désormais cette balise, bien qu'elle ne soit pas standardisée. La documentation 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.

+ +

Apprenez-en plus sur les viewports dans les différents navigateurs mobiles dans l'article A Tale of Two Viewports (en) sur quirksmode.org.

+ +

Les bases du viewport

+ +

La plupart des sites optimisés pour les mobiles utilisent une balise comme la suivante :

+ +
<meta name="viewport" content="width=device-width, initial-scale=1.0">
+ +

La propriété width contrôle la taille du viewport. Elle peut être réglée à une valeur précise de pixels, comme width=600, ou bien à la valeur spéciale device-width qui correspond à la largeur de l'écran en pixels CSS à l'échelle 100%. (Il existe les propriétés et valeurs height et device-height 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 viewport.)

+ +

La propriété initial-scale contrôle le niveau de zoom lorsque la page est chargée pour la première fois. Les propriétés maximum-scale, minimum-scale, et user-scalable contrôlent la manière dont les utilisateurs sont autorisés à zoomer ou dézoomer une page.

+ +
+

Empêcher le zoom peut poser des problèmes d'accessibilité aux usagers avec une déficience visuelle.

+
+ +

Un pixel n'est pas un pixel

+ +

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 pixel is not a pixel is not a pixel (en).

+ +

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 à initial-scale=1 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 HDPI et MDPI (en), ce qui coïncide avec la spécification CSS 2.1, qui dit :

+ +
+

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.

+
+ +

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.

+ +

Sur des écrans à 240 dpi, les pages à initial-scale=1 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 viewport ou de CSS.

+ +

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 floor(densité / 150 dpi). Notez que le ratio par défaut est avéré uniquement lorsque l'échelle du viewport vaut 1. Sinon, la relation entre pixels CSS et pixels matériels dépend du niveau de zoom actuel.

+ +

Largeur du viewport et largeur de l'écran

+ +

Beaucoup de sites configurent leur viewport à "width=320, initial-scale=1" pour correspondre précisément à la configuration d'un iPhone en mode portrait. Comme mentionné ci-dessus, cela a provoqué des problèmes 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 viewport 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 Choosing a viewport for iPad sites.)

+ +

Pour les pages qui définissent une largeur initiale ou maximale, cela signifie que la propriété width est en réalité interprétée en tant qu'une largeur minimale du viewport. 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 viewport (au lieu de zoomer) jusqu'à la largeur de l'écran :

+ +
<meta name="viewport" content="width=500, initial-scale=1">
+ +

Fennec 1.1 supporte également minimum-scale, maximum-scale, and user-scalable, avec les défauts et les limites de Safari. Ces propriétés affectent l'échelle et la largeur initiales, en plus de limiter les changements dans le niveau de zoom.

+ +

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 maximum-scale pour empêcher ce zoom, ce qui empêche parfois les utilisateurs de zoomer :

+ +
<meta name="viewport" content="initial-scale=1, maximum-scale=1">
+ +

Cela n'est pas nécessaire sur Fennec : lorsque le périphérique change d'orientation, Fennec rafraîchit la taille du viewport, la mise en page, et les propriétés JavaScript/CSS telles que device-width, en fonction des nouvelles dimensions de la fenêtre.

+ +

Tailles communes de viewport pour les périphériques mobiles et tablettes

+ +

Si vous souhaitez connaître les largeurs de viewport des périphériques mobiles et tablettes les plus communs, il existe une liste complète des tailles de viewport sur mobiles et tablettes ici. Elle vous donnera des informations telles que la largeur du viewport 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.

+ +

Standardisation

+ +

Il y a une claire demande à propos de la balise meta viewport, 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 viewport sur les pages. D'après la spécification HTML5, les extensions à la balise meta doivent d'abord être enregistrées sur le wiki WHATWG avant d'entrer dans le processus de standardisation W3C. Si cela arrive, Mozilla s'assurera d'implémenter tout changement fait pendant la standardisation.

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 +--- +

Firefox OS

+ +

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.
+
+ Apprenez à installer Firefox OS et à développer des applications pour ce dernier.

+ +

Firefox pour Android

+ +

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.
+
+ Découvrez comment aider à développer Firefox pour Android, comment utiliser ses APIs et comment créer des modules complémentaires pour mobile.

+ +

Développement Web pour mobiles

+ +

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.

+ +

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.

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 +--- +


+ Depuis Mozilla 1.0.1 et 1.1 beta, un nouveau mode de rendu appelé « presque standard » existe. Celui-ci s'ajoute aux modes « quirks » et « standard » qui existaient depuis un bout de temps.

+ +

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 "Images, tableaux et décalages mystérieux" pour une explication détaillée du traitement de ces mises en pages particulières en mode « standard ».)

+ +

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, padding ou marges :

+ + + +

À part cette différence, les mode « presque standard » et « standard » sont exactement pareils en termes de mise en page et autres comportements.

+ +

Déclenchement du mode « presque standard »

+ +

Les déclarations DOCTYPE qui déclencheront le mode « presque standard » sont celles qui contiennent :

+ + + +

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 :

+ +
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+			"http://www.w3.org/TR/html4/loose.dtd">
+ +

Les parties sont les suivantes :

+ + + +

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 ».

+ +

Recommandations

+ + + +

Aussi sur MDC

+ + + + + +
+

Informations sur le document origninal

+ + +
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 +--- +

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.

+ +

Documentation

Guide de développement de Mozilla
Astuces et guides de développement pour contribuer au code de Mozilla.
Code source de Mozilla
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.
Documentation sur la compilation
Informations sur la compilation des différents projets Mozilla, dont Firefox et Thunderbird.
La plateforme Mozilla
Informations sur la plateforme Mozilla, toutes ses technologies et API, ainsi que la manière de les utiliser dans vos propres projets.
Documentation de Mozilla
Aidez-nous à créer et améliorer notre documentation pour Mozilla et le web ouvert.
Débogage
Astuces et recommandations à suivre lors du débogage du code de Mozilla.
Assurance qualité
Informations sur les tests et le suivi des bugs.
Localisation
Documentation sur la traduction des projets Mozilla, de la documentation, et d'autres informations dans de nombreuses langues.

Outils

Bugzilla
La base de données Bugzilla utilisée pour suivre les problèmes dans les projets Mozilla.
MXR
Parcourir et effectuer des recherches dans le référentiel du code source de Mozilla sur le web.
Bonsai
L'outil Bonsai permet de savoir qui a changé quel fichier du référentiel, et dans quel but.
Tinderbox
Tinderbox 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.
Rapports de plantage
Informations sur les systèmes de rapports de plantages Socorro et Talkback.
Suivi des performances
Consultez des informations de performances à propos des projets Mozilla.
Forums de développement
Une liste de forums de discussion classés par sujet où vous pouvez parler de vos problèmes de développement liés à Mozilla.
+

  {{ languages( { "en": "en/Participating_in_the_Mozilla_project", "ja": "ja/Participating_in_the_Mozilla_project"} ) }}

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 +--- +

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.

+ + + + + + + + +
+

Documentation

+ +
+
Système de préférences
+
Une introduction à l'utilisation du système de préférences dans Mozilla.
+
XUL School: gestion des préférences
+
Le chapitre du tutoriel XUL School sur les préférences.
+
Référence de préférence Mozilla
+
Un guide de référence pour toutes les préférences de Mozilla; actuellement un travail en cours.
+
Un bref guide des préférences de Mozilla
+
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.
+
Utilisation des préférences du code d'application {{gecko_minversion_inline("6.0")}}
+
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.
+
Préférences de mise en réseau de Mozilla
+
Un guide des principales préférences liées au réseautage.
+
Préférences de Mozilla pour les super-geeks
+
Un guide des préférences avec lesquelles seuls les geeks d'élite devraient jouer.
+
+ +

Afficher toutes les pages marquées avec "Préférences"...

+
+

Exemples

+ +
+
Extraits de code
+
Extraits de code liés aux préférences.
+
Ajout de préférences à une extension
+
Comment ajouter des préférences à une extension existante.
+
+ + + + +
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 +--- +

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.

+ +
+

Important : Cette page fournit une brève introduction à ce qu'est Emscripten. Pour démarrer avec Emscripten, allez sur le Wiki officiel d'Emscripten.

+
+ +

Avec Emscripten, vous pouvez

+ + + +

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.

+ +

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à.

+ +

À 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.

+ +

Emscripten génère du code rapide — sa sortie par défaut est asm.js, un sous-ensemble hautement optimizable du JavaScript qui s'exécute à une vitesse proche de celle du code natif, dans beaucoup de cas.

+ +
+

Note: Intéressant n'est-ce pas ? Lisez-en plus à propos d'Emscripten et essayez quelques démos, puis commencez à l'utiliser.

+
+ +

Autres articles intéressants sur MDN

+ + 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 +--- +

{{ draft() }}

+ +

Mozilla a un certain nombre de projets autres que Firefox lui-même. 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. Vous trouverez ici des liens vers de la documentation sur ces projets.

+ +

{{ LandingPageListSubpages() }}

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 +--- +

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 mozilla/js/rhino/examples.

+

Scripts Simple

+

Le script unique.js permet d'écrirer une seul ligne depuis un fichier.

+

Le script liveConnect.js montre un usage simple de LiveConnect (connectivité Java-vers-JavaScript).

+

Le script jsdoc.js est un analogue en JavaScript de la javadoc. Il permet un usage régulier des "regular expressions".

+

Le script checkParam.js est un outil utile pour vérifier les tags @param dans les commentaires documentation Java qui corresponde au paramètres dans la méthode  Java correspondante.

+

The enum.js script is a good example of using a JavaAdapter to implement a Java interface using a JavaScript object.

+

The NervousText.js script is a JavaScript implementation of the famous NervousText applet using JavaScript compiled to Java classes using jsc. It can be run in the HTML page NervousText.html.

+

Controlling the JavaScript Engine

+

The RunScript class

+

RunScript.java is a simple program that executes a script from the command line.

+

The Control class

+

Control.java is a program that executes a simple script and then manipulates the result.

+

JavaScript Shell

+

Shell.java is a program that executes JavaScript programs; it is a simplified version of the shell in the tools package. The programs may be specified as files on the command line or by typing interactively while the shell is running.

+

PrimitiveWrapFactory

+

PrimitiveWrapFactory.java is an example of a WrapFactory that can be used to control the wrapping behavior of the Rhino engine on calls to Java methods.

+

Multithreaded Script Execution

+

DynamicScopes.java 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.

+

Implementing Host Objects

+

First check out the tutorial if you haven't already.

+

The Foo class - Extending ScriptableObject

+

Foo.java is a simple JavaScript host object that includes a property with an associated action and a variable argument method.

+

The Matrix class - Implementing Scriptable

+

Matrix.java provides a simple multidimensional array by implementing the Scriptable interface.

+

The File class - An advanced example

+

File.java extends ScriptableObject to provide a means of reading and writing files from JavaScript. A more involved example of host object definition.

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 +--- +

Image:rhino.jpg

+ +

Rhino est un moteur JavaScript open-source 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.

+ +

Télécharger Rhino

+ +

Comment obtenir les sources et exécutables

+ +

La documentation de Rhino

+ +

Des informations relatives à Rhino pour écrire des scripts ou embarquer le moteur dans des applications Java.

+ +

L'aide de Rhino

+ +

Différentes ressources utiles si vous êtes bloqué.

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 +--- +

Talos est un framework de test de performance python 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.

+ +

S'il te plait regarde Talos's home page pour plus de détails.

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 +--- +

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.

+ +

Création d'une localisation Thunderbird

+ +

Création d'une nouvelle localisation (Mercurial) - Cet article décrit comment créer une nouvelle localisation pour Thunderbird.

+ +

À propos des répertoires et des branches

+ +

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.

+ + + +

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.

+ +

Exigences en matière de localisation

+ +

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 consultez cette page .

+ +

Tableau de bord de localisation

+ +

Le tableau de bord de localisation 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 page du tableau de bord l10n .

+ +

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 comparer-langues. Pour demander l'ajout de votre langue au tableau de bord, déposez un bogue dans le produit Thunderbird ou le composant Build Config.

+ +

Obtenir des informations pertinentes pour l10n

+ +

Groupes de discussion & listes de diffusion

+ +

Les localisateurs de Thunderbird devraient lire les groupes de discussion sur la localisation (mozilla.dev.l10n.announce mozilla.dev.l10n) 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. (mozilla.dev.apps.thunderbird) pour être informés des dernières nouveautés.

+ +

Ces groupes de discussion sont également accessibles via les listes de diffusion dev-l10n-announce@lists.mozilla.org, dev-l10n@lists.mozilla.org (liste de diffusion de localisation) ou dev-apps-thunderbird@lists.mozilla.org (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 lists.mozilla.org.

+ +

Bugzilla

+ +

Les localisateurs devraient surveiller l'adresse électronique thunderbird@localization.bugs (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 préférences e-mail dans bugzilla.

+ +

Quelques liens utiles

+ + + +

Niveaux des langues

+ +

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.

+ +

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.

+ +

Niveau 1

+ +

Les langues suivantes sont en P1 (priorité 1) par prépondérence :

+ +
* 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
+
+ +

Niveau 2

+ +

Toutes les autres langues supportées sont dans la catégorie de niveau 2.

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 +--- +
+

Inspirez, collaborez, mettez en œuvre vos compétences afin de faire du Web « la » plateforme des appareils connectés.

+
+ + +
+
+
+ +
+ +
+ +
+ +
+ +
+
+ +
+

Entrer en contact avec Mozilla

+ +

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.
+
+ 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 newsletter pour vous tenir informé des derniers événements autour du Web et des applications web.
+
+ Nos idées sont nombreuses pour agrandir le Mozilla Developer Program et vous impliquer autant que nous le sommes ! Pour participer : suivez les tags sur Stack Overflow, abonnez vous au blog Hacks, et créez un compte MDN !

+
+ +
+
+

Q&R sur Stack OverflowVoir toutes les Q&R...

+ +

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 http://stackoverflow.com/r/mozilla.

+ + +
Stack form
+ +

Dernières Questions-Réponses

+
+ +
 
+
+ +

Développeurs lors d'un événement Firefox OS à Madrid

+ + +
+ +

 

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 +--- +

Rust logoRust 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.

+ +

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.

+ +

Pour en apprendre plus sur Rust, vous pouvez :

+ + + +

Rust et le futur de la programmation des systèmes

+ +

{{EmbedYouTube("8EPsnf_ZYU0")}}

+ +

Débloquez le pouvoir du parallélisme avec Rust

+ +

{{EmbedYouTube("cNeIOt8ZdAY")}}

+ +

Rust pour les développeurs web

+ +

{{EmbedYouTube("FfoXFnzZbBM")}}

+ +

Programmation des systèmes sécurisée avec Rust

+ +

{{EmbedYouTube("P3sfNGtpuxc")}}

+ +

Agrandir la communauté Rust

+ +

{{EmbedYouTube("duv0tuPAnO0")}}

+ +

Mettre Rust en production chez Mozilla

+ +

{{EmbedYouTube("2RhbYpgVpg0")}}

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 +--- +

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.

+ +

{{LandingPageListSubpages}}

+ + 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 +--- +

Mozilla a plusieurs technologies utilisées en composantes de ses projets. Celles-ci sont documentées ici.

+ +

{{LandingPageListSubpages}}

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 +--- +

Le code source pour tous les projets de Mozilla hébergés dans le dépôt Mercurial et CVS peut être recherché et consulté en ligne à l'aide de DXR. C'est une variante renforcée et améliorée de l'outil original Linux Cross Reference.

+ +

Ne téléchargez pas le code source en parcourant toutes les pages du site DXR ; téléchargez plutôt une archive ou utilisez Mercurial ou CVS à la place.
+
+ DXR indexe plusieurs branches CVS et modules; la racine MXR la plus intéressant pour un contributeur Mozilla est
comm-central, qui contient le dernier code source pour la plupart des produits Mozilla (y compris Firefox, Thunderbird, SeaMonkey, Sunbird / Lightning Chatzilla, DOM Inspector et Venkman JavaScript debugger) et est fréquemment mise à jour.

+ +

Certaines autres racines d'intérêt MXR sont:

+ + + +

Mozilla Source Code Directory Structure (page en Anglais) contient une courte description du code dans chaque répertoire source de l'arbre.

+ +

Ressources

+ +

CVS Tags

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 +--- +

+

« PrécédentSuivant »

+

+ +

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.

+ +

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é WebLock .

+ +

La solution XPCOM

+ +

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 composants , sont ensuite assemblés de nouveau ensemble à l'exécution.

+ +

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 mise en œuvre d'un composant de l'Interface . 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.

+ +

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:

+ + + +

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 plate-forme pour le développement de composants , dans lequel des caractéristiques telles que celles énumérées ci-dessus sont fournis.

+ +

Gecko

+ +

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 Gecko , open source, conforme aux standards, navigateur Web intégrable et boîte à outils pour la création de navigateurs Web et autres applications.

+ +

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.

+ +

Gecko est utilisé dans de nombreuses applications internet, la plupart des navigateurs et notamment Mozilla Firefox.

+ +

Composants

+ +

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 (DLL sur Windows, DSO 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 module.

+ +

Modulaire, la programmation à base de composants logiciels rend plus facile le développement et la maintenance:

+ + + + + + + + + + + + + + + + + + + + + + + + +
AvantageDescription
RéutilisationCode modulaire peut être réutilisé dans d'autres applications et d'autres contextes.
Mises à jourVous pouvez mettre à jour les composants sans avoir à recompiler l'application entière.
PerformanceLorsque 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.
MaintenanceMê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.
+ +

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."

+ +

Mais il n'est pas toujours souhaitable de diviser les choses. Le composant HTTP 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.

+ +

Interfaces

+ +

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'interfaces .

+ +

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, stdio , 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 stdio quand il est compilé.

+ +

Interfaces permettent aux développeurs d' encapsuler 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.

+ +
+

Interfaces et programmation par contrat

+ +

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 immuable - 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 la programmation par contrat .

+
+ +

Interfaces et Encapsulation

+ +

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.

+ +

SomeClass Class Initialization

+ +
class SomeClass{
+  public:
+    // Constructeur
+    SomeClass();
+    // Destructeur virtuel
+    virtual ~SomeClass();
+    // method init
+    void Init();
+    void DoSomethingUseful();
+};
+
+ +

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 DoSomethingUseful ne peut être appelé après un appel à init () . La méthode DoSomethingUseful peut veiller à ce que la condition soit satisfaite.

+ +

En plus du code correctement commenté pour les règles d'utilisation de Init() , 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 classe virtuelle DoSomethingUseful 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:

+ +

Encapsulation de SomeInterface

+ +
class SomeInterface{
+  public:
+    virtual void DoSomethingUseful() = 0;
+};
+
+ +

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 utilisation ) 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.

+ +

L'interface de base nsISupports

+ +

Les deux fondamentaux de la programmation composant sont basé sur component lifetime(durée de vie), appelé aussi object ownership, et interface querying, 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 - nsISupports , qui fournit les solutions à ces deux problèmes pour les développeurs XPCOM.

+ +

Object Ownership

+ +

Avec XPCOM, parce que les composants peuvent mettre en œuvre un certain nombre d'interfaces, ils doivent être référencés . 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.

+ +

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 owning reference, d'éviter ces problemes.

+ +
+

Pointeurs avec XPCOM

+ +

Dans XPCOM, les pointeurs 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 AddRef, Release, ou QueryInterface.

+
+ +

nsISupports, 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, QueryInterface, AddRef et Release , 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.

+ +

L'interface nsISupports

+ +
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);
+};
+
+ +

Les différents types utilisés de l'l'interface sont décrites dans la section Types XPCOM. La mise en œuvre complète de nsISupports est indiquée ci-dessous. Voir Une implémentation de référence de QueryInterface pour des informations détaillées.

+ +

Mise en œuvre de l'interface nsISupports

+ +
// Initialiser le compteur de référence à 0
+Sample::Sample() : mRefCnt(0){
+}
+Sample::~Sample(){
+}
+// la mise en œuvre générique de QI
+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;
+}
+
+ +

Object Interface Discovery

+ +

Héritage 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 remplacer 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:

+ +

Héritage de classe simple

+ +
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();
+};
+
+ +

Circle(cercle) est une classe dérivée de Shape(forme) . Un cercle est une forme , en d'autres termes, mais une forme n'est pas nécessairement un cercle . Dans ce cas, forme est la classe de base et cercle est une sous-classe de forme .

+ +

Avec XPCOM, toutes les classes dérivent de l'interface nsISupports, de sorte que tous les objets héritent de nsISupports. Avec Héritage Class simple , par exemple, vous êtes en mesure de savoir si la forme est un cercle et dans ce cas de l'utiliser comme un cercle. Ces à quoi la caractéristique QueryInterface de nsISupports est destinée: elle permet aux utilisateurs de trouver et d'accéder aux différentes interfaces en fonction de leurs besoins.

+ +

En C++, vous pouvez utiliser une fonctionnalité assez avancé connu sous le nom de dynamic_cast<> , qui lève une exception si l'objet forme n'est un cercle . Mais les exceptions levants RTTI(Run-time type information) 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.

+ +
+

Exceptions avec XPCOM

+ +

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 nsresult (voir référence de l'API XPCOM pour une liste de ces codes d'erreur). Ces résultats de code d'erreur deviennent les «exceptions» que gère XPCOM.

+
+ +

Au lieu de tirer parti de RTTI du C++, XPCOM utilise la méthode QueryInterface qui passe l'objet à la bonne interface, si cette interface est pris en charge.

+ +

Chaque interface est pourvu d'un identifiant qui est généré à partir d'un outil nommée "uuidgen". Cet identifiant universel unique (UUID) est un numéro unique de 128 bits appelé IID. Ce n'est pas la même chose que l'ID d'un composant.

+ +

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 QueryInterface 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.

+ +
class nsISupports {
+  public:
+    long QueryInterface(const nsIID & uuid,
+                        void **result) = 0;
+    long AddRef(void) = 0;
+    long Release(void) = 0;
+};
+
+ +

Le premier paramètre de QueryInterface est une référence à une classe nommée nsIID , qui est une encapsulation de base de l'IID. Parmi les trois méthodes sur de la classe nsIID, Equals ,Parse et ToString , Equal est de loin le plus important, car elle est utilisé pour comparer deux nsIID dans le processus d'interrogation d'interface.

+ +

Lorsque vous implémentez la classe nsISupports (et vous le verrez dans le chapitre Utilitaires XPCOM pour faciliter les choses 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 QueryInterface avec le nsISupports IID. QueryInterface devrait soutenir toutes les interfaces que le composant soutient.

+ +

Dans les implémentations de QueryInterface, l'argument IID est comparer à la classe nsIID. Si il y a une corespondence, l'objet this pointeur est converti en void, 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 null .

+ +

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 void avec le type demandé, parce que vous devez retourner le pointeur d'interface dans la table virtuelle(vtable) correspondant à l'interface demandée. Castings peut devenir un problème quand il y a une hiérarchie d'héritage ambigu.

+ +

Identifiants XPCOM

+ +

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.

+ +
+

Classes XPCOM Identifier

+ +

La classe nsIID est en fait un typedef de la classe nsID. Les autres typedefs de nsID , CID et IID, se réfèrent respectivement à des implémentations spécifiques d'une classe concrète et d'une interface spécifique.

+ +

La classe nsID fournit des méthodes comme Equals pour comparer les identificateurs dans le code. Voir identificateurs XPCOM pour plus d'information sur nsID.

+
+ +

CID

+ +

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 nsISupports ressemble à ceci:

+ +

00000000-0000-0000-C000-000000000046

+ +

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:

+ +
#define SAMPLE_CID \
+{ 0x777f7150, 0x4a2b, 0x4301, \
+{ 0xad, 0x10, 0x5e, 0xab, 0x25, 0xb3, 0x22, 0xaa}}
+
+ +

Vous verrez utilisé aussi NS_DEFINE_CID. Cette macro déclare une constante avec la valeur du CID:

+ +
static NS_DEFINE_CID(kWebShellCID, NS_WEB_SHELL_CID);
+
+ +

Un CID est parfois aussi désigné comme un identificateur de classe . 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.

+ +

Contrat ID

+ +

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 LDAP Opération :

+ +
"@mozilla.org/network/ldap-operation;1"
+
+ +

Le format du contract ID est formé du domaine, du module, du nom du composant séparés par des barres obliques et du numéro de version.

+ +

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.

+ +

Utilisation

+ +

Une fois que le code est divisé en composants, le code client utilise habituellement l'opérateur new pour instancier des objets:

+ +
SomeClass* component = new SomeClass();
+
+ +

Ce modèle exige que le client connaisse le composant. Le factory design pattern 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 SomeClass, la construction et l'initialisation de SomeClass , qui implémente la classe abstraite SomeInterface, est contenu par la fonction New_SomeInterface:

+ +

Encapsuler le constructeur

+ +
int New_SomeInterface(SomeInterface** ret){
+  // Créer l'objet
+  SomeClass* out = new SomeClass();
+  if (!out) return -1;
+  // Initialisation de l'objet
+  if (out->Init() == FALSE){
+    delete out;
+    return -1;
+  }
+  // conversion de types de l'interface
+  *ret = static_cast<SomeInterface*>(out);
+  return 0;
+}
+
+ +

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 nsIFactory. Le modèle de conception utilise l'abstraction et encapsulalion de la construction et de l'initialisation de l'objet.

+ +

L'exemple de l'encapsulation du constructeur 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.

+ +

Un autre état ​​utile est de savoir si oui ou non un objet est un singleton . 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'nsIServiceManager), un développeur peut vouloir utiliser cette information pour s'assurer que seul un objet singleton peut exister quelque soit l'usage.

+ +

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 nsISupports, 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 nsISupports est que vous pouvez supporter d'autres interfaces comme ils sont introduits. Comme nous allons le montrer lorsque nous aborderons nsIClassInfo, 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 nsISupports.

+ +

XPIDL et bibliothèques de types

+ +

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 interface définition langage(IDL). XPCOM utilise sa propre variante de la définition CORBA OMG Interface Langage (IDL) appelé XPIDL, 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.

+ +

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:

+ +
void FooWithInt(in int x);
+void FooWithString(in string x);
+void FooWithURI(in nsIURI x);
+
+ +

Cependant, ces lacunes sont peu de chose en comparaison des fonctionnalités acquises en utilisant XPIDL. XPIDL vous permet de générer des bibliothèques de types , ou typelibs, qui sont des fichiers avec l'extension .xpt. 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é XPConnect . XPConnect est la couche de XPCOM qui donne accès à des composants XPCOM à partir des langages tels que JavaScript. Voir connexion à des composants de l'interface pour plus d'informations à propos de XPConnect.

+ +

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.

+ +
+

Écriture dans d'autres langages

+ +
+

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.

+ +

Voir les Ressources pour plus d'informations à propos de Python et d'autres langages utilisables avec XPCOM.

+
+ +

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 compilateur xpidl . La section Définir l'interface de WEBLOCK dans XPIDL décrit la syntaxe de XPIDL en détail.

+ +

Services de XPCOM

+ +

Lorsque les clients utilisent des composants, ils instancient 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.

+ +

Mais il y a aussi une sorte d'objet connu comme le service , 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é.

+ +

La fourniture de ce point d'accès unique à la fonctionnalité est mis en oeuvre par le singleton design pattern.

+ +

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 Référence de l'API XPCOM avec une liste d'interface complète.

+ +

Types XPCOM

+ +

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.

+ +

les types de méthode

+ +

Ce qui suit est un ensemble de types qui veillent à la convention d'appel correcte et de type de méthodes XPCOM de retour.

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
NS_IMETHODType de retour de déclaration de méthode.
NS_IMETHODIMPType de retour de mise en œuvre de méthode. 
NS_IMETHODIMP_(type)Cas particulier de type de retour de mise en œuvre. Certaines méthodes telles que AddRef et Release ne renvoient pas le type de retour par défaut.
NS_IMPORTForce la résolution de la méthode en interne par la bibliothèque partagée.
NS_EXPORTForce l'exportation de la méthode par la bibliothèque partagée.
+ +

Référence Comptage

+ +

Ces macros gérer comptage de référence.

+ + + + + + + + + + + + + + + + + + + + +
NS_ADDREFAppelle AddRef de nsISupports.
NS_IF_ADDREFVérifie l'etat null avant d'appeler AddRef.
NS_RELEASEAppelle Release de nsISupports.
NS_IF_RELEASEVérifie l'etat null avant d'appeler Release.
+ +

Codes d'état

+ +

Ces macros testent les codes d'état.

+ + + + + + + + + + + + +
NS_FAILEDRetourne vrai si le code d'état passé est un échec
NS_SUCCEEDEDRetourne vrai est le code d'état passé est un succès.
+ +

Variable Mappings

+ + + + + + + + + + + + + + + + +
nsrefcntType de comptage de référence(entier de 32 bits).
nsresultType d'erreur par défaut(entier de 32 bits).
nsnullValeur null par défaut.
+ +

Codes d'erreur XPCOM communes

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NS_ERROR_NOT_INITIALIZEDInstance non initialisée.
NS_ERROR_ALREADY_INITIALIZEDInstance déjà initialisée.
NS_ERROR_NOT_IMPLEMENTEDMéthode non implémentée
NS_ERROR_NO_INTERFACEInterface non pris en charge.
NS_ERROR_NULL_POINTERPointeur valide nsnull.
NS_ERROR_FAILURELa méthode a échoué. Erreur générique.
NS_ERROR_UNEXPECTEDErreur inattendue.
NS_ERROR_OUT_OF_MEMORYAllocation de mémoire échouée.
NS_ERROR_FACTORY_NOT_REGISTEREDClasse inconnue du registre.
+ +

+

« PrécédentSuivant »

+

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 +--- +

+

Suivant »

+

+ +

Ce guide a pour but de vous initier à Gecko, et de vous permettre de créer des composants XPCOM pour les applications Gecko. 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. En conséquence, ce livre est agencé de telle sorte que vous puissiez suivre et créer vos propres composants ou en apprendre davantage sur les différents sujets XPCOM individuellement, comme un ouvrage de référence. 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.

+ +
+

Remarque: De manière générale, essayez d'éviter de créer des composants XPCOM. Les add-ons devraient utiliser le nouveau Add-on SDK autant que possible ; cependant, il est probable que dans certains cas cela soit inévitable.

+
+ +
+

Remarque : Cet article décrit une méthode qui utilise xpidl mais vous devriez plutôt utiliser webidl.

+
+ +

Preface

+ +
+
Pour qui est ce tutoriel
+
Organisation du tutoriel
+
En Pratique
+
Conventions
+
Remerciements
+
+ +

Un aperçu de XPCOM

+ +
+
Solutions XPCOM
+
Gecko
+
Composants
+
Interfaces +
+
Interfaces et Encapsulation
+
L'interface de base nsISupports
+
+
+
XPCOM Identifiers +
+
CID
+
Contract ID
+
+
+
Factories +
+
XPIDL et bibliothèques de types
+
+
+
XPCOM Services
+
XPCOM Types +
+
Method Types
+
Reference Counting
+
Status Codes
+
Variable Mappings
+
Codes d'erreur XPCOM
+
+
+
+ +

Utilisation des composants XPCOM

+ +
+
Exemples de composants + +
+
gestionnaire de cookies
+
WebBrowserFind
+
WebLock
+
+
+
Utilisation de composant dans Mozilla +
+
Trouver des composants Mozilla
+
Utilisation de composants XPCOM dans votre Cpp
+
XPConnect: Utilisation de XPCOM avec un Script
+
+
+
+ +

Composants Internes

+ +
+
Creation de composants dans  Cpp
+
XPCOM Initialization +
+
XPCOM Registry Manifests
+
Registration Methods in XPCOM
+
Autoregistration
+
The Shutdown Process
+
Three Parts of a XPCOM Component Library
+
+
+
XPCOM Glue +
+
The Glue Library
+
XPCOM String Classes
+
+
+
+ +

Creating the Component Code

+ +
+
What We'll Be Working On
+
Component Registration +
+
The regxpcom Program
+
Registration Alternatives
+
+
+
Overview of the WebLock Module Source
+
Digging In: Required Includes and Constants +
+
Identifiers in XPCOM
+
Coding for the Registration Process
+
The Registration Methods
+
Creating an Instance of Your Component
+
+
+
webLock1.cpp
+
+ +

Using XPCOM Utilities to Make Things Easier

+ +
+
XPCOM Macros + +
+
Generic XPCOM Module Macros
+
Common Implementation Macros
+
Declaration Macros
+
+
+
webLock2.cpp
+
String Classes in XPCOM +
+
Using Strings
+
nsEmbedString and nsEmbedCString
+
+
+
Smart Pointers
+
+ +

Starting WebLock

+ +
+
Getting Called at Startup + +
+
Registering for Notifications
+
Getting Access to the Category Manager
+
+
+
Providing Access to WebLock
+
Creating the WebLock Programming Interface
+
Defining the WebLock Interface in XPIDL +
+
The XPIDL Syntax
+
Scriptable Interfaces
+
Subclassing nsISupports
+
The Web Locking Interface
+
+
+
Implementing WebLock +
+
Declaration Macros
+
Representing Return Values in XPCOM
+
XPIDL Code Generation
+
Getting the WebLock Service from a Client
+
Implementing the iWebLock Interface
+
The Directory Service
+
Modifying Paths with nsIFile
+
Manipulating Files with nsIFile
+
Using nsILocalFile for Reading Data
+
Processing the White List Data
+
+
+
iWebLock Method By Method +
+
Lock and Unlock
+
AddSite
+
RemoveSite
+
SetSites
+
GetNext
+
GetSites
+
HasMoreElements
+
+
+
+ +

Finishing the Component

+ +
+
Using Frozen Interfaces + +
+
Copying Interfaces Into Your Build Environment
+
Implementing the nsIContentPolicy Interface
+
Receiving Notifications
+
+
+
Implementing the nsIContentPolicy +
+
Uniform Resource Locators
+
Checking the White List
+
Creating nsIURI Objects
+
+
+
+ +

Building the WebLock UI

+ +
+
User Interface Package List
+
Client Code Overview
+
XUL +
+
The XUL Document
+
The Locking UI
+
Site Adding UI
+
weblock.xul
+
+
+
Overlaying New User Interface Into Mozilla +
+
webLockOverlay.xul
+
+
+
Other Resources +
+
weblock.css
+
Image Resources
+
+
+
+ +

Packaging WebLock

+ +
+
Component Installation Overview
+
Archiving Resources
+
The WebLock Installation Script
+
The WebLock Trigger Script
+
Distributing Your Component
+
+ +

Appendix A - Setting up the Gecko SDK

+ +
+
Downloading and Setting the SDK
+
Building a Microsoft Visual Cpp Project +
+
Creating a New Project
+
Adding the Gecko SDK to the Project Settings
+
+
+
Building a Windows Project
+
A Makefile for Unix
+
+ +

Appendix B - Resources

+ +
+
WebLock Resources
+
Gecko Resources
+
XPCOM Resources
+
General Development Resources
+
+ +

+

Suivant »

+

+

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 Open Publication License, 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.

+

+ +

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 +--- +

+

Suivant »

+

+ +

Cette section concerne Gecko et la création de composants XPCOM 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.

+ +

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.

+ +

Pour qui est ce tutoriel ?

+ +

La Création de composants XPCOM est destinée aux développeurs C ++. Bien que vous pouvez créer des composants XPCOM en JavaScript 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.

+ +

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.

+ +

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 ce que nous allons faire du didacticiel.

+ +
+

Malgré ce que dit le vieux document, XPCOM ne devrait pas être utilisé pour faire des plugins NPAPI scriptable. A partir de Gecko 1.7.5 (Firefox 1.0) une extension spéciale NPAPI pour scriptabilité est prise en charge, voir plugins Scripting.

+
+ +

Organisation du Tutoriel

+ +

La liste suivante donne un aperçu des étapes que nous allons suivre pour construire un composant XPCOM appelé WebLock, 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.

+ + + +

Continuons avec des exemples

+ +

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 SDK Gecko, qui est un ensemble de bibliothèques et d'outils qui comporte le framework XPCOM.

+ +

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 WebLock 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).

+ +

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, Configuration du SDK Gecko .

+ +

Conventions

+ +

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.

+ + + + + + + + + + + + + + + + + + + + + + + + +
FormatDescription
grasnoms des composants apparaissent en gras dans le texte
monospacelignes de code , noms d'interface et membres d'interfaces (par exemple, createInstance()) apparaissent avec cette police. Les lignes de code sont placées dans des encarts séparés. En outre, les noms de fichiers et de répertoires possèdent également cette police.
italiqueles variables 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.
lienRéférences à d'autres sections, figures ou tableaux et leur liens vers ces articles.
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 +--- +

+

« PrécédentSuivant »

+
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(WebLock) - est de regarder comment les clients utilisent déjà des composants XPCOM.

+ +

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 fait de composants XPCOM.

+ +

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.

+ +

Exemples de composants

+ +

Pour en savoir plus sur l'utilisation de composant particulier référez vous à API XPCOM référence . Pour l'instant, ili est important de comprendre comment un composant est  utilisé par le navigateur Mozilla.

+ +

Gestionnaire de Cookies

+ +

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. La boite de dialogue du gestionnaire de cookies montre interface utilisateur qui est présenté à l'utilisateur dans Mozilla pour l'utilisation du composant CookieManager.

+ +

Boite de dialogue du gestionnaire de cookies

+ +

Image:cookie_mgr_dlog.png

+ +

Cette boite de dialogue est écrit en XUL et en JavaScript, et utilise une partie de XPCOM appelé XPConnect pour se connecter de manière transparente au composant CookieManager (voir Connexion à des interfaces de composants ci-dessous). XUL expose les fonctionnalités du composant CookieManager, il est tres utilisé dans l'environement Mozilla.

+ +

La fonctionnalité du composant CookieManager est disponible à travers l'interface nsICookieManager, ses méthodes publiques sont exposées dans le tableau ci-dessous.

+ +

Interface nsICookieManager

+ + + + + + + + + + + + + + + + +
removeAllRetirez tous les cookies de la liste des cookies.
enumeratorÉnumérer la liste des cookies.
removeRetirer un cookie particulier de la liste.
+ +

Linterface XPCOM garanti la stabilitée, même si il y a des changements sous-jacentes. Les interfaces sont publics 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 Remove de nsICookieManager 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.

+ +

L'extrait Utiliser le composant CookieManager en JavaScript montre comment Remove() peut être appelé à partir de JavaScript:

+ +

Utiliser le composant CookieManager en JavaScript

+ +
// 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;
+}
+
+ +
+

Connexion à l'interface d'un composant

+ +
+

L'interface Mozilla utilise JavaScript pour accèder aux composants XPCOM par l'intermediaire de XPConnect.

+ +

XPConnect via XPIDL est appeler à partir d'objets JavaScript, qui représentent des instances de composants comme CookieManager.

+ +

XPConnect lie le code d'application de l'interface utilisateur du navigateur Mozilla(XUL basé sur Gecko), à l'environnement JavaScript(comme xpcshell)..

+
+ +

Les arrangements contractuels que permet XPCOM ouvre la voie à l'interopérabilité binaire, 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.

+ +

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 seulement à partir de JavaScript. C'est ce que nous allons faire dans ce tutoriel.

+
+ +
+

JavaScript et Mozilla

+ +
+

JavaScript est la lingua franca du navigateur Mozilla, et les liaisons entre elle et XPCOM sont forts et bien définie. scriptabilité , 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.

+
+ +

Le composant WebBrowserFind

+ +

Les composants sont utilisés partout - dans les fonctionnalités du navigateur de haut niveau tels que nsWebBrowserFind , qui fournit les méthodes find() et findNext() pour trouver du contenu dans les pages Web, et dans les tâches de bas niveau tels que la manipulation des données.

+ +

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 nsIWebBrowserFind est présentée dans L'interface nsIWebBrowserFind .

+
+ +

Les méthodes de nsIWebBrowserFind

+ + + + + + + + + + + + + + + + + + + + + + + + +
findNextTrouver la prochaine occurrence de la chaîne recherchée.
findBackwardsAttribut booléen qui ajuste findNext() pour rechercher vers le début du document.
searchFramesAttribut booléen qui indique si la recherche s'efectue dans les sous-fenêtres du document actuel.
matchCaseAttribut booléen qui indique la sensibilité à la casse.
entireWordAttribut booléen qui indique si le mot entier doit correspondre.
+ +

Quand vous utilisez l'interface d'un composant, vous pouvez demander si il suportr d'autres interfaces. Ce service, qui est défini dans nsISupports 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 runtime object typing. Il est géré par QueryInterface, qui a été introduit dans le chapitre Vue d'ensemble du XPCOM . L'API de référence XPCOM fournit une référence complète des composants XPCOM disponibles dans Mozilla.

+ +

The WebLock Component

+ +

Now it's time to look at the WebLock 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.

+ +

The IWebLock Interface

+ + + + + + + + + + + + + + + + + + + + + + + + +
lockLock the browser to the current site (or to the whitelist of approved sites read from disk).
unlockUnlock the browser for unrestricted use.
addSiteAdd a new site to the whitelist.
removeSiteRemove a given site from the whitelist.
sitesEnumerator for the list of approved sites read in from the whitelist.
+ +

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.

+ +

Component Use in Mozilla

+ +

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.

+ +

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:

+ +

Finding Mozilla Components

+ +

This book attempts to provide reference information for XPCOM components and their interfaces that are frozen as of the time of this writing. The Mozilla embedding project tracks the currently frozen interfaces.

+ +

Mozilla also has some tools that can find and display information about the interfaces available in Gecko such as the XPCOM Component Viewer, described below, and MXR, which is a web-based source code viewing tool.

+ +

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 @status frozen.

+ +
The XPCOM Component Viewer
+ +

The XPCOM Component Viewer is an add-on you can install in your browser (in sandbox, not available for now).
+ Alternatively, you can try XPCOMViewer, a similar add-on.

+ +

XPCOM Component Viewer

+ +

Image:using-component-viewer.png

+ +

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.

+ +

The XPCOM Component Viewer can be extremely useful for this sort of gross interrogation, but again: it displays all 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.

+ +

 

+ +

Using XPCOM Components in Your Cpp

+ +

XPConnect makes it easy to acecss XPCOM components as JavaScript objects, but using XPCOM components in C++ is not much more difficult.

+ +

Managing Cookies from Cpp duplicates code from Getting the CookieManager Component in JavaScript, but in C++ instead of JavaScript.

+ +

Managing Cookies from Cpp

+ +
nsCOMPtr<nsIServiceManager> servMan;
+nsresult rv = NS_GetServiceManager(getter_AddRefs(servMan));
+if (NS_FAILED(rv))
+  return -1;
+
+nsCOMPtr<nsICookieManager> cookieManager;
+rv = servMan->GetServiceByContractID("@mozilla.org/cookiemanager",
+                                     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);
+
+ +

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: http://lxr.mozilla.org/mozilla/source/netwerk/cookie/public/nsICookieManager.idl#64 This problem also appears in the JavaScript version below, and I've added |false| as a fourth parameter there as well.

+ +

If your application is written in C++, then Managing Cookies from Cpp 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.

+ +

XPConnect: Using XPCOM Components From Script

+ +

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 getService() method and used to provide the functionality that lets users load and remove cookies from the user interface.

+ +

Managing Cookies from JavaScript

+ +
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;
+}
+
+ +

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: http://lxr.mozilla.org/mozilla/source/netwerk/cookie/public/nsICookieManager.idl#64 This problem also appears in the C++ version above, and I've added |PR_FALSE| as a fourth parameter there as well.

+ +

Beyond the methods that are being called on the CookieManager itself (e.g., cookiemanager.remove, which maps to the remove() function in The nsICookieManager Interface), note the special XPConnect objects and methods that reflect the XPCOM component into JavaScript.

+ +

Components is the JavaScript object that controls the connection to components, and classes 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 Component 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:

+ +
var cmgr = Components.classes["@mozilla.org/cookiemanager;1"]
+                     .getService();
+
+ +

The resulting cookiemanager 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:

+ +
cmgr = Components.classes["@mozilla.org/cookiemanager;1"]
+                 .getService();
+cmgr = cmgr.QueryInterface(Components.interfaces.nsICookieManager);
+
+// delete all cookies
+function trashEm() {
+   cmgr.removeAll();
+}
+
+ +

Another vital feature of the XPConnect glue this example shows is the availability of the QueryInterface 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.

+ +
+

Services Versus Regular Instances

+ +

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 getService() method in the example here calls through to the createInstance() method that is also available from the Component object and caches the result, making it a singleton rather than a normal instance.

+ +

The singleton design pattern that is used to create services is described in XPCOM Services.

+
+ +

Remember, QueryInterface allows you to query an object for the interfaces it supports. In the case of the snippet in The nsICookieManager Interface, the QueryInterface method is being used to get the nsICookie interface from the enumerator so that, for instance, the JavaScript code can access the value and name attributes for each cookie.

+ +
    +
  1. Note : cookie-manager-ui
    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.
  2. +
  3. Note : private-xpcom-interfaces
    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.
  4. +
  5. Note : cookie-manager-in-tutorial
    The CookieManager component is used to persist for the web locking functionality described in this tutorial.
  6. +
+ +

+

« PrécédentSuivant »

+

+

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 Open Publication License, 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.

+

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 +--- +

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.

+

+
Compiler un composant XPCOM javascript
Créer des composants XPCOM
Ce guide a pour but de vous initier à Gecko, et de vous permettre de créer des composants XPCOM pour les applications Gecko.
+
+

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 +--- +

XPIDL est un langage de description d'interfaces utilisé pour spécifier les classes de l'interface XPCOM.

+

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é.

+

Un de ces outils est xpidl, utilisé pour générer des fichiers d'en-têtes C++, des informations typelib et plusieurs autres choses.

+

Écriture de fichiers interface XPIDL

+

XPIDL ressemble fortement à OMG IDL avec une syntaxe étendue pour traiter les IID et des types supplémentaires. Quelques exemples sont disponibles dans les répertoires xpcom/base et xpcom/ds des sources de Mozilla.

+ +

Ressources

+ 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 +--- +

{{ApiRef}}

+ +
+

Documentation déplacée dans la documentation de Firefox:
+ https://firefox-source-docs.mozilla.org/tools/sanitizer/asan_nightly.html

+
+ +

Le Projet Nightly ASan consiste à créer un navigateur Firefox Nightly incluant l'outil populaire AddressSanitizer et à l'améliorer avec des capacités de génération de rapports de plantage à distance pour toutes erreurs détectées.

+ +

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.

+ +

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 "Help" → "About Nightly" pour forcer une vérification de mise à jour ou confirmer que vous utilisez la dernière version).

+ +
+

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 aller ici à la place.

+
+ +

Exigences

+ +

Les exigences actuelles sont :

+ + + +

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.

+ +
+

Utilisateurs Windows : 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.

+
+ +
+

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  llvm-symbolizer livré est exécutable depuis le processus de Firefox.

+
+ +

Préférences

+ +

Si vous souhaitez que votre rapport d'accident soit identifiable, vous pouvez aller dans about:config et définir asanreporter.clientid avec votre adresse e-mail valide. 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.

+ +
+

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.

+
+ +

Programme de Bug Bounty

+ +

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 :

+ + + +

sont éligibles pour une prime de bogue selon les règles de notre programme de Bug Bounty. 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.

+ +
+

Si vous souhaitez participer au programme de récompense, assurez-vous de régler votre préférence asanreporter.clientid comme indiqué ci-dessus. Nous ne pouvons pas récompenser les rapports soumis sans adresse e-mail.

+
+ +

Problèmes connus

+ +

Cette section répertorie toutes les limitations actuellement connues des versions Nightly ASan considérées comme des bogues.

+ + + +

Notez que ces bogues sont specifiques à ASan Nightly comme indiqué dans la liste des dépendances de suivi de bogues. Pour la liste complète des bogues trouvés par ce projet, voir plutôt cette liste et notez que certains bogues peuvent ne pas être affichés parce qu'ils sont des bogues de sécurité.

+ +

Si vous rencontrez un bogue qui ne figure pas dans cette liste, veuillez déposer un bogue sur bugzilla.mozilla.org ou envoyer un courriel à choller@mozilla.com. 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 bug 1386297.

+ +

FAQ

+ +

Quelles sont les données supplémentaires collectées ?

+ +

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.

+ +
+

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 en plus de ce que le navigateur Nightly normal peut collecter.

+
+ +

Quel est l'impact sur les performances ?

+ +

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.

+ +
+

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.

+
+ +

Et la stabilité ?

+ +

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.

+ +

Comment puis-je confirmer que j'utilise la bonne version ?

+ +

Si vous ouvrez about:support et tapez "asanreporter" dans le champ de recherche, vous devriez voir une entrée appelée asanreporter.apiurl associée à une URL. Ne modifiez pas cette valeur.

+ +
+

Depuis Firefox 64, la fonctionnalité "ASan Crash Reporter"  n'est plus listée dans le répertoire about:support

+
+ +

Y aura-t-il prise en charge de macOS ?

+ +

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 à me contacter.

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 +--- +

Déplacé dans la documentation de Firefox: https://firefox-source-docs.mozilla.org/tools/sanitizer/asan.html

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 +--- +

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.

+ +

{{LandingPageListSubpages}}

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 +--- +
+

Brouillon
+ Cette page n'est pas complète

+
+ +
+

Ce contenu couvre les fonctionnalités introduites dans Thunderbird 3

+
+ +

Cet article fournit des exemples d'accès et de manipulation des comptes Thunderbird. Les interfaces de compte fournissent une vue d'ensemble des interfaces associées. Voir Présention des composants Thunderbird pour une description générale de l'interface utilisateur de Thunderbird et des interfaces de programmation associées.

+ +

Itérer sur tous les comptes connus

+ +
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
+  }
+}
+
+ +

Introspectez les détails de certains comptes (noms, paramètres, etc.)

+ +
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
+}
+
+ +

Parcourir les dossiers d'un compte

+ +
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);
+    }
+  }
+}
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 +--- +

Autheur: Ben Bucksch
+ Veuillez ne pas modifier ce document sans consulter l'auteur

+ +

Traduction Française par Kimpe Andy association heberge-kimpe

+ +

l'association heberge-kimpe et une association qui s'engage dans l'open source.

+ +

C'est la raison de le traduction de ce document très pratique pour les webmaster

+ +

Si vous utilisez zpanel sur votre serveur voici comment mettre en place automatiquement l'autoconfiguration de thunderbrid

+ +

 

+ +

attention le lien ci dessous ne fonctionne plus.

+ +

car le site de la comunauté française de zpanel a fermer c'est porte (merci yousse)

+ +

je ferais a nouveau ce tutoriel (avec une mise à jours a sentora) des que j'aurais plus de temp libre.

+ +

merci de votre compréhention

+ +

cordialement andy

+ +

http://www.zpanel-fr.com/forum/10-infos-importantes-mise-a-jour/115-tuto-perssonalisez-les-dns-par-defaut

+ +

 

+ +

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.

+ +

voir aussi:

+ + + +

Ce document décrit comment la configuration automatique dans Thunderbird fonctionne et ce qu'il faut faire pour permettre aux serveurs de messagerie d'être configurées automatiquement.

+ +

Mécanismes

+ +

Thunderbird obtient les paramètres de serveur par l'intermédiaire de divers moyens, dont chacun est prévu pour un cas de figure particulier :

+ + + +

Tous les mécanismes lookup utilisent le domaine de l'adresse e-mail en tant que base pour la recherche. Par exemple, pour l'adresse email fred@example.com, la recherche est effectuée comme (dans cet ordre):

+ +
    +
  1. tb-install-dir/isp/example.com.xml sur le disque dur
  2. +
  3. vérifier autoconfig.example.com
  4. +
  5. rechercher des "example.com" dans le ISPDB
  6. +
  7. rechercher "MX example.com" dans le DNS, et pour mx1.mail.hoster.com, consultez la rubrique "hoster.com" dans le ISPDB
  8. +
  9. essayer de deviner (imap.example.com, smtp.example.com etc)
  10. +
+ +

Nous pouvons à l'avenir ajouter des enregistrements DNS SRV en tant que mécanisme pris en charge à l'avenir, mais nous n'avons actuellement pas.

+ +

Comment ajouter le support pour votre nom de domaine

+ +

Classification

+ +

Si vous êtes un grand fournisseur de services Internet (> 100.000 utilisateurs) fournir des adresses email uniquement sous quelques domaines tels que "example.com" et "example.de", vous pouvez soit envoyer la configuration à la ISPDB ou mettre en place un serveur de configuration.
+
+ Si vous soutenez alias de messagerie et le nom de connexion de l'utilisateur ne fait pas partie de l'adresse de courrier électronique (par exemple, les utilisateurs peuvent avoir "hero@example.com" comme adresse e-mail, mais le nom de connexion IMAP / POP / SMTP n'est ni «héros» ni "hero@example.com", mais "u67578"), vous devez configurer un serveur de configuration, qui fait l'adresse mail -> nom de connexion lookup.
+
+ Si vous hébergez domaines clients, c'est à dire que vous êtes "hoster.com», mais vos clients ont "fred@flintstone.com" et "louis@kent.com" comme des domaines, avec seulement quelques utilisateurs par domaine, vous devez configurer un serveur de configuration (ou s'appuyer sur DNS MX).
+
+ Si vous êtes une petite entreprise d'installer Thunderbird sur les postes de travail de vos employés, vous pouvez placer un fichier de configuration dans le dossier d'installation de Thunderbird.

+ +

ISPDB

+ +

L'URL de base de données est <https://live.mozillamessaging.com/autoconfig/v1.1/>, append nom de domaine, par exemple. <https://live.mozillamessaging.com/autoconfig/v1.1/freenet.de>.
+
+ Le processus actuel: Remplissez un bug dans Bugzilla, Produit "Outils web", "composants ISPDB Base de données d'entrées», avec un fichier de configuration qui correspond aux exigences décrites ci-dessous. Demander une révision de bwinton, gozer ou ben.bucksch.
+
+ Future: ajouter la configuration à l' ISPDB server app.

+ +

 

+ +

je finirait la traduction demain merci de votre compréhention

+ +

Configuration du serveur avec ISP

+ +

Given the email address "fred@example.com", Thunderbird first checks <http://autoconfig.example.com/mail/config-v1.1.xml?emailaddress=fred@example.com> and then <http://example.com/.well-known/autoconfig/mail/config-v1.1.xml>.

+ +

Small company

+ +

If you are a small company, you can put the XML configuration file on your web server, at URL <http://example.com/.well-known/autoconfig/mail/config-v1.1.xml>. (This is not yet finalized and subject to change.)

+ +

Domain hoster

+ +

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.

+ +

DNS

+ +

For each customer domain, you add a DNS record (in addition to the existing MX, A www etc. DNS records):
+ autoconfig IN A 10.2.3.4
+ or
+ autoconfig IN CNAME autoconfig.hoster.com.
+ ... where 10.2.3.4 and autoconfig.hoster.com are IP addresses / hostnames you own.
+ This allows Thunderbird to find you as hoster.

+ +

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.

+ +

Example: example.com A 10.2.3.4

+ +

Web server

+ +

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.
+
+ 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)

+ +
<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>
+ +

Place the configuration file at the URL /mail/config-v1.1.xml on that host.

+ +

All config files must be served as Content-Type: text/xml (or application/xml), otherwise the file will be ignored. Also, they must use charset UTF-8 (esp. if there are any non-ASCII-characters).

+ +

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.
+ You can add a Rewriterule in the default virtual host (on debian /etc/apache2/sites-enabled/000-default)  to match all autoconfig.* subdomains:

+ +
<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>
+
+ +

 

+ +

 

+ +

Configuration file

+ +

This is described at How to create a configuration file and defined on the sub-pages.

+ +

{{ languages( { "ja": "ja/Thunderbird/Autoconfiguration" } ) }}

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 +--- +

Thunderbird est l'application de mail/messagerie de Mozilla. Ces pages documentent Thunderbird et fournissent également des liens vers la documentation sur le backend MailNews qui est également utilisé dans d'autres projets tels que Eudora/Penelope, Seamonkey, Correo, etc.

+ +

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 Mozilla Messaging, une filiale appartenant à Mozilla.)

+ + + + + + + + +
+

Documentation

+ +
+
Construire Thunderbird
+
Informations sur la construction de Thunderbird avec le référentiel comm-central. Il y a aussi des informations sur le fonctionnement de comm-central, comment le processus de révision fonctionne et comment utiliser le serveur de symboles Mozilla pour aider au débogage.
+
Protocoles MailNews
+
Documentation approximative sur les protocoles de messagerie..
+
Vues de la base de données
+
Information de backend sur {{ Interface("nsIMsgDBView") }} et les interfaces associées..
+
Documentation de l'API Thunderbird
+
Documentation de l'API Thunderbird
+
Documentation d'extension
+
Tutoriels et astuces pour créer des extensions Thunderbird
+
Test automatisé
+
Détails des installations de test automatisées de Thunderbird
+
Thunderbird dans l'entreprise
+
Aide au déploiement de Thunderbird dans les grandes organisations
+
+ +

Voir tout...

+
+

Communauté

+ + + +

Outils

+ + + + + + +
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 +--- +

{{Index("/fr/docs/Mozilla/Thunderbird")}}

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 +--- +

Si vous envoyez un rapport de plantage sur le Bugzilla vous devriez joindre la trace d'appels (en anglais stacktrace). 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 Breakpad, 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.

+ +

Conditions nécessaires

+ +

Vous avez besoin d'une version de Firefox téléchargée sur Mozilla.org. SeaMonkey et Thunderbird comportent également une assistance au rapport de plantage.

+ +

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 méthodes alternatives exposées ci-dessous.

+ +
Remarque : lorsqu'on traite un rapport de plantage, il est important se savoir si le plantage s'est produit avec Firefox en mode sans échec. C'est ce qui aide les ingénieurs à déterminer si une extension quelconque ou un plugin particulier est à l'origine du problème.
+ +

Trouver l'identifiant de plantage avec le rapporteur de plantage de Mozilla

+ + + + + + + + +
+

1. Le plantage et l'envoi d'un rapport au système.

+ +

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 « Informer Firefox de ce problème pour qu’il puisse être corrigé » et cliquez sur le bouton de redémarrage. Le rapporteur de plantage devrait alors soumettre le rapport de plantage, puis Firefox va s'ouvrir à nouveau.

+ +
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.
+
+

reporter.jpg

+
+ + + + + + + + +
+

2. Communiquez-nous l'identifiant du rapport que vous avez soumis.

+ +

Pour accéder à tous vos rapports de bug, saisissez "about:crashes" dans la barre d'adresse de Firefox 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.

+ +
You can prefix a "bp-" to the beginning of an ID to make Bugzilla turn it into a link: bp-a70759c6-1295-4160-aa30-bc4772090918
+
+

crashlist.jpg

+
+ +

Trouver l'identifiant d'un plantage au démarrage

+ +

Si Firefox tombe en panne au démarrage, vous pouvez toujours accéder à vos rapports d'incident soumis. Les rapports Crash sont accessibles depuis tous les profils de Firefox, new profile ne se bloque pas, vous pouvez l'utiliser pour y accéder par "about: crashes" as above.

+ +

Accès aux ID de rapport d'incident en dehors de Firefox

+ +

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:

+ +

Windows : %APPDATA%\Mozilla\Firefox\Crash Reports\submitted\
+ OS X : ~/Library/Application Support/Firefox/Crash Reports/submitted/
+ Linux : ~/.mozilla/firefox/Crash Reports/submitted/

+ +

Chaque fichier de ce dossier contient un ID de rapport d'incident envoyé. 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.

+ +

D'autres moyens de trouver la trace d'appels

+ +

Si le journal de crash Mozilla ne s'affiche pas ou n'est pas disponible, vous devrez obtenir manuellement une trace de pile:

+ +

Windows

+ +

Voir l'article Create a stacktrace with Windbg pour plus d'information à ce propos.

+ +

For a full process dump, see How to get a process dump with Windows Task Manager [en-US]

+ +

OS X

+ +

Exécuter /Applications/Utilities/Console.app.  Ouvrir "~/Library/Logs" et "CrashReporter", et rechercher les logs pour "firefox-bin".

+ +

Linux

+ +

Note that for most distros the package you need to get symbols for will be something like "xulrunner", not "firefox".

+ +

Les fichiers de rapports de plantage dans votre ordinateur

+ +

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».
+
+ 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 Serveur de rapports a enregistré le crash sous. Si vous voulez que Breakpad quitte les fichiers .dump et .extra sur votre ordinateur pour pouvoir les examiner localement,
MOZ_CRASHREPORTER_NO_DELETE_DUMP variable d'environnement à 1.

+ + 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 +--- +

+Cet article décrit la manière de travailler avec des fenêtres multiples dans le code chrome de Mozilla (applications XUL et extensions). 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. +

+

Ouverture de fenêtres

+

Pour ouvrir une nouvelle fenêtre, on utilise habituellement un appel DOM window.open ou window.openDialog, comme ceci : +

+
var win = window.open("chrome://myextension/content/about.xul",
+                      "aproposDeMonExtension", "chrome,centerscreen");
+
+

Le premier paramètre de window.open est l'URI du fichier XUL décrivant la fenêtre et son contenu. +

Le second paramètre est le nom de la fenêtre ; il peut être utilisé par des liens ou formulaires dans leur attribut target. Il est différent du titre de la fenêtre tel que vu par l'utilisateur, qui est spécifié en XUL. +

Le troisième paramètre, facultatif, est une liste de fonctionnalités spéciales que la fenêtre doit avoir. +

La fonction window.openDialog 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é dialog est spécifiée. +

Si l'objet window 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 nsIWindowWatcher. Ses paramètres sont similaires à ceux de window.open, en fait l'implémentation de window.open appelle les méthodes de nsIWindowWatcher. +

+
var ww = Components.classes["@mozilla.org/embedcomp/window-watcher;1"]
+                   .getService(Components.interfaces.nsIWindowWatcher);
+var win = ww.openWindow(null, "chrome://myextension/content/about.xul",
+                        "aboutMyExtension", "chrome,centerscreen", null);
+
+

L'objet window

+

Notez la variable win dans la section ci-dessus, à laquelle est assignée la valeur de retour de window.open. Elle peut être utilisée pour accéder à la fenêtre ouverte. La valeur renvoyée par window.open (et les méthodes similaires) est un objet Window (habituellement ChromeWindow), du même type que la variable window. +

Du point de vue technique, elle implémente un certain nombre d'interfaces, dont nsIDOMJSWindow et nsIDOMWindowInternal, 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 win.document. +

Notez cependant que le retour de l'appel à open() se fait avant que la fenêtre ne soit totalement chargée, donc certains appels comme win.document.getElementById() ne fonctionneront pas. Pour contourner cette difficulté, vous pouvez déplacer le code d'initialisation vers un gestionnaire load de la fenêtre ouverte, ou passer une fonction de callback comme décrit ci-dessous. +

Vous pouvez obtenir un objet Window depuis un document à l'aide de document.defaultView. +

+

Fenêtres de contenu

+

Lorsqu'une fenêtre XUL contient un élément d'interface capable d'afficher une page, comme <browser> ou <iframe>, 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 Window pour chaque sous-document, bien qu'il n'y ait pas de fenêtre dans le sens commun pour le sous-document. +

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. +

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. +

+

Accès aux documents contenus

+

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 browser.contentDocument pour accéder à ce document et browser.contentWindow pour accéder à l'objet Window de ce document.

Il est nécessaire de prendre en compte la fonctionnalité XPCNativeWrapper si l'on n'opère pas dans du contenu de confiance. +

Dans le cas de <browser type="content-primary"/>, vous pouvez utiliser la propriété raccourcie content pour accéder à l'objet Window du document contenu. Par exemple : +

+
// affiche le titre du document affiché dans l'élément de contenu principal
+alert(content.document.title);
+
+

Par exemple, vous pouvez utiliser content.document dans un overlay à browser.xul pour accéder à la page Web dans l'onglet sélectionné. +

+
Certains exemples utilisent _content au lieu de content. La première forme est déconseillée depuis longtemps, et vous devriez utiliser content dans tout nouveau code.
+

Accès à un document dans un panneau latéral

+

Firefox permet d'accéder à un panneau latéral, qui est implémenté comme un élément <browser> avec id="sidebar". Pour accéder aux éléments et variables à l'intérieur du panneau, il est nécessaire d'utilier document.getElementById("sidebar").contentDocument ou .contentWindow, comme pour l'{{ Anch("Accès aux documents contenus") }}. +

+

Accès aux éléments du document de la fenêtre principale depuis une fenêtre fille

+

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>. +

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. +

L'arbre DOM, tel qu'il apparaît dans l'Inspecteur DOM, peut ressembler à ceci : +

+
#document
+  window                 main-window
+    ...
+      browser
+        #document
+          window         myExtensionWindow
+
+

où la fenêtre fille est celle où se trouve votre code. +

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 : +

+
var mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
+                   .getInterface(Components.interfaces.nsIWebNavigation)
+                   .QueryInterface(Components.interfaces.nsIDocShellTreeItem)
+                   .rootTreeItem
+                   .QueryInterface(Components.interfaces.nsIInterfaceRequestor)
+                   .getInterface(Components.interfaces.nsIDOMWindow)
+
+

Ceci permet de passer les limites du contenu chrome, et renvoie l'objet de la fenêtre principale. +

+

Recherche de fenêtres déjà ouvertes

+

Le composant XPCOM window mediator (interface nsIWindowMediator) 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 : getMostRecentWindow et getEnumerator. Consultez la page nsIWindowMediator pour plus d'informations sur nsIWindowMediator. +=== Example: Opening a window only if it's not opened already === XXX TBD +

+

Transfert de données entre fenêtres

+

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.

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. +

+

Exemple 1 : Passage de données à une fenêtre à son ouverture avec openDialog

+

Lorsque vous ouvrez une fenêtre à l'aide de window.openDialog ou nsIWindowWatcher.openWindow, vous pouvez fournir un nombre d'arguments arbitraires à cette fenêtre. Les arguments sont des objets JavaScript simples, accessibles au travers de la propriété window.arguments dans la fenêtre ouverte. +

Dans cet exemple, on utilise window.openDialog 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 nsIWindowWatcher.openWindow est un peu moins trivial .) +

Code d'ouverture : +

+
window.openDialog("chrome://test/content/progress.xul",
+                  "myProgress", "chrome,centerscreen",
+                  {status: "Lecture des données distantes", maxProgress: 50, progress: 10} );
+
+

progress.xul: +

+
<?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>
+
+

Exemple 2 : Interaction avec la fenêtre ouvrante

+

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é window.opener ou via une fonction de callback passée à la fenêtre, de la façon décrite dans la section précédente. +

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. +

+ +
<button label="Annuler" oncommand="opener.cancelOperation(); close();"/>
+
+ +
function onCancel() {
+  alert("Opération annulée.");
+}
+
+...
+
+window.openDialog("chrome://test/content/progress.xul",
+                  "myProgress", "chrome,centerscreen",
+                  {status: "Lecture des données distantes", maxProgress: 50, progress: 10},
+                  onCancel);
+
+

Le dialogue de progression peut alors exécuter le callback de cette façon : +

+
<button label="Cancel" oncommand="window.arguments[1](); close();"/>
+
+

Exemple 3 : Utilisation de nsIWindowMediator lorsque opener ne suffit pas

+

La propriété window.opener 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 nsIWindowMediator dont il est fait état plus haut. +

Une situation dans laquelle nsIWindowMediator 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 browser.xul 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. +

Cela signifie que la valeur de window.opener 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é location de l'opener et utiliser opener.opener dans le cas de la fenêtre du gestionnaire d'extensions, mais une meilleure manière de faire est d'utiliser nsIWindowMediator : +

+
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|
+
+

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 observateurs de préférences. +

+

Partage de données avancé

+

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. +

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. +

+

Utilisation d'un composant singleton XPCOM

+

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 à getService : +

+
Components.classes["@domain.org/mycomponent;1"].getService();
+
+ +

Plusieurs articles et livres sur la création de composants XPCOM existent en ligne. +

+

Stockage de données partagées dans les préférences

+

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 service de préférences dans de tels cas. +

+ +

Consultez Extraits de code:Préférences pour une description détaillée du système de préférences et des exemples de code. +

Exemple : +

+
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
+
+

L'astuce de la fenêtre cachée

+

Certains auteurs d'extensions utilisent la fenêtre cachée spéciale (hidden window) 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 chrome://browser/content/hiddenWindow.xul sous Mac OS X où il est utilisé pour implémenter les menus et resource://gre/res/hiddenWindow.html 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) }}). +

Une référence à la fenêtre cachée peut être obtenue depuis l'interface nsIAppShellService. Comme tout objet DOM, elle vous permet de définir des propriétés personnalisées : +

+
var hiddenWindow = Components.classes["@mozilla.org/appshell/appShellService;1"]
+         .getService(Components.interfaces.nsIAppShellService)
+         .hiddenDOMWindow;
+hiddenWindow.myExtensionStatus = "ready";
+
+

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 window comme XMLHttpRequest, 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: +

+
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("chrome://my-extension/content/globalObject.js");
+hiddenWnd.myExtensionObject.doSomething();
+
+

globalObject.js contient quelque chose comme : +

+
var myExtensionObject = {
+  doSomething: function() {
+    return new XMLHttpRequest();
+  }
+}
+
+ +

Voir aussi

+

Extraits de code:Dialogues et invites +


+

+
+
+{{ 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" } ) }}
-- cgit v1.2.3-54-g00ecf