--- title: Firefox 4 pour les développeurs slug: Mozilla/Firefox/Releases/4 tags: - Firefox - Firefox 4 translation_of: Mozilla/Firefox/Releases/4 original_slug: Mozilla/Firefox/Versions/4 ---

Firefox 4, est sorti le 22 mars 2011, améliore les performances, le support d'HTML5 et d'autres technologies du web et aussi la sécurité. Cet article fournit des informations sur cette version et sur les fonctionnalités qui sont disponibles pour les développeurs Web, les développeurs de modules complémentaires et les développeurs de la plate-forme Gecko.

Fonctionnalités pour les développeurs Web

Gecko utilise maintenant le parseur HTML5, qui corrige des bugs, améliore l'interopérabilité et les performances. Il permet également d'intégrer du contenu SVG et MathML directement dans le code HTML.

HTML

Rencontrez le parseur HTML5
Un aperçu sur ce que le parseur HTML5 représente pour vous et comment intégrer du contenu SVG et MathML dans votre code.
Les formulaires en HTML5
Un aperçu de l'amélioration de formulaires Web en HTML5. Parmi les changements on ajoute les types d'entrée dans l'élément <input>, la validation des données et d'autres modifications.
Sections HTML5
Gecko supporte à présent les nouveaux éléments HTML5 liés aux sections dans un document : <article>, <section>, <nav>, <aside>, <hgroup>, <header> et <footer>.
Attribut HTML5 hidden
Cet attribut, commun à tous les éléments, est utilisé pour cacher le contenu d'une page Web qui n'est pas encore pertinent pour l'utilisateur.
Autres éléments HTML5
Gecko supporte les nouveaux éléments HTML5 suivants : <mark>, <figure>, et <figcaption>.
WebSockets
Un guide pour utiliser la nouvelle API WebSockets pour la communication entre une application web et un serveur en temps réel. A noter que WebSockets tel qu'implémenté dans Firefox 4 n'est pas compatible avec la norme finale, et ne devrait pas être utilisé.

Améliorations de Canvas

Les modifications suivantes ont étés apportées à l'interface CanvasRenderingContext2D pour permettre à l'implémentation de <canvas> d'être en conformité avec la spécification :

Autres changements HTML

CSS

Transitions CSS
Le support des transitions CSS est disponible dans Firefox 4.
Les valeurs calculées en CSS
Le support de -moz-calc a été ajouté. Cela permet de spécifier des valeurs de <length> comme des expressions mathématiques.
Groupement de sélecteurs
Le support de :-moz-any pour grouper les sélecteurs et factoriser des combinateurs.
Support subrectangle pour background-image
La propriété -moz-image-rect permet d'utiliser des subrectangles en tant que background-image.
Propriétés CSS tactile
Le support des propriétés tactiles a été ajouté. Plus de détails plus tard.
Utilisation arbitraires d'élements comme fond
Vou pouvez utiliser la fonction CSS -moz-element et la fonction DOM document.mozSetImageElement() pour une utilisation arbitraire des éléments HTML comme fond.
Sélecteur :visited et confidentialité
Des modifications ont étés apportées sur les informations qui peuvent être obtenues sur le style des liens visités en utilisant les sélecteurs CSS. Certaines applications Web peuvent être affectées.

Nouvelles propriétés CSS

Propriété Description
-moz-font-feature-settings Permet de personnaliser les fonctionnalités avancées des polices OpenType.
-moz-tab-size Spécifie la largeur d'un espace de tabulation (U+0009) lors du rendu du texte.
resize Permet de modifier les dimensions d'un élément.

Nouvelles pseudo-classes CSS

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

Nouveaux pseudo-selectors CSS

Pseudo-selector Description
:-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
:-moz-any Permet de grouper les sélecteurs et de factoriser les combinateurs.
-moz-calc Permet de spécifier des valeurs de <length> comme des expressions mathématiques.
-moz-element Permet d'utiliser un élément arbritaire de fond pour background-image and background.
-moz-image-rect Permet d'utiliser un subrectangle d'une image comme background-image or background.

