Firefox 4 pour les développeurs

  • Raccourci de la révision : Mozilla/Firefox/Versions/4
  • Titre de la révision : Firefox 4 pour les développeurs
  • ID de la révision : 383887
  • Créé :
  • Créateur : FredB
  • Version actuelle ? Non
  • Commentaire Moved From Firefox_4_for_developers to Mozilla/Firefox/Versions/4

Contenu de la révision

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 {{HTMLElement("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 : {{HTMLElement("article")}}, {{HTMLElement("section")}}, {{HTMLElement("nav")}}, {{HTMLElement("aside")}}, {{HTMLElement("hgroup")}}, {{HTMLElement("header")}} et {{HTMLElement("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 : {{HTMLElement("mark")}}, {{HTMLElement("figure")}}, et {{HTMLElement("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 {{domxref("CanvasRenderingContext2D")}} pour permettre à l'implémentation de {{HTMLElement("canvas")}} d'être en conformité avec la spécification :

  • La spécification d'un rayon négatif lors de l'appel d'arc() lance désormais correctement l'exception INDEX_SIZE_ERR.
  • La spécification de valeurs non finies lors de l'appel de createLinearGradient() et createRadialGradient() lance désormais NOT_SUPPORTED_ERR au lieu de SYNTAX_ERR.
  • Le réglage de miterLimit pour une valeur négative ne lance plus une exception, mais ignore plutôt les valeurs non-positives.
  • Le réglage de lineWidth pour une valeur négative ne lance plus une exception, mais ignore plutôt les valeurs non-positives.
  • La méthode putImageData() supporte désormais les paramètres optionnels dirtyX, dirtyY, dirtyWidth et dirtyHeight.

Autres changements HTML

  • L'élément {{HTMLElement("textarea")}} est maintenant redimensionnable par défaut ; pour le désactiver, vous pouvez utiliser la propriété CSS {{cssxref("resize")}}.
  • canvas.getContext et canvas.toDataURL ne lancent plus d'exceptions lorsqu'ils sont appelés avec des arguments non reconnus.
  • L'élément {{HTMLElement("canvas")}} supporte maintenant la méthode spécifique à Mozilla, mozGetAsFile(), qui permet d'obtenir un fichier basé sur l'image d'un contenu canvas. Voir {{domxref("HTMLCanvasElement")}} pour les détails.
  • canvas2dcontext.lineCap et canvas2dcontext.lineJoin ne lancent plus d'exceptions lorsqu'ils sont réglés avec une valeur non reconnue.
  • canvas2dcontext.globalCompositeOperation ne lance plus d'exception lorsqu'il est réglé avec une valeur non reconnue et ne supporte plus la valeur darker, qui n'est pas un standard.
  • Le support de l'élément obsolète {{HTMLElement("spacer")}}, était absent de tous les autres navigateurs, a été enlevé.
  • L'élément {{HTMLElement("isindex")}}, qui était crée par {{domxref("document.createElement()")}}, est maintenant crée comme un simple élément sans propriétés ou méthodes.
  • Gecko supporte maintenant l'appel click() sur l'élément {{HTMLElement("input")}} pour ouvrir le sélecteur de fichiers. Voir l'exemple dans l'article Using files from web applications.
  • L'élément {{HTMLElement("input")}} supporte un nouvel attribut mozactionhint, qui permet de spécifier l'étiquette de la touche Entrée sur un clavier virtuel.
  • L'élément {{HTMLElement("script")}} à l'intérieur des éléments {{HTMLElement("iframe")}}, {{HTMLElement("noembed")}} et {{HTMLElement("noframes")}} sont maintenant exécutés, contrairement aux versions précédentes de Firefox. Ceci est conforme à la spécification et correspond au comportement des autres navigateurs.

CSS

Transitions CSS
Le support des transitions CSS est disponible dans Firefox 4.
Les valeurs calculées en CSS
Le support de {{cssxref("-moz-calc")}} a été ajouté. Cela permet de spécifier des valeurs de {{xref_csslength()}} comme des expressions mathématiques.
Groupement de sélecteurs
Le support de {{cssxref(":-moz-any")}} pour grouper les sélecteurs et factoriser des combinateurs.
Support subrectangle pour background-image
La propriété {{cssxref("-moz-image-rect")}} permet d'utiliser des subrectangles en tant que {{cssxref("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 {{cssxref("-moz-element")}} et la fonction DOM {{domxref("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
{{cssxref("-moz-font-feature-settings")}} Permet de personnaliser les fonctionnalités avancées des polices OpenType.
{{cssxref("-moz-tab-size")}} Spécifie la largeur d'un espace de tabulation (U+0009) lors du rendu du texte.
{{cssxref("resize")}} Permet de modifier les dimensions d'un élément.

Nouvelles pseudo-classes CSS

Pseudo-class Description
{{cssxref(":-moz-handler-crashed")}} Utilisé pour le style d'un élément dont le plugin a planté.
{{cssxref(":-moz-placeholder")}} Appliquée à l'espace texte réservé dans les champs des formulaires.
{{cssxref(":-moz-submit-invalid")}} Appliquée au bouton d'envoi des formulaires quand un ou plusieurs des champs ne sont pas valides.
{{cssxref(":-moz-window-inactive")}} Appliquée aux éléments d'une fenêtre inactive.
{{cssxref(":invalid")}} Automatiquement appliquée aux champs {{HTMLElement("input")}} dont le contenu est invalide.
{{cssxref(":optional")}} Automatiquement appliquée aux champs {{HTMLElement("input")}} qui ne spécifient pas l'attribut required.
{{cssxref(":required")}} Automatiquement appliquée aux champs {{HTMLElement("input")}} qui spécifient l'attribut required.
{{cssxref(":valid")}} Automatiquement appliquée aux champs {{HTMLElement("input")}} dont le contenu a été validé avec succès.

Nouveaux pseudo-selectors CSS

Pseudo-selector Description
{{cssxref(":-moz-focusring")}} Permet de spécifier l'apparence d'un élément lorsque Gecko estime que l'on doit se fixer dessus.

Nouvelles fonctions CSS

Fonction Description
{{cssxref(":-moz-any")}} Permet de grouper les sélecteurs et de factoriser les combinateurs.
{{cssxref("-moz-calc")}} Permet de spécifier des valeurs de {{template.Xref_csslength()}} comme des expressions mathématiques.
{{cssxref("-moz-element")}} Permet d'utiliser un élément arbritaire de fond pour {{cssxref("background-image")}} and {{cssxref("background")}}.
{{cssxref("-moz-image-rect")}} Permet d'utiliser un subrectangle d'une image comme {{cssxref("background-image")}} or {{cssxref("background")}}.

Propriétés CSS renommées

Ancien nom Nouveau nom Notes
-moz-background-size {{cssxref("background-size")}} Le nom -moz-background-size n'est plus supporté.
-moz-border-radius {{cssxref("border-radius")}} L'ancien nom est encore pris en charge pour une durée limitée, le temps de mettre vos sites à jour. Le changement du rendu a été fait pour correspondre à la dernière version de la spécification.
-moz-box-shadow {{cssxref("box-shadow")}}  

Divers changements CSS

  • La propriété {{cssxref("text-shadow")}} plafonne désormais son rayon de flou à 300px, pour des raisons de bon sens et de performances.
  • La propriété {{cssxref("overflow")}} ne s'applique plus au groupe d'éléments de tableaux (<thead>, <tbody>, and <tfoot>).
  • La propriété {{cssxref("-moz-appearance")}} supporte désormais la valeur -moz-win-borderless-glass, qui s'applique à un élément Aero sans bordure.
  • La fonctionnalité de média -moz-device-pixel-ratio a été ajoutée, permettant l'utilisation de pixels de l'appareil par ratio de pixels CSS qui sera utilisé dans les Media Queries.
  • La manipulation des unités CSS dans Gecko a été révisé pour mieux correspondre à d'autres navigateurs, et plus précisément de traduire dans des longueurs absolues le nombre de pixels à l'écran basé sur le dispositif de la DPI.

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 {{htmlelement("img")}}, ainsi qu'avec CSS {{cssxref("background-image")}}.
Attribut Media buffered
L'attribut buffered sur les éléments {{HTMLElement("video")}} and {{HTMLElement("audio")}} est maintenant supporté, vous permettant de déterminer quel fichier multimédia a été tamponné. L'interface DOM {{domxref("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 {{HTMLElement("video")}} et {{HTMLElement("audio")}} ainsi que l'interface {{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 {{SVGElement("text")}} et {{SVGElement("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 {{domxref("Range")}} a désormais les méthodes {{domxref("range.getClientRects()")}} et {{domxref("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 {{domxref("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 {{domxref("window.mozRequestAnimationFrame()")}} et de la propriété {{domxref("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.6 Interface dans Firefox 4 Elements HTML
HTMLSpanElement HTMLElement {{HTMLElement("abbr")}}, {{HTMLElement("acronym")}}, {{HTMLElement("address")}}, {{HTMLElement("b")}}, {{HTMLElement("bdo")}}, {{HTMLElement("big")}}, {{HTMLElement("blink")}}, {{HTMLElement("center")}}, {{HTMLElement("cite")}}, {{HTMLElement("code")}}, {{HTMLElement("dd")}}, {{HTMLElement("dfn")}}, {{HTMLElement("dt")}}, {{HTMLElement("em")}}, {{HTMLElement("i")}}, {{HTMLElement("kbd")}}, {{HTMLElement("listing")}}, {{HTMLElement("nobr")}}, {{HTMLElement("plaintext")}}, {{HTMLElement("s")}}, {{HTMLElement("samp")}}, {{HTMLElement("small")}}, {{HTMLElement("strike")}}, {{HTMLElement("strong")}}, {{HTMLElement("sub")}}, {{HTMLElement("sup")}}, , {{HTMLElement("tt")}}, {{HTMLElement("u")}}, {{HTMLElement("var")}}, {{HTMLElement("xmp")}}
HTMLDivElement HTMLElement {{HTMLElement("noembed")}}, {{HTMLElement("noframes")}}, {{HTMLElement("noscript")}}
HTMLWBRElement HTMLElement {{HTMLElement("wbr")}}

Divers changements DOM

  • L'enveloppement d'un élément {{HTMLElement("textarea")}} peut maintenant être commandé via l'attribut DOM wrap. {{bug(41464)}}
  • Les éléments {{HTMLElement("script")}} crées avec {{domxref("document.createElement()")}} et insérés dans un document, se comportent désormais conformément à la spécification HTML5. Les scripts avec l'attribut src s'exécute dès que possible (sasn maintenir la commande) et les scripts sans l'attribut src s'exécute de manière simultanée. Pour faire des scripts d'insertion de scripts qui ont l'attribut src qui exécute l'ensemble dans l'ordre d'insertion, pour eux .async=false.
  • Les objets DOM {{domxref("file")}} proposent désormais la propriété url.
  • Support de FormData pour XMLHttpRequest.
  • La propriété {{domxref("element.isContentEditable")}} a été implémentée.
  • La propriété {{domxref("document.currentScript")}} vous permet de déterminer quel script de l'élément {{HTMLElement("script")}} est en cours d'exécution. les nouveaux évènements {{domxref("element.onbeforescriptexecute")}} et {{domxref("element.onafterscriptexecute")}} sont déclenchés avant et après l'éxécution d'un élément script.
  • Ajout de la propriété mozSourceNode à l'objet DragTransfer.
  • Ajout de la méthode selection.modify() à l'objet {{domxref("Selection")}}, ce qui vous permet de facilement modifier la sélection de texte courant ou la position du curseur dans une fenêtre de navigateur.
  • Le support de l'objet window.directories et de la fonctionnalité directories pour {{domxref("window.open")}}, qui ne sont plus supportés dans les autres navigateurs, ont été enlevés. Utiliser personalbar à la place. {{Bug(474058)}}
  • La propriété {{domxref("event.mozInputSource")}} a été ajoutée à l'interface utilisateur des évènements DOM, cette propriété non-standard vous permet de déterminer le type de l'appareil qui a généré un évènement.
  • L'évènement {{domxref("document.onreadystatechange")}} a été implémenté.
  • La méthode {{domxref("document.createElement")}} n'accepte plus < et > autour du nom de balise en mode quirks.
  • Les méthodes {{domxref("element.setCapture()")}} et {{domxref("document.releaseCapture()")}} ont été ajoutées, permettant à des éléments de poursuivre des évènements de la souris, même lorsqu'elle est en dehors de leur zone de suivi normal après que l'évènement mousedown soit survenu.
  • La propriété {{domxref("window.mozPaintCount")}} a été ajoutée, elle vous permet de déterminer le nombre de fois q'un document a été peint. Cela est particulièrement utile lors des tests de performance de votre application web.
  • Le signe de la langue a été supprimé de {{domxref("window.navigator.appVersion")}} et {{domxref("window.navigator.userAgent")}}. Utilisez {{domxref("window.navigator.language")}} ou l'en-tête Accept-Language à la place. {{Bug(572656)}}
  • L'objet XMLHttpRequest expose maintenant la réponse comme un tableau JavaScript typé et aussi comme une chaîne, en utilisant la propriété, spécifique de Gecko, mozResponseArrayBuffer.
  • Mouse events inclut maintenant une propriété mozPressure indiquant le niveau de pression supporté sur les périphériques d'entrée sensibles à la pression.
  • Les méthodes {{domxref("window.URL.createObjectURL()")}} et {{domxref("window.URL.revokeObjectURL()")}} vous permettent de créer des URLs d'objet qui renvoient à des fichiers locaux.
  • La méthode {{domxref("DOMImplementation.createHTMLDocument()")}} vous permet de créer un nouveau document HTML.
  • {{domxref("Node.mozMatchesSelector()")}} retourne maintenant l'exception SYNTAX_ERRsi la chaîne de sélection spécifiée est invalide, au lieu de retourner false.
  • Vous pouvez maintenant définir les valeurs des propriétés d'un élement SVG en utilisant une syntaxe abrégée même avec CSS. Par exemple : element.style.fill = 'lime'. Voir {{domxref("element.style")}} pour plus de détails.
  • Le document racine a maintenant un attribut privatebrowsingmode qui décrit l'état du mode de navigation privée, en indiquant notamment si la session de navigation privée est temporaire ou permanente.
  • Le second paramètre de la méthode {{domxref("window.getComputedStyle()")}} est maintenant optionnel, car elle l'est dans tous les autres navigateurs.
  • L'objet DOM StorageEvent est maintenant conforme à la dernière version de la spécification.
  • Le délais minimum autorisé pour la méthode {{domxref("window.setTimeout()")}} est maintenant la préférence dom.min_timeout_value.
  • L'évènement MozAfterPaint n'est plus envoyé par défaut, en raison d'un potentiel problème de sécurité. Il peut être réactivé en définissant une préférence.

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_callout_heading("2.0")}}

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

{{domxref("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

  • La nouvelle notification "document-element-inserted" est envoyée quand un élément racine d'un document est crée, mais tous les scripts sont exécutés avant.

XUL

Changements pour l'élément tabbrowser

Plusieurs changements ont été apportés à l'élément {{XULElem("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.

  • Les évènements TabClose, TabSelect et TabOpen non plus de bulle jusqu'à l'élément {{XULElem("tabbrowser")}} (gBrowser). Les récepteurs d'évènements pour ces évènements doivent être ajoutés à gBrowser.tabContainer plutôt qu'à gBrowser directement.
  • Le menu contextuel d'un onglet n'est plus un enfant anonyme de {{XULElem("tabbrowser")}}. Il peut donc être surposé directement avec overlays XUL. On peut également y accéder directement depuis JavaScript via gBrowser.tabContextMenu. Voir cet article pour plus de détails.
  • La nouvelle propriété {{XULProp("visibleTabs")}} a été ajoutée pour vous permettre de faire un tableau des onglets visibles, cela vous permet de déterminer quels onglets seront visibles dans l'ensemble de l'onglet courant. Par exemple, par Firefox Panorama l'utilise.
  • La nouvelle méthode {{XULMeth2("showOnlyTheseTabs")}} a été ajoutée, elle est utilisée Firefox Panorama.
  • Ajout de la nouvelle méthode {{XULMeth2("showOnlyTheseTabs")}}, qui est utilisée par Firefox Panorama.
  • Ajout de la nouvelle méthode {{XULMeth2("getIcon")}}, qui vous permet d'obtenir le favicon d'un onglet sans avoir besoin de le remonter de l'élément {{XULElem("browser")}}.
  • Ajout de la nouvelle propriété {{XULProp("tabbrowser.tabs")}}, qui vous permet d'obtenir facilement une liste des onglets dans l'élement {{XULElem("tabbrowser")}}.
  • Les nouvelles méthodes {{XULMeth2("pinTab")}} et {{XULMeth2("unpinTab")}} vous permettent d'épingler et de relâcher des onglets (pour faire la différence entre les onglets normaux et ceux utilisés régulièrement).
  • Ajout de la méthode {{XULMeth2("getTabModalPromptBox")}} et de l'attribut {{XULAttr("tabmodalPromptShowing")}} à {{XULElem("tabbrowser")}} pour le support des alertes majeures des onglets.

Changements pour les popups

  • L'élément {{xulelem("popup")}} n'est plus supporté, vous devez utilisez {{xulelem("menupopup")}} à la place. (Si vous continuez à utiliser popup, vous allez rencontrer des problèmes, car l'élément n'a plus de signification particulière. par exemple, {{xulelem("menuseparator")}} peut apparaître transparent lorsqu'il est utilisé avec {{xulelem("popup")}}.)
  • L'élément XUL {{XULElem("menupopup")}} a maintenant une propriété {{XULProp("triggerNode")}}, qui indique le noeud sur lequel l'évènement s'est produit et qui a causé l'ouverture de la popup. Cela a aussi nécessité l'ajout d'un paramètre de l'événement déclencheur de la méthode {{XULMeth2("openPopup")}}. En plus de ça, la propriété {{XULProp("anchorNode")}} a été ajoutée, elle renvoie l'ancre spécifiée lorsque la popup a été créé.
  • L'élément {{XULElem("panel")}} propose maintenant les attributs {{XULAttr("panel.fade")}} et {{XULAttr("panel.flip")}}, qui sont utilisés pour configurer le comportement de la nouvelle "flèche" des panneaux de notification de style.

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

  • L'attribut readonly fonctionne désormais correctement pour les champs XBL.
  • L'élément {{xulelem("resizer")}} vous permet désormais d'utiliser l'attribut {{xulattr("element")}} pour spécifier l'élément à redimensionner, au lieu de redimensionner la fenêtre.
  • L'élément {{xulelem("resizer")}} a maintenant un attribut {{xulattr("resizer.type", "type")}} qui vous permet de spécifier que le redimensionnement est pour la fenêtre au lieu d'un élément, pour également empêcher de redimensionner deux fois une fenêtre en cours de préparation.
  • L'attribut "active" n'est plus accessible sur les fenêtres XUL actives. A la place, vous pouvez utilisez la nouvelle pseudo-classe {{cssxref(":-moz-window-inactive")}} afin d'attribuer différents styles aux fenêtres en arrière-plan.
  • L'attribut {{xulattr("emptytext")}} est désormais obsolète, vous devez utiliez {{xulattr("placeholder")}} à la place.
  • L'élément {{xulelem("window")}} propose maintenant un attribut {{xulattr("accelerated")}} ; quand il est vrai, le gestionnaire de la couche matérielle est autorisé à accélérer la fenêtre.
  • L'élément {{xulelem("stack")}} supporte maintenant les attributs {{xulattr("bottom")}} et {{xulattr("right")}}.
  • Les évènements sont maintenant tirés lors de la personnalisation de {{xulelem("toolbox")}}, vous permettant de détecter les changements sur les barres d'outils.
  • L'attribut {{xulattr("alternatingbackground")}} pour l'élément {{xulelem("tree")}}n'est plus supporté, à la place, vous pouvez utiliser la pseudo-classe {{cssxref(":-moz-tree-row")}}.
  • Le dépassement du bouton de la barre d'outils des Favoris avec anonid chevronPopup n'est plus anonyme, il a l'ID "PlacesChevron".
  • L'élément {{xulelem("tabs")}} a maintenant la propriété {{xulprop("tabbox")}}, en remplacement de l'ancienne propriété _tabbox, qui a été abandonnée (et n'a jamais été documentée).
  • Les éléments XUL {{xulelem("window")}} ont maintenant l'attribut {{xulattr("drawintitlebar")}}, si il a la valeur true, la zone de contenu de la fenêtre qui comprend la barre de titre, permet de dessiner dans la barre de titre.
  • De nouveaux évènements sont disponibles : TabPinned et TabUnpinned, vous permettant de détecter quand des onglets sont épinglés ou relâchés.
  • le nouvel évènement TabAttrModified event est envoyé lorsque l'un des attributs ({{xulattr("label")}}, {{xulattr("crop")}}, {{xulattr("busy")}}, {{xulattr("image")}}, ou {{xulattr("selected")}}) d'un onglet change.
  • Les éléments {{xulelem("tab")}} ont maintenant l'attribut {{xulattr("pinned")}}, qui vous permet de savoir si un onglet est actuellement épinglé.
  • La classe setDirectionIndicator sur les éléments {{xulelem("tree")}} n'a rien fait depuis un certain temps et maintenant elle n'est plus du tout utilisée.
  • L'élément {{XULElem("window")}} possède maintenant l'attribut {{XULAttr("chromemargin")}} qui vous permet de définir la marge entre le chrome et le contenu de chaque côté d'une fenêtre.
  • L'élément {{XULElem("window")}} possède maintenant l'attribut {{XULAttr("disablechrome")}}, il est utilisé pour cacher la plupart du chrome dans une fenêtre, comme pour about:addons.
  • L'élément {{XULElem("window")}} possède maintenant l'attribut {{XULAttr("disablefastfind")}}, qui vous permet de désactiver la barre de recherche dans une fenêtre lorsque le contenu ne le supporte pas. Il est par exemple utilisé par le panneau de gestion des modules complémentaires.
  • Les barres d'outils peuvent maintenant être externe aux boîtes à outils, tout en restant considérée comme un membre de {{XULElem("toolbox")}}, en configurant la propriété {{XULProp("toolboxid")}} de {{XULElem("toolbar")}}. De plus, l'élément {{XULElem("toolbox")}} a maintenant une propriété {{XULProp("externalToolbars")}}, qui liste toutes les barres d'outils qui sont considérées comme des membres de la boîte à outils.
  • Ajout du support pour la connexion de templates XUL pour permettre un débogage .

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

  • L'interface {{interface("mozIStorageBindingParamsArray")}}a maintenant un attribut de longueur indiquant le nombre d'objets {{interface("mozIStorageBindingParams")}} dans le tableau.
  • {{ifmethod("mozIStorageStatement", "bindParameters")}} retourne maintenant une erreur si l'interface {{interface("mozIStorageBindingParamsArray")}} spécifiée est vide.
  • Ajout de la méthode {{ifmethod("mozIStorageConnection", "clone")}}, qui vous permet de cloner une connexion à une base de données déjà existante.
  • Ajout de la méthode {{ifmethod("mozIStorageConnection", "asyncClose")}}, qui vous permet de fermer une connexion à une base de données de manière asynchrone, vous spécifiez un rappel pour être averti quand l'opération est terminée.
  • Ajout de la méthode {{ifmethod("mozIStorageConnection", "setGrowthIncrement")}}, qui vous permet de spécifier le nombre de fichiers ajoutés à la fois dans une base de données, pour aider à réduire la fragmentation de SQLite.
  • L'erreur SQLITE_CONSTRAINT est maintenant reportée comme NS_ERROR_STORAGE_CONSTRAINT au lieu de NS_ERROR_FAILURE.

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

  • Les résultats de la requête peuvent maintenant être observés par plusieurs observateurs, et les requêtes peuvent être exécutées de manière asynchrone. Cela signifie qu'il y a eu des changements dans les interfaces {{interface("nsINavHistoryResult")}}, {{interface("nsINavHistoryQueryOptions")}} et {{interface("nsINavHistoryContainerResultNode")}}. De plus, l'interface {{interface("nsINavHistoryResultViewer")}} a été renommée en {{interface("nsINavHistoryResultObserver")}}.
  • De nouvelles notifications ont été ajoutées pour permettre au navigateur de suivre la procédure d'arrêt du service Places de manière plus fiable. Parmi celles-ci, la plupart sont pour un usage interne uniquement, mais la notification places-connection-closed est disponible pour savoir quand le service Places a terminé sont processus d'arrêt.
  • Le paramètre de sortie de la taille d'un tableau sur plusieurs méthodes Places est désormais optionnel.
  • Le support de <menupopup type="places"> a été supprimé. A la place, vous devez créer et remplir un menu avec ds informations Places manuellement, plutôt que de l'avoir fait pour vous. Voir Displaying Places information using views: Menu view pour plus de détails.

Changements dans les interfaces

  • Les interfaces {{interface("nsIDocShell")}} et {{interface("nsIWebBrowser")}} ont maintenant un nouvel attribut isActive, qui est utilisé pour optimiser les chemins de code pour les documents qui ne sont pas visibles.
  • La méthode {{ifmethod("nsIMemory","isLowMemory")}} est obsolète. A la place, vous devez utilisez les notifications "memory-pressure" pour surveiller les situations où la mémoire est insuffisante.
  • L'API pour la manipulation des redirections HTTP sur les canaux a changé pour qu'elles puissent être traitées de manière asynchrone. N'importe quel code qui implémente la manipulation des redirections à l'aide de {{ifmethod("nsIChannelEventSink", "onChannelRedirect")}} doit être mis à jour pour qu'il utilise {{ifmethod("nsIChannelEventSink", "asyncOnChannelRedirect")}} à la place. Cela accepte un gestionnaire de rappel qui doit être appelé quand une redirection est réussie.
  • La méthode {{ifmethod("nsINavHistoryResultObserver", "batching")}} a été ajoutée, fournissant un moyen de grouper des opérations Places par lots, ce qui réduit le nombre de notifications de mise à jour délivrées, qui peut améliorer les performances quand les observateurs doivent effectuer certaines tâches (telles que des rafraîchissement de pages).
  • L'interface obsolète nsIPref a finalement été supprimée. Si vous n'êtes pas encore passé à {{interface("nsIPrefService")}}, il est temps de le faire.
  • Les interfaces {{interface("nsISessionStore")}} et {{interface("nsISessionStartup")}} ont reçues des changements pour la restauration des sessions. Voir la méthode {{ifmethod("nsISessionStore", "restoreLastSession")}}.
  • Les méthodes {{ifmethod("nsIPrincipal", "subsumes")}} et {{ifmethod("nsIPrincipal", "checkMayLoad")}}, et les attributs origin, csp et URI, sont maintenant disponibles à partir d'un script ; avant ils n'étaient disponibles qu'à partir du code natif.
  • L'interface {{interface("nsIPrompt")}} supporte maintenant les alertes des onglets modaux, voir Using tab-modal prompts pour plus de détails.
  • La méthode {{ifmethod("nsIEffectiveTLDService", "getPublicSuffixFromHost")}} rejette maintenant correctement le nom des hôtes qui commencent par un point (".").
  • La méthode {{ifmethod("mozIJSSubScriptLoader", "loadSubScript")}} a maintenant un argument optionnel qui vous permet de définir le jeu de caractère du script, si il n'est pas fourni, on suppose que c'est le format ASCII (comme cela a toujours été précédemment).
  • L'interface nsIAccessProxy a été supprimée. C'était un élément qui n'avait plus d'utilité.
  • Les interfaces {{interface("nsIContentView")}} et {{interface("nsIContentViewManager")}} ont été ajoutées pour Firefox Mobile. Ils représentent une vue déroulant le contenu dont le contenu est actuellement utilisé par un processus séparé.
  • L'interface {{interface("nsIDiskCacheStreamInternal")}} a été ajoutée.
  • L'interface {{interface("nsIExternalURLHandlerService")}} a été ajoutée.
  • L'interface {{interface("nsISyncJPAKE")}} a été ajoutée. Voir {{bug("601645")}}.

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

  • La plupart des ressources que Firefox contient ont été combinées dans une seule archive JAR (omni.jar), ce qui améliore les performances au démarrage en réduisant l'I/O. Pour plus de détails, lisez About omni.jar.
  • La préférence accessibility.disablecache n'est plus supportée, elle a seulement été utilisée à des fins de débogage et n'est plus employée.
  • Les extensions dont le GUID change d'une version à une autre peuvent maintenant être mise à jour correctement.
  • As a side effect of the removal of platform-specific directories in add-on bundles, you can no longer provide different default preferences for each platform.
  • Par défaut, les extensions ne sont plus décompressées quand elles sont installées, mais sont plutôt exécutées directement à partir du fichier XPI. Les extensions peuvent utiliser la propriété unpack dans le manifeste d'installation pour choisir l'ancien comportement. Les extensions qui utilisent des composants binaires, des DLLs chargées avec js-ctypes, des plugins de recherche, des dictionnaires et une fenêtre d'icônes doivent préciser ce dont elles ont besoin pour être décompressées. Les extensions qui créent des bases de données SQLite, ou font des copies de fichiers du système relatifs au répertoire de l'extension, peuvent aussi avoir besoin de modifier leur code.
  • You may now include extensions that automatically get installed at application startup within a customized Firefox.

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
{{interface("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

Source de la révision

<p>Firefox 4, est sorti le 22 mars 2011, améliore les performances, le support d'HTML5 et d'autres technologies du web et aussi la sécurité. Cet article fournit des informations sur cette version et sur les fonctionnalités qui sont disponibles pour les développeurs Web, les développeurs de modules complémentaires et les développeurs de la plate-forme Gecko.</p>
<h2 id="Fonctionnalit.C3.A9s_pour_les_d.C3.A9veloppeurs_Web">Fonctionnalités pour les développeurs Web</h2>
<p>Gecko utilise maintenant le parseur <a class="internal" href="https://developer.mozilla.org/fr/HTML/HTML5" title="HTML5">HTML5</a>, qui corrige des bugs, améliore l'interopérabilité et les performances. Il permet également d'intégrer du contenu <a class="internal" href="https://developer.mozilla.org/fr/SVG" title="SVG">SVG</a> et <a class="internal" href="https://developer.mozilla.org/fr/MathML" title="MathML">MathML</a> directement dans le code HTML.</p>
<h3 id="HTML">HTML</h3>
<dl>
  <dt>
    <a class="internal" href="https://developer.mozilla.org/en-US/docs/HTML/HTML5/HTML5_Parser" title="HTML5/HTML5 Parser">Rencontrez le parseur HTML5</a></dt>
  <dd>
    Un aperçu sur ce que le parseur HTML5 représente pour vous et comment intégrer du contenu SVG et MathML dans votre code.</dd>
  <dt>
    <a class="internal" href="https://developer.mozilla.org/en-US/docs/HTML/Forms_in_HTML" title="HTML/Forms in HTML5">Les formulaires en HTML5</a></dt>
  <dd>
    Un aperçu de l'amélioration de formulaires Web en HTML5. Parmi les changements on ajoute les types d'entrée dans l'élément {{HTMLElement("input")}}, la validation des données et d'autres modifications.</dd>
  <dt>
    <a class="internal" href="https://developer.mozilla.org/en-US/docs/Sections_and_Outlines_of_an_HTML5_document" title="Sections and Outlines of an HTML5 document">Sections HTML5</a></dt>
  <dd>
    Gecko supporte à présent les nouveaux éléments HTML5 liés aux sections dans un document : {{HTMLElement("article")}}, {{HTMLElement("section")}}, {{HTMLElement("nav")}}, {{HTMLElement("aside")}}, {{HTMLElement("hgroup")}}, {{HTMLElement("header")}} et {{HTMLElement("footer")}}.</dd>
  <dt>
    <a class="internal" href="https://developer.mozilla.org/fr/HTML/Global_attributes#hidden" title="HTML/Global attributes#hidden">Attribut HTML5 hidden</a></dt>
  <dd>
    Cet attribut, commun à tous les éléments, est utilisé pour cacher le contenu d'une page Web qui n'est pas encore pertinent pour l'utilisateur.</dd>
  <dt>
    Autres éléments HTML5</dt>
  <dd>
    Gecko supporte les nouveaux éléments HTML5 suivants : {{HTMLElement("mark")}}, {{HTMLElement("figure")}}, et {{HTMLElement("figcaption")}}.</dd>
  <dt>
    <a class="internal" href="https://developer.mozilla.org/en-US/docs/WebSockets" title="WebSockets">WebSockets</a></dt>
  <dd>
    Un guide pour utiliser la nouvelle API WebSockets pour la communication entre une application web et un serveur en temps réel. A noter que WebSockets tel qu'implémenté dans Firefox 4 n'est pas compatible avec la norme finale, et ne devrait pas être utilisé.</dd>
</dl>
<h4 id="Am.C3.A9liorations_de_Canvas">Améliorations de Canvas</h4>
<p>Les modifications suivantes ont étés apportées à l'interface {{domxref("CanvasRenderingContext2D")}} pour permettre à l'implémentation de {{HTMLElement("canvas")}} d'être en conformité avec la spécification :</p>
<ul>
  <li>La spécification d'un rayon négatif lors de l'appel d'<code>arc()</code> lance désormais correctement l'exception <code>INDEX_SIZE_ERR</code>.</li>
  <li>La spécification de valeurs non finies lors de l'appel de <code>createLinearGradient()</code> et <code>createRadialGradient()</code> lance désormais <code>NOT_SUPPORTED_ERR</code> au lieu de <code>SYNTAX_ERR</code>.</li>
  <li>Le réglage de <code>miterLimit</code> pour une valeur négative ne lance plus une exception, mais ignore plutôt les valeurs non-positives.</li>
  <li>Le réglage de <code>lineWidth</code> pour une valeur négative ne lance plus une exception, mais ignore plutôt les valeurs non-positives.</li>
  <li>La méthode <code>putImageData()</code> supporte désormais les paramètres optionnels <code>dirtyX</code>, <code>dirtyY</code>, <code>dirtyWidth</code> et <code>dirtyHeight</code>.</li>
</ul>
<dl>
</dl>
<h4 id="Autres_changements_HTML">Autres changements HTML</h4>
<ul>
  <li>L'élément {{HTMLElement("textarea")}} est maintenant redimensionnable par défaut ; pour le désactiver, vous pouvez utiliser la propriété CSS {{cssxref("resize")}}.</li>
  <li><code>canvas.getContext</code> et <code>canvas.toDataURL</code> ne lancent plus d'exceptions lorsqu'ils sont appelés avec des arguments non reconnus.</li>
  <li>L'élément {{HTMLElement("canvas")}} supporte maintenant la méthode spécifique à Mozilla, <code>mozGetAsFile()</code>, qui permet d'obtenir un fichier basé sur l'image d'un contenu canvas. Voir {{domxref("HTMLCanvasElement")}} pour les détails.</li>
  <li><code>canvas2dcontext.lineCap</code> et <code>canvas2dcontext.lineJoin</code> ne lancent plus d'exceptions lorsqu'ils sont réglés avec une valeur non reconnue.</li>
  <li><code>canvas2dcontext.globalCompositeOperation</code> ne lance plus d'exception lorsqu'il est réglé avec une valeur non reconnue et ne supporte plus la valeur <code>darker</code>, qui n'est pas un standard.</li>
  <li>Le support de l'élément obsolète {{HTMLElement("spacer")}}, était absent de tous les autres navigateurs, a été enlevé.</li>
  <li>L'élément {{HTMLElement("isindex")}}, qui était crée par {{domxref("document.createElement()")}}, est maintenant crée comme un simple élément sans propriétés ou méthodes.</li>
  <li>Gecko supporte maintenant l'appel <code>click()</code> sur l'élément {{HTMLElement("input")}} pour ouvrir le sélecteur de fichiers. Voir l'<a class="internal" href="https://developer.mozilla.org/en-US/docs/Using_files_from_web_applications#Using_hidden_file_input_elements_using_the_click()_method" title="Using files from web applications#Using hidden file input elements using the click() method">exemple</a> dans l'article <a class="internal" href="https://developer.mozilla.org/en-US/docs/Using_files_from_web_applications" title="Using files from web applications">Using files from web applications</a>.</li>
  <li>L'élément {{HTMLElement("input")}} supporte un nouvel attribut <a class="internal" href="https://developer.mozilla.org/en-US/docs/HTML/Element/Input#attr-mozactionhint" title="HTML/Element/Input#attr-mozactionhint"><code>mozactionhint</code></a>, qui permet de spécifier l'étiquette de la touche Entrée sur un clavier virtuel.</li>
  <li>L'élément {{HTMLElement("script")}} à l'intérieur des éléments {{HTMLElement("iframe")}}, {{HTMLElement("noembed")}} et {{HTMLElement("noframes")}} sont maintenant exécutés, contrairement aux versions précédentes de Firefox. Ceci est conforme à la spécification et correspond au comportement des autres navigateurs.</li>
</ul>
<h3 id="CSS">CSS</h3>
<dl>
  <dt>
    <a class="internal" href="https://developer.mozilla.org/en-US/docs/CSS/CSS_transitions" title="CSS transitions">Transitions CSS</a></dt>
  <dd>
    Le support des transitions CSS est disponible dans Firefox 4.</dd>
  <dt>
    Les valeurs calculées en CSS</dt>
  <dd>
    Le support de {{cssxref("-moz-calc")}} a été ajouté. Cela permet de spécifier des valeurs de {{xref_csslength()}} comme des expressions mathématiques.</dd>
  <dt>
    Groupement de sélecteurs</dt>
  <dd>
    Le support de {{cssxref(":-moz-any")}} pour grouper les sélecteurs et factoriser des combinateurs.</dd>
  <dt>
    Support subrectangle pour background-image</dt>
  <dd>
    La propriété {{cssxref("-moz-image-rect")}} permet d'utiliser des subrectangles en tant que {{cssxref("background-image")}}.</dd>
  <dt>
    Propriétés CSS tactile</dt>
  <dd>
    Le support des propriétés tactiles a été ajouté. Plus de détails plus tard.</dd>
  <dt>
    <a class="internal" href="https://developer.mozilla.org/fr/docs/CSS/element" title="CSS/element">Utilisation arbitraires d'élements comme fond</a></dt>
  <dd>
    Vou pouvez utiliser la fonction CSS {{cssxref("-moz-element")}} et la fonction DOM {{domxref("document.mozSetImageElement()")}} pour une utilisation arbitraire des éléments HTML comme fond.</dd>
  <dt>
    <a class="internal" href="https://developer.mozilla.org/en-US/docs/CSS/Privacy_and_the_:visited_selector" title="CSS/Privacy and the :visited selector">Sélecteur :visited et confidentialité</a></dt>
  <dd>
    Des modifications ont étés apportées sur les informations qui peuvent être obtenues sur le style des liens visités en utilisant les sélecteurs CSS. Certaines applications Web peuvent être affectées.</dd>
</dl>
<h4 id="Nouvelles_propri.C3.A9t.C3.A9s_CSS">Nouvelles propriétés CSS</h4>
<table class="standard-table">
  <tbody>
    <tr>
      <td class="header">Propriété</td>
      <td class="header">Description</td>
    </tr>
    <tr>
      <td>{{cssxref("-moz-font-feature-settings")}}</td>
      <td>Permet de personnaliser les fonctionnalités avancées des polices OpenType.</td>
    </tr>
    <tr>
      <td>{{cssxref("-moz-tab-size")}}</td>
      <td>Spécifie la largeur d'un espace de tabulation (U+0009) lors du rendu du texte.</td>
    </tr>
    <tr>
      <td>{{cssxref("resize")}}</td>
      <td>Permet de modifier les dimensions d'un élément.</td>
    </tr>
  </tbody>
</table>
<dl>
</dl>
<h4 id="Nouvelles_pseudo-classes_CSS">Nouvelles pseudo-classes CSS</h4>
<table class="standard-table">
  <tbody>
    <tr>
      <td class="header">Pseudo-class</td>
      <td class="header">Description</td>
    </tr>
    <tr>
      <td>{{cssxref(":-moz-handler-crashed")}}</td>
      <td>Utilisé pour le style d'un élément dont le plugin a planté.</td>
    </tr>
    <tr>
      <td>{{cssxref(":-moz-placeholder")}}</td>
      <td>Appliquée à l'espace texte réservé dans les champs des formulaires.</td>
    </tr>
    <tr>
      <td>{{cssxref(":-moz-submit-invalid")}}</td>
      <td>Appliquée au bouton d'envoi des formulaires quand un ou plusieurs des champs ne sont pas valides.</td>
    </tr>
    <tr>
      <td>{{cssxref(":-moz-window-inactive")}}</td>
      <td>Appliquée aux éléments d'une fenêtre inactive.</td>
    </tr>
    <tr>
      <td>{{cssxref(":invalid")}}</td>
      <td>Automatiquement appliquée aux champs {{HTMLElement("input")}} dont le contenu est invalide.</td>
    </tr>
    <tr>
      <td>{{cssxref(":optional")}}</td>
      <td>Automatiquement appliquée aux champs {{HTMLElement("input")}} qui ne spécifient pas l'attribut <code>required</code>.</td>
    </tr>
    <tr>
      <td>{{cssxref(":required")}}</td>
      <td>Automatiquement appliquée aux champs {{HTMLElement("input")}} qui spécifient l'attribut <code>required</code>.</td>
    </tr>
    <tr>
      <td>{{cssxref(":valid")}}</td>
      <td>Automatiquement appliquée aux champs {{HTMLElement("input")}} dont le contenu a été validé avec succès.</td>
    </tr>
  </tbody>
</table>
<h4 id="Nouveaux_pseudo-selectors_CSS">Nouveaux pseudo-selectors CSS</h4>
<table class="standard-table">
  <tbody>
    <tr>
      <td class="header">Pseudo-selector</td>
      <td class="header">Description</td>
    </tr>
    <tr>
      <td>{{cssxref(":-moz-focusring")}}</td>
      <td>Permet de spécifier l'apparence d'un élément lorsque Gecko estime que l'on doit se fixer dessus.</td>
    </tr>
  </tbody>
</table>
<h4 id="Nouvelles_fonctions_CSS">Nouvelles fonctions CSS</h4>
<table class="standard-table">
  <tbody>
    <tr>
      <td class="header">Fonction</td>
      <td class="header">Description</td>
    </tr>
    <tr>
      <td>{{cssxref(":-moz-any")}}</td>
      <td>Permet de grouper les sélecteurs et de factoriser les combinateurs.</td>
    </tr>
    <tr>
      <td>{{cssxref("-moz-calc")}}</td>
      <td>Permet de spécifier des valeurs de {{template.Xref_csslength()}} comme des expressions mathématiques.</td>
    </tr>
    <tr>
      <td>{{cssxref("-moz-element")}}</td>
      <td>Permet d'utiliser un élément arbritaire de fond pour {{cssxref("background-image")}} and {{cssxref("background")}}.</td>
    </tr>
    <tr>
      <td>{{cssxref("-moz-image-rect")}}</td>
      <td>Permet d'utiliser un subrectangle d'une image comme {{cssxref("background-image")}} or {{cssxref("background")}}.</td>
    </tr>
  </tbody>
</table>
<h4 id="Propri.C3.A9t.C3.A9s_CSS_renomm.C3.A9es">Propriétés CSS renommées</h4>
<table class="standard-table">
  <thead>
    <tr>
      <td class="header">Ancien nom</td>
      <td class="header">Nouveau nom</td>
      <td class="header">Notes</td>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code>-moz-background-size</code></td>
      <td>{{cssxref("background-size")}}</td>
      <td>Le nom <code>-moz-background-size</code> n'est plus supporté.</td>
    </tr>
    <tr>
      <td><code>-moz-border-radius</code></td>
      <td>{{cssxref("border-radius")}}</td>
      <td>L'ancien nom est encore pris en charge pour une durée limitée, le temps de mettre vos sites à jour. Le changement du rendu a été fait pour correspondre à la dernière version de la spécification.</td>
    </tr>
    <tr>
      <td><code>-moz-box-shadow</code></td>
      <td>{{cssxref("box-shadow")}}</td>
      <td>&nbsp;</td>
    </tr>
  </tbody>
</table>
<h4 id="Divers_changements_CSS">Divers changements CSS</h4>
<ul>
  <li>La propriété {{cssxref("text-shadow")}} plafonne désormais son rayon de flou à 300px, pour des raisons de bon sens et de performances.</li>
  <li>La propriété {{cssxref("overflow")}} ne s'applique plus au groupe d'éléments de tableaux (<code>&lt;thead&gt;</code>, <code>&lt;tbody&gt;</code>, and <code>&lt;tfoot&gt;</code>).</li>
  <li>La propriété {{cssxref("-moz-appearance")}} supporte désormais la valeur <code>-moz-win-borderless-glass</code>, qui s'applique à un élément Aero sans bordure.</li>
  <li>La fonctionnalité de média <code><a class="internal" href="https://developer.mozilla.org/en-US/docs/CSS/Media_queries#-moz-device-pixel-ratio" title="Media queries#-moz-device-pixel-ratio">-moz-device-pixel-ratio</a></code> a été ajoutée, permettant l'utilisation de pixels de l'appareil par ratio de pixels CSS qui sera utilisé dans les <a class="internal" href="https://developer.mozilla.org/fr/CSS/Media_queries" title="Media queries">Media Queries</a>.</li>
  <li>La manipulation des <a class="internal" href="https://developer.mozilla.org/en-US/docs/CSS-2_Quick_Reference/Units" title="CSS-2 Quick Reference/Units">unités CSS</a> dans Gecko a été révisé pour mieux correspondre à d'autres navigateurs, et plus précisément de traduire dans des longueurs absolues le nombre de pixels à l'écran basé sur le dispositif de la DPI.</li>
</ul>
<h3 id="Graphisme_et_vid.C3.A9o">Graphisme et vidéo</h3>
<dl>
  <dt>
    &nbsp;</dt>
  <dt>
    <a class="internal" href="https://developer.mozilla.org/en-US/docs/WebGL" title="WebGL">WebGL</a></dt>
  <dd>
    La norme WebGL (encore en développement) est maintenant supportée par Firefox.</dd>
  <dt>
    <a class="internal" href="https://developer.mozilla.org/en-US/docs/Optimizing_graphics_performance" title="Optimizing graphics performance">Optimisation des performances graphique</a></dt>
  <dd>
    Trucs et astuces pour profiter le maximum des performances graphiques et vidéo dans Firefox 4.</dd>
  <dt>
    <a class="internal" href="https://developer.mozilla.org/en-Us/docs/Media_formats_supported_by_the_audio_and_video_elements#WebM" title="Media formats supported by the audio and video elements#WebM">Support de WebM</a></dt>
  <dd>
    Le nouveau format vidéo ouvert <a class="external" href="http://www.webmproject.org/" title="http://www.webmproject.org/">WebM</a> est supporté par Gecko 2.0.</dd>
  <dt>
    <a class="internal" href="https://developer.mozilla.org/en-US/docs/SVG/SVG_animation_with_SMIL" title="SVG animation with SMIL">Animation SVG avec SMIL</a></dt>
  <dd>
    Les animations SVG avec SMIL sont désomais supportées.</dd>
  <dt>
    Utilisation de SVG comme image ou arrière-plan CSS</dt>
  <dd>
    Vous pouvez maintenant utilisez SVG avec l'élément {{htmlelement("img")}}, ainsi qu'avec CSS {{cssxref("background-image")}}.</dd>
  <dt>
    Attribut Media <code>buffered</code></dt>
  <dd>
    L'attribut <code>buffered</code> sur les éléments {{HTMLElement("video")}} and {{HTMLElement("audio")}} est maintenant supporté, vous permettant de déterminer quel fichier multimédia a été tamponné. L'interface DOM {{domxref("TimeRanges")}} a été mise en place pour ce support.</dd>
  <dt>
    Attribut Media <code>preload</code></dt>
  <dd>
    L'attribut <code>preload</code> de la spécification HTML5 a été implémenté, remplaçant l'attribut <code>autobuffer</code> précédemment mis en place (et qui n'est plus pris en charge). Cela affecte les éléments {{HTMLElement("video")}} et {{HTMLElement("audio")}} ainsi que l'interface {{interface("nsIDOMHTMLMediaElement")}}.</dd>
  <dt>
    Amélioration du positionnement du texte SVG</dt>
  <dd>
    Vous pouvez maintenant spécifier des listes des valeurs pour les propriétés <code>x</code>, <code>y</code>, <code>dx</code>, and <code>dy</code> sur les éléments SVG {{SVGElement("text")}} et {{SVGElement("tspan")}}. Cela vous permet de contrôler le positionnement de chaque caractère d'une chaîne, individuellement.</dd>
</dl>
<h3 id="DOM">DOM</h3>
<dl>
  <dt>
    <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_typed_arrays" title="JavaScript typed arrays">Tableaux JavaScript typés</a></dt>
  <dd>
    Ajout du support pour les tableaux JavaScript typés, cela vous permet de manipuler des tampons contenant des données brutes en utilisant des types de données natives. Plusieurs API utilisent ça, y compris <a clas="internal" href="https://developer.mozilla.org/fr/docs/DOM/File" title="DOM/File">l'API File</a>, <a class="internal" href="https://developer.mozilla.org/en-US/docs/WebGL" title="WebGL">WebGL</a> et <a class="internal" href="https://developer.mozilla.org/en-US/docs/WebSockets" title="WebSockets">WebSockets</a>.</dd>
  <dt>
    Obtention des limites des rectangles limites</dt>
  <dd>
    L'objet {{domxref("Range")}} a désormais les méthodes {{domxref("range.getClientRects()")}} et {{domxref("range.getBoundingClientRect()")}}.</dd>
  <dt>
    Capture des évènements de la souris sur des éléments quelconques</dt>
  <dd>
    Ajout du support des APIs <code>setCapture()</code> et <code>releaseCapture()</code> originaires d'Internet Explorer. Voir {{bug(503943)}}.</dd>
  <dt>
    <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/Manipulating_the_browser_history" title="DOM/Manipulating the browser history">Manipulation de l'historique du navigateur</a></dt>
  <dd>
    L'objet de l'historique déjà existant et disponible via l'objet {{domxref("window.history")}}, supporte maintenant les nouvelles méthodes HTML5 <code>pushState()</code> et <code>replaceState()</code>.</dd>
  <dt>
    <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/Animations_using_MozBeforePaint" title="DOM/Animations using MozBeforePaint">Animations utilisant MozBeforePaint</a></dt>
  <dd>
    Un nouvel évènement a été ajouté, qui, avec l'aide de la méthode {{domxref("window.mozRequestAnimationFrame()")}} et de la propriété {{domxref("window.mozAnimationStartTime")}}, offre un moyen de créer des animations qui sont synchronisées avec les autres.</dd>
  <dt>
    Evènements touch et multi-touch</dt>
  <dd>
    Ajout du support des évènements touch et multi-touch.</dd>
</dl>
<h4 id="Changement_des_interfaces_DOM_d'.C3.A9l.C3.A9ments_HTML">Changement des interfaces DOM d'éléments HTML</h4>
<p>Plusieurs éléments HTML ont vu leur interface DOM modifier, conformément à la spécification HTML5.</p>
<table class="standard-table">
  <thead>
    <tr>
      <td class="header">Interface dans Firefox 3.6</td>
      <td class="header">Interface dans Firefox 4</td>
      <td class="header">Elements HTML</td>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code><a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/HTMLSpanElement" title="DOM/HTMLSpanElement">HTMLSpanElement</a></code></td>
      <td><code><a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/HTMLElement" title="DOM/HTMLElement">HTMLElement</a></code></td>
      <td>{{HTMLElement("abbr")}}, {{HTMLElement("acronym")}}, {{HTMLElement("address")}}, {{HTMLElement("b")}}, {{HTMLElement("bdo")}}, {{HTMLElement("big")}}, {{HTMLElement("blink")}}, {{HTMLElement("center")}}, {{HTMLElement("cite")}}, {{HTMLElement("code")}}, {{HTMLElement("dd")}}, {{HTMLElement("dfn")}}, {{HTMLElement("dt")}}, {{HTMLElement("em")}}, {{HTMLElement("i")}}, {{HTMLElement("kbd")}}, {{HTMLElement("listing")}}, {{HTMLElement("nobr")}}, {{HTMLElement("plaintext")}}, {{HTMLElement("s")}}, {{HTMLElement("samp")}}, {{HTMLElement("small")}}, {{HTMLElement("strike")}}, {{HTMLElement("strong")}}, {{HTMLElement("sub")}}, {{HTMLElement("sup")}}, , {{HTMLElement("tt")}}, {{HTMLElement("u")}}, {{HTMLElement("var")}}, {{HTMLElement("xmp")}}</td>
    </tr>
    <tr>
      <td><code><a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/HTMLDivElement" title="DOM/HTMLDivElement">HTMLDivElement</a></code></td>
      <td><code><a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/HTMLElement" title="DOM/HTMLElement">HTMLElement</a></code></td>
      <td>{{HTMLElement("noembed")}}, {{HTMLElement("noframes")}}, {{HTMLElement("noscript")}}</td>
    </tr>
    <tr>
      <td><code><a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/HTMLWBRElement" title="DOM/HTMLWBRElement">HTMLWBRElement</a></code></td>
      <td><code><a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/HTMLElement" title="DOM/HTMLElement">HTMLElement</a></code></td>
      <td>{{HTMLElement("wbr")}}</td>
    </tr>
  </tbody>
</table>
<dl>
</dl>
<h4 id="Divers_changements_DOM">Divers changements DOM</h4>
<ul>
  <li>L'enveloppement d'un élément {{HTMLElement("textarea")}} peut maintenant être commandé via l'attribut DOM <code>wrap</code>. {{bug(41464)}}</li>
  <li>Les éléments {{HTMLElement("script")}} crées avec {{domxref("document.createElement()")}} et insérés dans un document, se comportent désormais conformément à la spécification HTML5. Les scripts avec l'attribut <code>src</code> s'exécute dès que possible (sasn maintenir la commande) et les scripts sans l'attribut <code>src</code> s'exécute de manière simultanée. Pour faire des scripts d'insertion de scripts qui ont l'attribut <code>src</code> qui exécute l'ensemble dans l'ordre d'insertion, pour eux <code>.async=false</code>.</li>
  <li>Les objets DOM {{domxref("file")}} proposent désormais la propriété <code>url</code>.</li>
  <li>Support de <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest/Using_XMLHttpRequest#Using_FormData_objects" title="XMLHttpRequest/Using XMLHttpRequest#Using FormData objects">FormData</a> pour XMLHttpRequest.</li>
  <li>La propriété {{domxref("element.isContentEditable")}} a été implémentée.</li>
  <li>La propriété {{domxref("document.currentScript")}} vous permet de déterminer quel script de l'élément {{HTMLElement("script")}} est en cours d'exécution. les nouveaux évènements {{domxref("element.onbeforescriptexecute")}} et {{domxref("element.onafterscriptexecute")}} sont déclenchés avant et après l'éxécution d'un élément script.</li>
  <li>Ajout de la propriété <a class="internal" href="https://developer.mozilla.org/en-US/docs/DragDrop/DataTransfer#mozSourceNode" title="DragDrop/DataTransfer#mozSourceNode"><code>mozSourceNode</code></a> à l'objet <a class="internal" href="https://developer.mozilla.org/en-US/docs/DragDrop/DataTransfer" title="DragDrop/DataTransfer"><code>DragTransfer</code></a>.</li>
  <li>Ajout de la méthode <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/Selection/modify" title="DOM/selection/modify"><code>selection.modify()</code></a> à l'objet {{domxref("Selection")}}, ce qui vous permet de facilement modifier la sélection de texte courant ou la position du curseur dans une fenêtre de navigateur.</li>
  <li>Le support de l'objet <code>window.directories</code> et de la fonctionnalité <code>directories</code> pour {{domxref("window.open")}}, qui ne sont plus supportés dans les autres navigateurs, ont été enlevés. Utiliser <code>personalbar</code> à la place. {{Bug(474058)}}</li>
  <li>La propriété {{domxref("event.mozInputSource")}} a été ajoutée à l'interface utilisateur des évènements DOM, cette propriété non-standard vous permet de déterminer le type de l'appareil qui a généré un évènement.</li>
  <li>L'évènement {{domxref("document.onreadystatechange")}} a été implémenté.</li>
  <li>La méthode {{domxref("document.createElement")}} n'accepte plus <code>&lt;</code> et <code>&gt;</code> autour du nom de balise en mode quirks.</li>
  <li>Les méthodes {{domxref("element.setCapture()")}} et {{domxref("document.releaseCapture()")}} ont été ajoutées, permettant à des éléments de poursuivre des évènements de la souris, même lorsqu'elle est en dehors de leur zone de suivi normal après que l'évènement <code>mousedown</code> soit survenu.</li>
  <li>La propriété {{domxref("window.mozPaintCount")}} a été ajoutée, elle vous permet de déterminer le nombre de fois q'un document a été peint. Cela est particulièrement utile lors des tests de performance de votre application web.</li>
  <li>Le signe de la langue a été supprimé de {{domxref("window.navigator.appVersion")}} et {{domxref("window.navigator.userAgent")}}. Utilisez {{domxref("window.navigator.language")}} ou <a class="internal" href="https://developer.mozilla.org/en-US/docs/HTTP/Content_negotiation" title="Content negotiation">l'en-tête Accept-Language</a> à la place. {{Bug(572656)}}</li>
  <li>L'objet <a href="https://developer.mozilla.org/fr/docs/XMLHttpRequest" title="XMLHttpRequest">XMLHttpRequest</a> expose maintenant la réponse comme un tableau JavaScript typé et aussi comme une chaîne, en utilisant la propriété, spécifique de Gecko, <code>mozResponseArrayBuffer</code>.</li>
  <li><a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/MouseEvent" title="DOM/MouseEvent">Mouse events</a> inclut maintenant une propriété <code>mozPressure</code> indiquant le niveau de pression supporté sur les périphériques d'entrée sensibles à la pression.</li>
  <li>Les méthodes {{domxref("window.URL.createObjectURL()")}} et {{domxref("window.URL.revokeObjectURL()")}} vous permettent de créer des URLs d'objet qui renvoient à des fichiers locaux.</li>
  <li>La méthode {{domxref("DOMImplementation.createHTMLDocument()")}} vous permet de créer un nouveau document HTML.</li>
  <li>{{domxref("Node.mozMatchesSelector()")}} retourne maintenant l'exception <code>SYNTAX_ERR</code>si la chaîne de sélection spécifiée est invalide, au lieu de retourner <code>false</code>.</li>
  <li>Vous pouvez maintenant définir les valeurs des propriétés d'un élement SVG en utilisant une syntaxe abrégée même avec CSS. Par exemple : <code>element.style.fill = 'lime'</code>. Voir {{domxref("element.style")}} pour plus de détails.</li>
  <li>Le document racine a maintenant un attribut <a class="internal" href="https://developer.mozilla.org/en-US/docs/Supporting_private_browsing_mode#Detecting_whether_private_browsing_mode_is_permanent" title="Supporting private browsing mode#Detecting whether private browsing mode is permanent"><code>privatebrowsingmode</code></a> qui décrit l'état du mode de navigation privée, en indiquant notamment si la session de navigation privée est temporaire ou permanente.</li>
  <li>Le second paramètre de la méthode {{domxref("window.getComputedStyle()")}} est maintenant optionnel, car elle l'est dans tous les autres navigateurs.</li>
  <li>L'objet DOM <a href="https://developer.mozilla.org/en-US/docs/DOM/event/StorageEvent" title="DOM/event/StorageEvent"><code>StorageEvent</code></a> est maintenant conforme à la dernière version de la spécification.</li>
  <li>Le délais minimum autorisé pour la méthode {{domxref("window.setTimeout()")}} est maintenant la préférence <code>dom.min_timeout_value</code>.</li>
  <li>L'évènement <a class="internal" href="https://developer.mozilla.org/en-US/docs/Gecko-Specific_DOM_Events#MozAfterPaint" title="Gecko-Specific DOM Events#MozAfterPaint"><code>MozAfterPaint</code></a> n'est plus envoyé par défaut, en raison d'un potentiel problème de sécurité. Il peut être réactivé en définissant une préférence.</li>
</ul>
<h3 id="Securit.C3.A9">Securité</h3>
<dl>
  <dt>
    <a class="internal" href="https://developer.mozilla.org/en-US/docs/Security/CSP" title="Security/CSP">Content Security Policy (CSP)</a></dt>
  <dd>
    Content Security Policy (CSP) est une proposition de Mozilla, conçu pour aider les concepteurs de sites Web et les administrateurs de serveur en spécifiant comment le contenu sur leurs sites Web agit. L'objectif est d'aider à détecter et à atténuer les attaques incluant le cross-site scripting et des attaques par injection de données.</dd>
  <dt>
    <a class="internal" href="https://developer.mozilla.org/en-US/docs/Security/HTTP_Strict_Transport_Security" title="Security/HTTP Strict Transport Security">HTTP Strict Transport Security</a></dt>
  <dd>
    HTTP Strict Transport Security est un dispositif de sécurité qui permet à un site web d'indiquer au navigateur d'utiliser une connexion sécurisée (HTTPS) à la place du protocole HTTP.</dd>
  <dt>
    <a class="internal" href="https://developer.mozilla.org/en-US/docs/The_X-FRAME-OPTIONS_response_header" title="The X-FRAME-OPTIONS response header">L'en-tête de réponse X-FRAME-OPTIONS</a></dt>
  <dd>
    L'en-tête de réponse X-FRAME-OPTIONS HTTP introduite dans Internet Explorer 8 est désormais supportée par Firefox. Cela permet aux sites d'indiquer si leurs pages peuvent être utilisées dans des frames ou si l'utilisation de la page doit être restreint.</dd>
  <dt>
    Changement de la <a class="internal" href="https://developer.mozilla.org/en-US/docs/Gecko_user_agent_string_reference" title="Gecko_user_agent_string_reference">chaîne de l'agent utilisateur</a></dt>
  <dd>
    C'est un moyen de réduire la quantité et l'entropie des données envoyées dans les requêts HTPP (voir {{bug("572650")}}), le niveau de cryptage et le signe de la langue ont été enlevés de la chaîne de l'agent utilisateur.</dd>
</dl>
<h3 id="JavaScript">JavaScript</h3>
<p>Pour un aperçu des changements effectués dans JavaScript 1.8.5, voir <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript/New_in_JavaScript/1.8.5" title="New in JavaScript 1.8.5">New in JavaScript 1.8.5</a>. Dans Firefox 4, JavaScript a un plus grand respect de la norme ECMAScript 5.</p>
<h3 id="Outils_pour_les_d.C3.A9veloppeurs">Outils pour les développeurs</h3>
<dl>
  <dt>
    <a class="internal" href="https://developer.mozilla.org/en-US/docs/Using_the_Web_Console" title="Using the Web Console">Utilisation de la Console Web</a></dt>
  <dd>
    La Console Web est un outil qui aide le débogage.</dd>
</dl>
<div class="geckoVersionNote">
  <p>{{gecko_callout_heading("2.0")}}</p>
  <p>A partir de Firefox 4, la Console d'erreurs est désactivée par défaut. Vous pouvez la ré-activer en modifiant la préférence <code>devtools.errorconsole.enabled</code> à <code>true</code> et en redémarrant le navigateur.</p>
</div>
<h2 id="Changements_pour_les_d.C3.A9veloppeurs_de_Mozilla_et_de_modules_compl.C3.A9mentaires">Changements pour les développeurs de Mozilla et de modules complémentaires</h2>
<p>Pour des conseils utiles sur la mise à jour des extensions existantes pour Firefox 4, voir <a class="internal" href="https://developer.mozilla.org/en-US/docs/Extensions/Updating_extensions_for_Firefox_4" title="Extensions/Updating extensions for Firefox 4">Updating extensions for Firefox 4</a>. Il y a plusieurs changements importants qui cassent la compatibilité avec les add-ons, donc n'oubliez pas de lire cet article.</p>
<p>Si vous développez des thèmes, vous devez lire <a class="internal" href="https://developer.mozilla.org/en-US/docs/Theme_changes_in_Firefox_4" title="Theme changes in Firefox 4">Theme changes in Firefox 4</a> afin de connaître certains changements importants.</p>
<h3 id="Modules_de_code_JavaScript">Modules de code JavaScript</h3>
<dl>
  <dt>
    <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_code_modules/Services.jsm" title="JavaScript code modules/Services.jsm">Services.jsm</a></dt>
  <dd>
    Le module de code <code>Services.jsm</code> fournit des accesseurs qui font qu'il est facile d'obtenir des références sur les services couramment utilisés, tels que le service de préférences ou le médiateur fenêtre.</dd>
  <dt>
    <a class="internal" href="https://developer.mozilla.org/en-US/docs/js-ctypes" title="JavaScript code modules/ctypes.jsm">API JS-ctypes</a></dt>
  <dd>
    L'API JS-ctypes permet d'appeler une bibliothèque de fonctions étrangère C-compatible sans utiliser XPCOM.</dd>
  <dt>
    <a class="internal" href="https://developer.mozilla.org/en-US/docs/Addons/Add-on_Manager" title="Addons/Add-on Manager">Gestionnaire de modules complémentaires</a></dt>
  <dd>
    Le nouveau gestionnaire de modules complémentaires fournit des informations sur les modules, permet la modifications des options, l'installation et la suppression des modules.</dd>
  <dt>
    <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_code_modules/PopupNotifications.jsm" title="JavaScript code modules/PopupNotifications.jsm">PopupNotifications.jsm</a></dt>
  <dd>
    Le nouveau module des notifications popup facilite la présentation des notifications non-modales. Vous pouvez voir comment utiliser cette API dans <a clas="internal" href="https://developer.mozilla.org/en-US/docs/Using_popup_notifications" title="Using popup notifications">Using popup notifications</a>.</dd>
  <dt>
    <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_code_modules/Using#Locating_the_code_module" title="JavaScript code modules/Using JavaScript code modules#Locating the code module">Chargement des modules de code à partir des URLs chrome:</a></dt>
  <dd>
    Vous pouvez maintenant charger des modules de code à partir d'URLs <strong>chrome:</strong>, même à l'intérieur de fichiers JAR.</dd>
  <dt>
    DownloadLastDir.jsm</dt>
  <dd>
    Le module de code <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_code_modules/DownloadLastDir.jsm" title="JavaScript/Code modules/DownloadLastDir.jsm"><code>DownloadLastDir.jsm</code></a> fournit la variable <code>gDownloadLastDir</code> qui contient une chaîne qui permet de connaître le chemin du répertoire dans lequel le dernier téléchargement s'est produit. Ce module gère les questions liées à la navigation privée.</dd>
  <dt>
    <a class="internal" href="https://developer.mozilla.org/en-US/docs/Performance/Measuring_performance_using_the_PerfMeasurement.jsm_code_module" title="Performance/Measuring performance using the PerfMeasurement.jsm code module">Mesurer les performances en utilisant le module de code PerfMeasurement.jsm code module</a></dt>
  <dd>
    Le module de code <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_code_modules/PerfMeasurement.jsm" title="JavaScript code modules/PerfMeasurement.jsm"><code>PerfMeasurement.jsm</code></a> propose une API qui mesure les performances au niveau du CPU dans du code JavaScript.</dd>
</dl>
<h4 id="Divers_changements_dans_les_modules_de_code">Divers changements dans les modules de code</h4>
<ul>
  <li>Le module de code <code>NetUtil.jsm</code> offre maintenant la méthode <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_code_modules/NetUtil.jsm#readInputStreamToString()" title="JavaScript/Code modules/NetUtil.jsm#readInputStreamToString()"><code>readInputStreamToString()</code></a>, qui permet de lire des octets arbitraires à partir d'un flux dans une chaîne, même si le flux inclut des zéros.</li>
  <li>Vous pouvez maintenant <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_code_modules/Using_workers_in_JavaScript_code_modules" title="JavaScript code modules/Using workers in JavaScript code modules">utiliser les travailleurs dans les modules de code JavaScript</a>.</li>
</ul>
<div id="livemargins_control" style="position: absolute; display: none; z-index: 9999;">
  <img alt="" height="5" src="chrome://livemargins/skin/monitor-background-horizontal.png" style="position:absolute; left:-77px; top:-5px;" width="77" /> <img alt="" src="chrome://livemargins/skin/monitor-background-vertical.png" style="position:absolute; left:0; top:-5px;" /> <img alt="" id="monitor-play-button" src="chrome://livemargins/skin/monitor-play-button.png" style="position:absolute; left:1px; top:0; opacity:.5; cursor:pointer;" /></div>
<h3 id="Changements_DOM">Changements DOM</h3>
<dl>
  <dt>
    {{domxref("ChromeWorker")}}</dt>
  <dd>
    Un nouveau type de travailleur pour du code privilégié, ce qui permet l'utilisation de choses comme <a class="internal" href="https://developer.mozilla.org/en-US/docs/js-ctypes" title="js-ctypes">js-ctypes</a> à partir des travailleurs dans les extensions et le code d'une application.</dd>
  <dt>
    <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/Touch_events" title="DOM/Touch events">Evènements tactile</a></dt>
  <dd>
    Ajout du support de l'évènement tactile (non-standard), cela permet de pouvoir suivre plusieurs doigts qui se déplacent en même temps sur un écran tactile.</dd>
</dl>
<h4 id="Autres_changements_DOM">Autres changements DOM</h4>
<ul>
  <li>La nouvelle notification <a class="internal" href="https://developer.mozilla.org/en-US/docs/Observer_Notifications#Documents" title="Observer Notifications#Documents">"document-element-inserted"</a> est envoyée quand un élément racine d'un document est crée, mais tous les scripts sont exécutés avant.</li>
</ul>
<dl>
</dl>
<h3 id="XUL">XUL</h3>
<h4 id="Changements_pour_l'.C3.A9l.C3.A9ment_tabbrowser">Changements pour l'élément tabbrowser</h4>
<p>Plusieurs changements ont été apportés à l'élément {{XULElem("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.</p>
<ul>
  <li>Les évènements <code>TabClose</code>, <code>TabSelect</code> et <code>TabOpen</code> non plus de bulle jusqu'à l'élément {{XULElem("tabbrowser")}} (<code>gBrowser</code>). Les récepteurs d'évènements pour ces évènements doivent être ajoutés à <code>gBrowser.tabContainer</code> plutôt qu'à <code>gBrowser</code> directement.</li>
  <li>Le menu contextuel d'un onglet n'est plus un enfant anonyme de {{XULElem("tabbrowser")}}. Il peut donc être surposé directement avec <a class="internal" href="https://developer.mozilla.org/fr/docs/Overlays_XUL" title="Overlays XUL">overlays XUL</a>. On peut également y accéder directement depuis JavaScript via <code>gBrowser.tabContextMenu</code>. Voir cet <a class="external" href="http://www.gavinsharp.com/blog/2010/03/31/accessingmodifying-the-firefox-tab-context-menu-from-extensions/" title="http://www.gavinsharp.com/blog/2010/03/31/accessingmodifying-the-firefox-tab-context-menu-from-extensions/">article</a> pour plus de détails.</li>
  <li>La nouvelle propriété {{XULProp("visibleTabs")}} a été ajoutée pour vous permettre de faire un tableau des onglets visibles, cela vous permet de déterminer quels onglets seront visibles dans l'ensemble de l'onglet courant. Par exemple, par Firefox Panorama l'utilise.</li>
  <li>La nouvelle méthode {{XULMeth2("showOnlyTheseTabs")}} a été ajoutée, elle est utilisée Firefox Panorama.</li>
  <li>Ajout de la nouvelle méthode {{XULMeth2("showOnlyTheseTabs")}}, qui est utilisée par Firefox Panorama.</li>
  <li>Ajout de la nouvelle méthode {{XULMeth2("getIcon")}}, qui vous permet d'obtenir le favicon d'un onglet sans avoir besoin de le remonter de l'élément {{XULElem("browser")}}.</li>
  <li>Ajout de la nouvelle propriété {{XULProp("tabbrowser.tabs")}}, qui vous permet d'obtenir facilement une liste des onglets dans l'élement {{XULElem("tabbrowser")}}.</li>
  <li>Les nouvelles méthodes {{XULMeth2("pinTab")}} et {{XULMeth2("unpinTab")}} vous permettent d'épingler et de relâcher des onglets (pour faire la différence entre les onglets normaux et ceux utilisés régulièrement).</li>
  <li>Ajout de la méthode {{XULMeth2("getTabModalPromptBox")}} et de l'attribut {{XULAttr("tabmodalPromptShowing")}} à {{XULElem("tabbrowser")}} pour le support des alertes majeures des onglets.</li>
</ul>
<h4 id="Changements_pour_les_popups">Changements pour les popups</h4>
<ul>
  <li>L'élément {{xulelem("popup")}} n'est plus supporté, vous devez utilisez {{xulelem("menupopup")}} à la place. (Si vous continuez à utiliser <code>popup</code>, vous allez rencontrer des problèmes, car l'élément n'a plus de signification particulière. par exemple, {{xulelem("menuseparator")}} peut apparaître transparent lorsqu'il est utilisé avec {{xulelem("popup")}}.)</li>
  <li>L'élément XUL {{XULElem("menupopup")}} a maintenant une propriété {{XULProp("triggerNode")}}, qui indique le noeud sur lequel l'évènement s'est produit et qui a causé l'ouverture de la popup. Cela a aussi nécessité l'ajout d'un paramètre de l'événement déclencheur de la méthode {{XULMeth2("openPopup")}}. En plus de ça, la propriété {{XULProp("anchorNode")}} a été ajoutée, elle renvoie l'ancre spécifiée lorsque la popup a été créé.</li>
  <li>L'élément {{XULElem("panel")}} propose maintenant les attributs {{XULAttr("panel.fade")}} et {{XULAttr("panel.flip")}}, qui sont utilisés pour configurer le comportement de la nouvelle "flèche" des panneaux de notification de style.</li>
</ul>
<h4 id="Suppression_du_support_.C3.A0_distance_de_XUL">Suppression du support à distance de XUL</h4>
<p>Le support à distance de XUL n'est plus supporté, cela affecte les documents XUL qui étaient servis par HTTP, en outre, vous ne pouvez plus charger des documents XUL en utilisant l'URL <span class="plain"><code>file://</code></span> sauf en créant une préférence <code>dom.allow_XUL_XBL_for_file</code> avec la valeur <code>true</code>. Cependant, il y a une fonctionnalité de liste blanche qui peut être utilisée pour permettre à des domaines spécifiques de charger XUL à distance. L'extension <a class="external" href="https://addons.mozilla.org/en-US/firefox/addon/235281/" title="https://addons.mozilla.org/en-US/firefox/addon/235281/">Remote XUL Manager</a> vous permet de gérer cette liste blanche.</p>
<h4 id="Divers_changements_XUL">Divers changements XUL</h4>
<ul>
  <li>L'attribut <code>readonly</code> fonctionne désormais correctement pour les <a class="internal" href="https://developer.mozilla.org/en-US/docs/XBL/XBL_1.0_Reference/Elements#field" title="XBL/XBL_1.0_Reference/Elements#field">champs XBL</a>.</li>
  <li>L'élément {{xulelem("resizer")}} vous permet désormais d'utiliser l'attribut {{xulattr("element")}} pour spécifier l'élément à redimensionner, au lieu de redimensionner la fenêtre.</li>
  <li>L'élément {{xulelem("resizer")}} a maintenant un attribut {{xulattr("resizer.type", "type")}} qui vous permet de spécifier que le redimensionnement est pour la fenêtre au lieu d'un élément, pour également empêcher de redimensionner deux fois une fenêtre en cours de préparation.</li>
  <li>L'attribut "active" n'est plus accessible sur les fenêtres XUL actives. A la place, vous pouvez utilisez la nouvelle pseudo-classe {{cssxref(":-moz-window-inactive")}} afin d'attribuer différents styles aux fenêtres en arrière-plan.</li>
  <li>L'attribut {{xulattr("emptytext")}} est désormais obsolète, vous devez utiliez {{xulattr("placeholder")}} à la place.</li>
  <li>L'élément {{xulelem("window")}} propose maintenant un attribut {{xulattr("accelerated")}} ; quand il est vrai, le gestionnaire de la couche matérielle est autorisé à accélérer la fenêtre.</li>
  <li>L'élément {{xulelem("stack")}} supporte maintenant les attributs {{xulattr("bottom")}} et {{xulattr("right")}}.</li>
  <li>Les évènements sont maintenant tirés lors de la personnalisation de {{xulelem("toolbox")}}, vous permettant de <a class="internal" href="https://developer.mozilla.org/en-US/docs/XUL/Toolbars/Toolbar_customization_events" title="XUL/Toolbars/Toolbar customization events">détecter les changements sur les barres d'outils</a>.</li>
  <li>L'attribut {{xulattr("alternatingbackground")}} pour l'élément {{xulelem("tree")}}n'est plus supporté, à la place, vous pouvez utiliser la pseudo-classe {{cssxref(":-moz-tree-row")}}.</li>
  <li>Le dépassement du bouton de la barre d'outils des Favoris avec anonid chevronPopup n'est plus anonyme, il a l'ID "PlacesChevron".</li>
  <li>L'élément {{xulelem("tabs")}} a maintenant la propriété {{xulprop("tabbox")}}, en remplacement de l'ancienne propriété <code>_tabbox</code>, qui a été abandonnée (et n'a jamais été documentée).</li>
  <li>Les éléments XUL {{xulelem("window")}} ont maintenant l'attribut {{xulattr("drawintitlebar")}}, si il a la valeur <code>true</code>, la zone de contenu de la fenêtre qui comprend la barre de titre, permet de dessiner dans la barre de titre.</li>
  <li>De nouveaux évènements sont disponibles : <code>TabPinned</code> et <code>TabUnpinned</code>, vous permettant de détecter <a class="internal" href="https://developer.mozilla.org/en-US/docs/Code_snippets/Tabbed_browser#Notification_when_a_tab_is_pinned_or_unpinned" title="Code_snippets/Tabbed_browser#Notification_when_a_tab_is_pinned_or_unpinned">quand des onglets sont épinglés ou relâchés</a>.</li>
  <li>le nouvel évènement <a class="internal" href="https://developer.mozilla.org/en-US/docs/Code_snippets/Tabbed_browser#Notification_when_a_tab%27s_attributes_change" title="Code_snippets/Tabbed_browser#Notification_when_a_tab%27s_attributes_change"><code>TabAttrModified</code> event</a> est envoyé lorsque l'un des attributs ({{xulattr("label")}}, {{xulattr("crop")}}, {{xulattr("busy")}}, {{xulattr("image")}}, ou {{xulattr("selected")}}) d'un onglet change.</li>
  <li>Les éléments {{xulelem("tab")}} ont maintenant l'attribut {{xulattr("pinned")}}, qui vous permet de savoir si un onglet est actuellement épinglé.</li>
  <li>La classe <code>setDirectionIndicator</code> sur les éléments {{xulelem("tree")}} n'a rien fait depuis un certain temps et maintenant elle n'est plus du tout utilisée.</li>
  <li>L'élément {{XULElem("window")}} possède maintenant l'attribut {{XULAttr("chromemargin")}} qui vous permet de définir la marge entre le chrome et le contenu de chaque côté d'une fenêtre.</li>
  <li>L'élément {{XULElem("window")}} possède maintenant l'attribut {{XULAttr("disablechrome")}}, il est utilisé pour cacher la plupart du chrome dans une fenêtre, comme pour <code>about:addons</code>.</li>
  <li>L'élément {{XULElem("window")}} possède maintenant l'attribut {{XULAttr("disablefastfind")}}, qui vous permet de désactiver la barre de recherche dans une fenêtre lorsque le contenu ne le supporte pas. Il est par exemple utilisé par le panneau de gestion des modules complémentaires.</li>
  <li>Les barres d'outils peuvent maintenant être externe aux boîtes à outils, tout en restant considérée comme un membre de {{XULElem("toolbox")}}, en configurant la propriété {{XULProp("toolboxid")}} de {{XULElem("toolbar")}}. De plus, l'élément {{XULElem("toolbox")}} a maintenant une propriété {{XULProp("externalToolbars")}}, qui liste toutes les barres d'outils qui sont considérées comme des membres de la boîte à outils.</li>
  <li>Ajout du support pour <a class="internal" href="https://developer.mozilla.org/en-US/docs/XUL/Template_Guide/Template_Logging" title="XUL/Template Guide/Template Logging">la connexion de templates XUL</a> pour permettre un débogage .</li>
</ul>
<h3 id="Changements_dans_l'UI_affectant_les_d.C3.A9veloppeurs">Changements dans l'UI affectant les développeurs</h3>
<dl>
  <dt>
    <a class="internal" href="https://developer.mozilla.org/en-US/docs/The_add-on_bar" title="The add-on bar">La barre d'add-on</a></dt>
  <dd>
    La barre d'état a été supprimée en faveur de la nouvelle barre d'add-on. Vous devrez mettre à jour votre extension l'utiliser cette option si vous aviez ajouté l'UI de la barre d'état avant.</dd>
  <dt>
    <a class="internal" href="https://developer.mozilla.org/en-US/docs/Hiding_browser_chrome" title="Hiding browser chrome">Cacher le chrome du navigateur</a></dt>
  <dd>
    Vous pouvez désormais cacher le chrome du navigateur quand il est souhaitable de le faire, par exemple, <code>about:addons</code> le fait.</dd>
</dl>
<h3 id="Storage">Storage</h3>
<h4 id="Divers_changement_dans_l'API_Storage">Divers changement dans l'API Storage</h4>
<ul>
  <li>L'interface {{interface("mozIStorageBindingParamsArray")}}a maintenant un attribut de longueur indiquant le nombre d'objets {{interface("mozIStorageBindingParams")}} dans le tableau.</li>
  <li>{{ifmethod("mozIStorageStatement", "bindParameters")}} retourne maintenant une erreur si l'interface {{interface("mozIStorageBindingParamsArray")}} spécifiée est vide.</li>
  <li>Ajout de la méthode {{ifmethod("mozIStorageConnection", "clone")}}, qui vous permet de cloner une connexion à une base de données déjà existante.</li>
  <li>Ajout de la méthode {{ifmethod("mozIStorageConnection", "asyncClose")}}, qui vous permet de fermer une connexion à une base de données de manière asynchrone, vous spécifiez un rappel pour être averti quand l'opération est terminée.</li>
  <li>Ajout de la méthode {{ifmethod("mozIStorageConnection", "setGrowthIncrement")}}, qui vous permet de spécifier le nombre de fichiers ajoutés à la fois dans une base de données, pour aider à réduire la fragmentation de SQLite.</li>
  <li>L'erreur <code>SQLITE_CONSTRAINT</code> est maintenant reportée comme <code>NS_ERROR_STORAGE_CONSTRAINT</code> au lieu de <code>NS_ERROR_FAILURE</code>.</li>
</ul>
<h3 id="XPCOM">XPCOM</h3>
<p>En plus des changements spécifiques référencés ci-dessous, il est important de noter qu'il n'y a plus aucune interfaces gelées. Elles sont toutes dégelées maintenant, indépendamment de ce que peut indiquer la documentation. Nous mettrons à jour la documentation au fil du temps.</p>
<dl>
  <dt>
    <a class="internal" href="https://developer.mozilla.org/en-US/docs/XPCOM/XPCOM_changes_in_Gecko_2.0" title="XPCOM/XPCOM changes in Gecko 2.0">Changements d'XPCOM dans Gecko 2.0</a></dt>
  <dd>
    Détails sur les modifications d'XPCOM qui impactent la compatibilité dans Firefox 4.</dd>
  <dt>
    <a class="internal" href="https://developer.mozilla.org/fr/docs/Components.utils.getGlobalForObject" title="Components.utils.getGlobalForObject">Components.utils.getGlobalForObject()</a></dt>
  <dd>
    Cette nouvelle méthode retourne l'objet global avec lequel un objet est associé, ce qui remplace un cas d'utilisation commun de <code>__parent__</code> qui est désormais retiré.</dd>
</dl>
<h3 id="Places">Places</h3>
<ul>
  <li>Les résultats de la requête peuvent maintenant être observés par plusieurs observateurs, et les requêtes peuvent être exécutées de manière asynchrone. Cela signifie qu'il y a eu des changements dans les interfaces {{interface("nsINavHistoryResult")}}, {{interface("nsINavHistoryQueryOptions")}} et {{interface("nsINavHistoryContainerResultNode")}}. De plus, l'interface {{interface("nsINavHistoryResultViewer")}} a été renommée en {{interface("nsINavHistoryResultObserver")}}.</li>
  <li>De <a class="internal" href="https://developer.mozilla.org/en-US/docs/Observer_Notifications#Places" title="Observer Notifications#Places">nouvelles notifications</a> ont été ajoutées pour permettre au navigateur de suivre la procédure d'arrêt du service Places de manière plus fiable. Parmi celles-ci, la plupart sont pour un usage interne uniquement, mais la notification <code>places-connection-closed</code> est disponible pour savoir quand le service Places a terminé sont processus d'arrêt.</li>
  <li>Le paramètre de sortie de la taille d'un tableau sur plusieurs méthodes Places est désormais optionnel.</li>
  <li>Le support de <code>&lt;menupopup type="places"&gt;</code> a été supprimé. A la place, vous devez créer et remplir un menu avec ds informations Places manuellement, plutôt que de l'avoir fait pour vous. Voir <a class="internal" href="https://developer.mozilla.org/en-US/docs/Displaying_Places_information_using_views#Menu_view" title="Displaying Places information using views#Menu view">Displaying Places information using views:&nbsp;Menu view</a> pour plus de détails.</li>
</ul>
<h3 id="Changements_dans_les_interfaces">Changements dans les interfaces</h3>
<ul>
  <li>Les interfaces {{interface("nsIDocShell")}} et {{interface("nsIWebBrowser")}} ont maintenant un nouvel attribut <code>isActive</code>, qui est utilisé pour optimiser les chemins de code pour les documents qui ne sont pas visibles.</li>
  <li>La méthode {{ifmethod("nsIMemory","isLowMemory")}} est obsolète. A la place, vous devez utilisez <a class="internal" href="https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIMemory#Low_memory_notifications" title="XPCOM Interface Reference/nsIMemory#Low memory notifications">les notifications "memory-pressure"</a> pour surveiller les situations où la mémoire est insuffisante.</li>
  <li>L'API pour la manipulation des redirections HTTP sur les canaux a changé pour qu'elles puissent être traitées de manière asynchrone. N'importe quel code qui implémente la manipulation des redirections à l'aide de {{ifmethod("nsIChannelEventSink", "onChannelRedirect")}} doit être mis à jour pour qu'il utilise {{ifmethod("nsIChannelEventSink", "asyncOnChannelRedirect")}} à la place. Cela accepte un gestionnaire de rappel qui doit être appelé quand une redirection est réussie.</li>
  <li>La méthode {{ifmethod("nsINavHistoryResultObserver", "batching")}} a été ajoutée, fournissant un moyen de grouper des opérations Places par lots, ce qui réduit le nombre de notifications de mise à jour délivrées, qui peut améliorer les performances quand les observateurs doivent effectuer certaines tâches (telles que des rafraîchissement de pages).</li>
  <li>L'interface obsolète <code>nsIPref</code> a finalement été supprimée. Si vous n'êtes pas encore passé à {{interface("nsIPrefService")}}, il est temps de le faire.</li>
  <li>Les interfaces {{interface("nsISessionStore")}} et {{interface("nsISessionStartup")}} ont reçues des changements pour la restauration des sessions. Voir la méthode {{ifmethod("nsISessionStore", "restoreLastSession")}}.</li>
  <li>Les méthodes {{ifmethod("nsIPrincipal", "subsumes")}} et {{ifmethod("nsIPrincipal", "checkMayLoad")}}, et les attributs <code>origin</code>, <code>csp</code> et <code>URI</code>, sont maintenant disponibles à partir d'un script ; avant ils n'étaient disponibles qu'à partir du code natif.</li>
  <li>L'interface {{interface("nsIPrompt")}} supporte maintenant les alertes des onglets modaux, voir <a class="internal" href="https://developer.mozilla.org/en-US/docs/Using_tab-modal_prompts" title="Using tab-modal prompts">Using tab-modal prompts</a> pour plus de détails.</li>
  <li>La méthode {{ifmethod("nsIEffectiveTLDService", "getPublicSuffixFromHost")}} rejette maintenant correctement le nom des hôtes qui commencent par un point (".").</li>
  <li>La méthode {{ifmethod("mozIJSSubScriptLoader", "loadSubScript")}} a maintenant un argument optionnel qui vous permet de définir le jeu de caractère du script, si il n'est pas fourni, on suppose que c'est le format ASCII (comme cela a toujours été précédemment).</li>
  <li>L'interface <code>nsIAccessProxy</code> a été supprimée. C'était un élément qui n'avait plus d'utilité.</li>
  <li>Les interfaces {{interface("nsIContentView")}} et {{interface("nsIContentViewManager")}} ont été ajoutées pour Firefox Mobile. Ils représentent une vue déroulant le contenu dont le contenu est actuellement utilisé par un processus séparé.</li>
  <li>L'interface {{interface("nsIDiskCacheStreamInternal")}} a été ajoutée.</li>
  <li>L'interface {{interface("nsIExternalURLHandlerService")}} a été ajoutée.</li>
  <li>L'interface {{interface("nsISyncJPAKE")}} a été ajoutée. Voir {{bug("601645")}}.</li>
</ul>
<h3 id="Gestion_de_la_m.C3.A9moire">Gestion de la mémoire</h3>
<dl>
  <dt>
    <a class="internal" href="https://developer.mozilla.org/en-US/docs/Infallible_memory_allocation" title="Infallible memory allocation">Allocation infaillible de la mémoire</a></dt>
  <dd>
    Mozilla propose désormais des répartiteur de mémoire infaillible qui sont garantis de ne pas retouner null. Vous devriez lire cet article pour connaitre leur fonctionnement et savoir comment demander l'allocation de la mémoire.</dd>
</dl>
<h3 id="Autres_changements">Autres changements</h3>
<ul>
  <li>La plupart des ressources que Firefox contient ont été combinées dans une seule archive JAR (<code>omni.jar</code>), ce qui améliore les performances au démarrage en réduisant l'I/O. Pour plus de détails, lisez <a class="internal" href="https://developer.mozilla.org/en-US/docs/About_omni.jar" title="About omni.jar">About omni.jar</a>.</li>
  <li>La préférence <code>accessibility.disablecache</code> n'est plus supportée, elle a seulement été utilisée à des fins de débogage et n'est plus employée.</li>
  <li>Les extensions dont le GUID change d'une version à une autre peuvent maintenant être mise à jour correctement.</li>
  <li>As a side effect of the removal of platform-specific directories in add-on bundles, you can no longer provide different default preferences for each platform.</li>
  <li>Par défaut, <a class="external" href="http://blog.mozilla.com/mwu/2010/09/10/extensions-now-installed-packed/" title="http://blog.mozilla.com/mwu/2010/09/10/extensions-now-installed-packed/">les extensions ne sont plus décompressées quand elles sont installées</a>, mais sont plutôt exécutées directement à partir du fichier XPI. Les extensions peuvent utiliser la propriété <a class="internal" href="https://developer.mozilla.org/en-US/docs/Install_Manifests#unpack" title="Install_Manifests#unpack">unpack</a> dans le <a class="internal" href="https://developer.mozilla.org/fr/docs/Manifestes_d'installation" title="Manifestes_d'installation">manifeste d'installation</a> pour choisir l'ancien comportement. Les extensions qui utilisent des composants binaires, des DLLs chargées avec <a class="internal" href="https://developer.mozilla.org/en-US/docs/js-ctypes" title="js-ctypes">js-ctypes</a>, des <a class="internal" href="https://developer.mozilla.org/fr/docs/Création_de_plugins_OpenSearch_pour_Firefox" title="Création_de_plugins_OpenSearch_pour_Firefox">plugins de recherche</a>, des dictionnaires et une fenêtre d'icônes doivent préciser ce dont elles ont besoin pour être décompressées. Les extensions qui <a class="internal" href="https://developer.mozilla.org/en-US/docs/XUL_School/Local_Storage#SQLite" title="XUL_School/Local_Storage#SQLite">créent des bases de données SQLite</a>, ou font des copies de fichiers du système relatifs au répertoire de l'extension, peuvent aussi avoir besoin de modifier leur code.</li>
  <li>You may now include extensions that <a href="https://developer.mozilla.org/en-US/docs/Developer_Guide/Customizing_Firefox#Including_extensions_with_your_distribution_of_Firefox" title="Developer Guide/Customizing Firefox#Including extensions with your distribution of Firefox">automatically get installed at application startup</a> within a customized Firefox.</li>
</ul>
<h2 id="Autres_changements">Autres changements</h2>
<dl>
  <dt>
    Seul le fichier chrome.manifest racine est chargé</dt>
  <dd>
    maintenant seul le fichier <code>chrome.manifest</code> racine est chargé ; si vous avez besoin de fichiers manifestes secondaires à charger, vous pouvez utilisez la commande <a class="internal" href="https://developer.mozilla.org/en-US/docs/Chrome_Registration#manifest" title="Chrome Registration#manifest"><code>manifest</code></a> dans votre fichier <code>chrome.manifest</code> racine pour les charger.</dd>
  <dt>
    Suppression du support de Gopher</dt>
  <dd>
    Le protocole Gopher n'est plus supporté nativement. L'extension <a class="external" href="https://addons.mozilla.org/addon/7685/">OverbiteFF</a> permet de continuer à le supporter.</dd>
  <dt>
    <a class="internal" href="https://developer.mozilla.org/en-US/docs/The_message_manager" title="Content process event handling">Gestion des évènement du processus Content</a></dt>
  <dd>
    Pour le support des plugins hors du processus et les multiples processus caractéristiques, une nouvelle API a été mise en place pour permettre l'envoi de messages dans les processus.</dd>
  <dt>
    <a class="internal" href="https://developer.mozilla.org/en-US/docs/Extensions/Bootstrapped_extensions" title="Extensions/Bootstrappable extensions">Bootstrap des extensions</a></dt>
  <dd>
    Vous pouvez désormais créer des extensions qui peuvent être installées, désinstallées et mises à jour sans nécessiter le redémarrage du navigateur.</dd>
  <dt>
    Suppression des plugins par défaut</dt>
  <dd>
    The default plugin has been removed. The application plugins folder has also been removed by default, however support for installing plugins via this folder still exists. Voir {{bug("533891")}}.</dd>
  <dt>
    Extension Manager remplacé par Addon Manager</dt>
  <dd>
    {{interface("nsIExtensionManager")}} a été remplacée par <a class="internal" href="https://developer.mozilla.org/en-US/docs/Addons/Add-on_Manager/AddonManager" title="Addons/Add-on_Manager/AddonManager">AddonManager</a>.</dd>
  <dt>
    Child HWNDs n'est plus utilisé</dt>
  <dd>
    Firefox ne créé plus de child HWNDs pour son usage interne sous Windows. Si vous avez codé une extension qui utilise du code natif pour manipuler ces HWNDs, votre extensions ne fonctionnera pas dans Firefox 4. Soit vous devez arrêter l'utilisation de HWND ou soit mettre votre code reposant sur HWND dans un plugin <a class="internal" href="https://developer.mozilla.org/en-US/docs/Gecko_Plugin_API_Reference" title="Gecko Plugin API Reference">NPAPI</a>. C'est un gros travail, alors si vous pouviez éviter d'utiliser HWND directement.</dd>
  <dt>
    Changements dans les gestes</dt>
  <dd>
    Les gestes par défaut ont été changés, en faisant glisser trois doigts de haut en bas sur le trackpad cela ouvrira ou fermera Firefox Panorama. Pour modifier les éléments précédents, afin d'avoir les commandes de défilement haut et défilement bas, ouvrez about:config et mettez <code>cmd_scrollBottom</code> pour <code>browser.gesture.swipe.down</code> et <code>cmd_scrollTop</code> pour <code>browser.gesture.swipe.up</code>.</dd>
</dl>
<h2 id="Voir_.C3.A9galement">Voir également</h2>
<ul>
  <li><a class="internal" href="https://developer.mozilla.org/fr/docs/Firefox_3.6_for_developers" title="Firefox 3.6 pour les développeurs">Firefox 3.6 pour les développeurs</a></li>
  <li><a class="internal" href="https://developer.mozilla.org/fr/docs/Firefox_3.5_pour_les_développeurs" title="Firefox 3.5 pour les développeurs">Firefox 3.5 pour les développeurs</a></li>
  <li><a class="internal" href="https://developer.mozilla.org/fr/docs/Firefox_3_pour_les_développeurs" title="Firefox 3 pour les développeurs">Firefox 3 pour les développeurs</a></li>
  <li><a class="internal" href="https://developer.mozilla.org/fr/docs/Firefox_2_pour_les_développeurs" title="Firefox 2 pour les développeurs">Firefox 2 pour les développeurs</a></li>
  <li><a class="internal" href="https://developer.mozilla.org/fr/docs/Firefox_1.5_pour_les_développeurs" title="Firefox 1.5 pour les développeurs">Firefox 1.5 pour les développeurs</a></li>
</ul>
Revenir à cette révision