Propriétés CSS renommées

Ancien nom Nouveau nom Notes
-moz-background-size background-size Le nom -moz-background-size n'est plus supporté.
-moz-border-radius 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 box-shadow

Divers changements CSS

Graphisme et vidéo

WebGL
La norme WebGL (encore en développement) est maintenant supportée par Firefox.
Optimisation des performances graphique
Trucs et astuces pour profiter le maximum des performances graphiques et vidéo dans Firefox 4.
Support de WebM
Le nouveau format vidéo ouvert WebM est supporté par Gecko 2.0.
Animation SVG avec SMIL
Les animations SVG avec SMIL sont désomais supportées.
Utilisation de SVG comme image ou arrière-plan CSS
Vous pouvez maintenant utilisez SVG avec l'élément <img>, ainsi qu'avec CSS background-image.
Attribut Media buffered
L'attribut buffered sur les éléments <video> and <audio> est maintenant supporté, vous permettant de déterminer quel fichier multimédia a été tamponné. L'interface DOM TimeRanges a été mise en place pour ce support.
Attribut Media preload
L'attribut preload de la spécification HTML5 a été implémenté, remplaçant l'attribut autobuffer précédemment mis en place (et qui n'est plus pris en charge). Cela affecte les éléments <video> et <audio> ainsi que l'interface nsIDOMHTMLMediaElement.
Amélioration du positionnement du texte SVG
Vous pouvez maintenant spécifier des listes des valeurs pour les propriétés x, y, dx, and dy sur les éléments SVG <text> et <tspan>. Cela vous permet de contrôler le positionnement de chaque caractère d'une chaîne, individuellement.

DOM

Tableaux JavaScript typés
Ajout du support pour les tableaux JavaScript typés, cela vous permet de manipuler des tampons contenant des données brutes en utilisant des types de données natives. Plusieurs API utilisent ça, y compris l'API File, WebGL et WebSockets.
Obtention des limites des rectangles limites
L'objet Range a désormais les méthodes range.getClientRects() et range.getBoundingClientRect().
Capture des évènements de la souris sur des éléments quelconques
Ajout du support des APIs setCapture() et releaseCapture() originaires d'Internet Explorer. Voir bug 503943.
Manipulation de l'historique du navigateur
L'objet de l'historique déjà existant et disponible via l'objet window.history, supporte maintenant les nouvelles méthodes HTML5 pushState() et replaceState().
Animations utilisant MozBeforePaint
Un nouvel évènement a été ajouté, qui, avec l'aide de la méthode window.mozRequestAnimationFrame() et de la propriété window.mozAnimationStartTime, offre un moyen de créer des animations qui sont synchronisées avec les autres.
Evènements touch et multi-touch
Ajout du support des évènements touch et multi-touch.

Changement des interfaces DOM d'éléments HTML

Plusieurs éléments HTML ont vu leur interface DOM modifier, conformément à la spécification HTML5.

Interface dans Firefox 3.6 Interface dans Firefox 4 Elements HTML
HTMLSpanElement HTMLElement <abbr>, <acronym>, <address>, <b>, <bdo>, <big>, <blink>, <center>, <cite>, <code>, <dd>, <dfn>, <dt>, <em>, <i>, <kbd>, <listing>, <nobr>, <plaintext>, <s>, <samp>, <small>, <strike>, <strong>, <sub>, <sup>, , <tt>, <u>, <var>, <xmp>
HTMLDivElement HTMLElement <noembed>, <noframes>, <noscript>
HTMLWBRElement HTMLElement <wbr>

Divers changements DOM

Securité

Content Security Policy (CSP)
Content Security Policy (CSP) est une proposition de Mozilla, conçu pour aider les concepteurs de sites Web et les administrateurs de serveur en spécifiant comment le contenu sur leurs sites Web agit. L'objectif est d'aider à détecter et à atténuer les attaques incluant le cross-site scripting et des attaques par injection de données.
HTTP Strict Transport Security
HTTP Strict Transport Security est un dispositif de sécurité qui permet à un site web d'indiquer au navigateur d'utiliser une connexion sécurisée (HTTPS) à la place du protocole HTTP.
L'en-tête de réponse X-FRAME-OPTIONS
L'en-tête de réponse X-FRAME-OPTIONS HTTP introduite dans Internet Explorer 8 est désormais supportée par Firefox. Cela permet aux sites d'indiquer si leurs pages peuvent être utilisées dans des frames ou si l'utilisation de la page doit être restreint.
Changement de la chaîne de l'agent utilisateur
C'est un moyen de réduire la quantité et l'entropie des données envoyées dans les requêts HTPP (voir bug 572650), le niveau de cryptage et le signe de la langue ont été enlevés de la chaîne de l'agent utilisateur.

JavaScript

Pour un aperçu des changements effectués dans JavaScript 1.8.5, voir New in JavaScript 1.8.5. Dans Firefox 4, JavaScript a un plus grand respect de la norme ECMAScript 5.

Outils pour les développeurs

Utilisation de la Console Web
La Console Web est un outil qui aide le débogage.
Gecko 2.0 note
(Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1)

A partir de Firefox 4, la Console d'erreurs est désactivée par défaut. Vous pouvez la ré-activer en modifiant la préférence devtools.errorconsole.enabled à true et en redémarrant le navigateur.

Changements pour les développeurs de Mozilla et de modules complémentaires

Pour des conseils utiles sur la mise à jour des extensions existantes pour Firefox 4, voir Updating extensions for Firefox 4. Il y a plusieurs changements importants qui cassent la compatibilité avec les add-ons, donc n'oubliez pas de lire cet article.

Si vous développez des thèmes, vous devez lire Theme changes in Firefox 4 afin de connaître certains changements importants.

Modules de code JavaScript

Services.jsm
Le module de code Services.jsm fournit des accesseurs qui font qu'il est facile d'obtenir des références sur les services couramment utilisés, tels que le service de préférences ou le médiateur fenêtre.
API JS-ctypes
L'API JS-ctypes permet d'appeler une bibliothèque de fonctions étrangère C-compatible sans utiliser XPCOM.
Gestionnaire de modules complémentaires
Le nouveau gestionnaire de modules complémentaires fournit des informations sur les modules, permet la modifications des options, l'installation et la suppression des modules.
PopupNotifications.jsm
Le nouveau module des notifications popup facilite la présentation des notifications non-modales. Vous pouvez voir comment utiliser cette API dans Using popup notifications.
Chargement des modules de code à partir des URLs chrome:
Vous pouvez maintenant charger des modules de code à partir d'URLs chrome:, même à l'intérieur de fichiers JAR.
DownloadLastDir.jsm
Le module de code DownloadLastDir.jsm fournit la variable gDownloadLastDir qui contient une chaîne qui permet de connaître le chemin du répertoire dans lequel le dernier téléchargement s'est produit. Ce module gère les questions liées à la navigation privée.
Mesurer les performances en utilisant le module de code PerfMeasurement.jsm code module
Le module de code PerfMeasurement.jsm propose une API qui mesure les performances au niveau du CPU dans du code JavaScript.

Divers changements dans les modules de code

Changements DOM

ChromeWorker
Un nouveau type de travailleur pour du code privilégié, ce qui permet l'utilisation de choses comme js-ctypes à partir des travailleurs dans les extensions et le code d'une application.
Evènements tactile
Ajout du support de l'évènement tactile (non-standard), cela permet de pouvoir suivre plusieurs doigts qui se déplacent en même temps sur un écran tactile.

Autres changements DOM

XUL

Changements pour l'élément tabbrowser

Plusieurs changements ont été apportés à l'élément <xul:tabbrowser> ce qui impacte les extensions qui interagissent avec les onglets. En plus du support de app tabs, ces changements on aussi modifiés la barre d'onglet en une barre d'outils standard, ce qui permet à l'utilisateur de faire glisser les boutons dans la barre d'outils.

Changements pour les popups

Suppression du support à distance de XUL

Le support à distance de XUL n'est plus supporté, cela affecte les documents XUL qui étaient servis par HTTP, en outre, vous ne pouvez plus charger des documents XUL en utilisant l'URL file:// sauf en créant une préférence dom.allow_XUL_XBL_for_file avec la valeur true. Cependant, il y a une fonctionnalité de liste blanche qui peut être utilisée pour permettre à des domaines spécifiques de charger XUL à distance. L'extension Remote XUL Manager vous permet de gérer cette liste blanche.

Divers changements XUL

Changements dans l'UI affectant les développeurs

La barre d'add-on
La barre d'état a été supprimée en faveur de la nouvelle barre d'add-on. Vous devrez mettre à jour votre extension l'utiliser cette option si vous aviez ajouté l'UI de la barre d'état avant.
Cacher le chrome du navigateur
Vous pouvez désormais cacher le chrome du navigateur quand il est souhaitable de le faire, par exemple, about:addons le fait.

Storage

Divers changement dans l'API Storage

XPCOM

En plus des changements spécifiques référencés ci-dessous, il est important de noter qu'il n'y a plus aucune interfaces gelées. Elles sont toutes dégelées maintenant, indépendamment de ce que peut indiquer la documentation. Nous mettrons à jour la documentation au fil du temps.

Changements d'XPCOM dans Gecko 2.0
Détails sur les modifications d'XPCOM qui impactent la compatibilité dans Firefox 4.
Components.utils.getGlobalForObject()
Cette nouvelle méthode retourne l'objet global avec lequel un objet est associé, ce qui remplace un cas d'utilisation commun de __parent__ qui est désormais retiré.

Places

Changements dans les interfaces

Gestion de la mémoire

Allocation infaillible de la mémoire
Mozilla propose désormais des répartiteur de mémoire infaillible qui sont garantis de ne pas retouner null. Vous devriez lire cet article pour connaitre leur fonctionnement et savoir comment demander l'allocation de la mémoire.

Autres changements

Autres changements

Seul le fichier chrome.manifest racine est chargé
maintenant seul le fichier chrome.manifest racine est chargé ; si vous avez besoin de fichiers manifestes secondaires à charger, vous pouvez utilisez la commande manifest dans votre fichier chrome.manifest racine pour les charger.
Suppression du support de Gopher
Le protocole Gopher n'est plus supporté nativement. L'extension OverbiteFF permet de continuer à le supporter.
Gestion des évènement du processus Content
Pour le support des plugins hors du processus et les multiples processus caractéristiques, une nouvelle API a été mise en place pour permettre l'envoi de messages dans les processus.
Bootstrap des extensions
Vous pouvez désormais créer des extensions qui peuvent être installées, désinstallées et mises à jour sans nécessiter le redémarrage du navigateur.
Suppression des plugins par défaut
The default plugin has been removed. The application plugins folder has also been removed by default, however support for installing plugins via this folder still exists. Voir bug 533891.
Extension Manager remplacé par Addon Manager
nsIExtensionManager a été remplacée par AddonManager.
Child HWNDs n'est plus utilisé
Firefox ne créé plus de child HWNDs pour son usage interne sous Windows. Si vous avez codé une extension qui utilise du code natif pour manipuler ces HWNDs, votre extensions ne fonctionnera pas dans Firefox 4. Soit vous devez arrêter l'utilisation de HWND ou soit mettre votre code reposant sur HWND dans un plugin NPAPI. C'est un gros travail, alors si vous pouviez éviter d'utiliser HWND directement.
Changements dans les gestes
Les gestes par défaut ont été changés, en faisant glisser trois doigts de haut en bas sur le trackpad cela ouvrira ou fermera Firefox Panorama. Pour modifier les éléments précédents, afin d'avoir les commandes de défilement haut et défilement bas, ouvrez about:config et mettez cmd_scrollBottom pour browser.gesture.swipe.down et cmd_scrollTop pour browser.gesture.swipe.up.

Voir également