Firefox 4 note de version pour les développeurs
Firefox 4, est sorti le 22 mars 2011, améliore les performances, la prise en charge du 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éveloppeur·euse·s web, les développeur·euse·s de modules complémentaires et les développeur·euse·s de la plate-forme Gecko.
Fonctionnalités pour les développeur·euse·s Web
Gecko utilise désormais l'analyseur 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
- Formulaires web
-
Un aperçu des améliorations apportées aux formulaires web. Parmi ces changements figurent l'ajout de nouveaux types pour l'élément
<input>, la validation des données et d'autres améliorations. - Sections HTML5
-
Gecko prend désormais en charge les nouveaux éléments HTML5 relatifs aux sections d'un document :
<article>,<section>,<nav>,<aside>,<hgroup>,<header>et<footer>. -
Cet attribut, commun à tous les éléments, est utilisé pour masquer le contenu d'une page web qui n'est pas actuellement pertinent pour l'utilisateur·ice.
- Autres éléments HTML5
-
Gecko prend désormais également en charge les nouveaux éléments HTML5 suivants :
<mark>,<figure>, et<figcaption>. - Les WebSockets
-
Un guide pour utiliser la nouvelle API WebSockets pour la communication en temps réel entre une application web et un serveur. Notez que les WebSockets tels qu'implémentés dans Firefox 4 ne sont pas compatibles avec la norme finale et ne devraient généralement pas être utilisés.
Améliorations de Canvas
Les modifications suivantes ont été apportées à l'interface CanvasRenderingContext2D pour permettre à l'implémentation de <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'exceptionINDEX_SIZE_ERR. - La spécification de valeurs non finies lors de l'appel de
createLinearGradient()etcreateRadialGradient()lance désormaisNOT_SUPPORTED_ERRau lieu deSYNTAX_ERR. - Le réglage de
miterLimitpour une valeur négative ne lance plus une exception, mais ignore plutôt les valeurs non-positives. - Le réglage de
lineWidthpour une valeur négative ne lance plus une exception, mais ignore plutôt les valeurs non-positives. - La méthode
putImageData()prend désormais en charge les paramètres optionnelsdirtyX,dirtyY,dirtyWidthetdirtyHeight.
Autres changements HTML
- L'élément
<textarea>est désormais redimensionnable par défaut ; pour le désactiver, vous pouvez utiliser la propriété CSSresize. canvas.getContextetcanvas.toDataURLne lancent plus d'exceptions lorsqu'ils sont appelés avec des arguments non reconnus.- L'élément
<canvas>prend désormais en charge la méthode spécifique à Mozilla,mozGetAsFile(), qui permet d'obtenir un fichier basé sur l'image d'un contenu canvas. VoirHTMLCanvasElementpour les détails. canvas2dcontext.lineCapetcanvas2dcontext.lineJoinne lancent plus d'exceptions lorsqu'ils sont réglés avec une valeur non reconnue.canvas2dcontext.globalCompositeOperationne lance plus d'exception lorsqu'il est réglé avec une valeur non reconnue et ne prend plus en charge la valeurdarker, qui n'est pas un standard.- La prise en charge de l'élément obsolète
<spacer>, qui était absent de tous les autres navigateurs, a été enlevée. - L'élément
<isindex>, qui était créé parDocument.createElement(), est désormais créé comme un simple élément sans propriétés ou méthodes. - Gecko prend désormais en charge l'appel
click()sur l'élément<input>pour ouvrir le sélecteur de fichiers. Voir l'exemple dans l'article Utiliser des fichiers à partir d'applications web. - L'élément
<input>prend en charge un nouvel attributmozactionhint, qui permet de définir l'étiquette de la touche Entrée sur un clavier virtuel. - L'élément
<script>à l'intérieur des éléments<iframe>,<noembed>et<noframes>sont désormais 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
-
La prise en charge des transitions CSS est disponible dans Firefox 4.
- Les valeurs calculées en CSS
-
La prise en charge de
-moz-calca été ajoutée. Cela permet de définir des valeurs de<length>comme des expressions mathématiques. - Groupement de sélecteurs
-
La prise en charge de
:-moz-anypour grouper les sélecteurs et factoriser des combinateurs. - Prise en charge des sous-rectangles pour
background-image -
La fonction
-moz-image-rect()permet d'utiliser des sous-rectangles en tant quebackground-image. - Propriétés CSS tactiles
-
La prise en charge des propriétés tactiles a été ajoutée. Plus de détails plus tard.
- Utilisation arbitraire d'élements comme fond
-
Vous pouvez utiliser la fonction CSS
-moz-elementet la fonction DOMdocument.mozSetImageElement()pour une utilisation arbitraire des éléments HTML comme fond. - Sélecteur
:visitedet confidentialité -
Des modifications ont été 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 |
Définit 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-classe | Description |
|---|---|
:-moz-handler-crashed |
Utilisé pour le style d'un élément dont le modules complémentaire 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 définissent pas l'attribut required. |
:required |
Automatiquement appliquée aux champs <input> qui définissent l'attribut required. |
:valid |
Automatiquement appliquée aux champs <input> dont le contenu a été validé avec succès. |
Nouveaux pseudo-sélecteurs CSS
| Pseudo-sélecteur | Description |
|---|---|
:-moz-focusring |
Permet de définir 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 définir des valeurs de <length> comme des expressions mathématiques. |
-moz-element() |
Permet d'utiliser un élément arbritaire de fond pour background-image et background. |
-moz-image-rect() |
Permet d'utiliser un subrectangle d'une image comme background-image ou 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 pris en charge. |
-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
- La propriété
text-shadowplafonne désormais son rayon de flou à 300px, pour des raisons de bon sens et de performances. - La propriété
overflowne s'applique plus au groupe d'éléments de tableaux (<thead>,<tbody>, and<tfoot>). - La propriété
-moz-appearanceprend désormais en charge la valeur-moz-win-borderless-glass, qui s'applique à un élément Aero sans bordure. - La fonctionnalité de média
-moz-device-pixel-ratioa été ajoutée, permettant l'utilisation de pixels de l'appareil par ratio de pixels CSS qui est utilisé dans les requêtes média. - La manipulation des unités CSS
<length>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 en développement est désormais prise en charge par Firefox.
- Prise en charge de WebM
-
Le nouveau format vidéo ouvert WebM (angl.) est prise en charge par Gecko 2.0.
- Animation SVG avec SMIL
-
Les animations SVG avec SMIL sont désormais prises en charge.
- Utilisation de SVG comme image ou arrière-plan CSS
-
Vous pouvez désormais utiliser SVG avec l'élément
<img>, ainsi qu'avec CSSbackground-image. - Attribut Media
buffered -
L'attribut
bufferedsur les éléments<video>et<audio>est désormais pris en charge, vous permettant de déterminer quel fichier multimédia a été tamponné. L'interface DOMTimeRangesa été mise en place pour ce support. - Attribut Media
preload -
L'attribut
preloadde la spécification HTML5 a été implémenté, remplaçant l'attributautobufferprécédemment mis en place (et qui n'est plus pris en charge). Cela affecte les éléments<video>et<audio>ainsi que l'interfacensIDOMHTMLMediaElement. - Amélioration du positionnement du texte SVG
-
Vous pouvez désormais définir des listes des valeurs pour les propriétés
x,y,dx, anddysur les éléments SVG<text>et<tspan>. Cela vous permet de contrôler le positionnement de chaque caractère d'une chaîne de caractères, individuellement.
DOM
- Tableaux JavaScript typés
-
Ajout de la prise en charge 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
Rangea désormais les méthodesrange.getClientRects()etrange.getBoundingClientRect(). - Capture des évènements de la souris sur des éléments quelconques
-
Ajout de la prise en charge des APIs
setCapture()etreleaseCapture()originaires d'Internet Explorer. Voir bogue Firefox 503943 (angl.). -
L'objet de l'historique déjà existant et disponible avec l'objet
Window.historyprend désormais en charge les nouvelles méthodes HTML5pushState()etreplaceState(). - 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. - Évènements touch et multi-touch
-
Ajout de la prise en charge 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 | HTML Element |
|---|---|---|
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
- L'enveloppement d'un élément
<textarea>peut désormais être commandé par l'attribut DOMwrap. bogue Firefox 41464 (angl.) - Les éléments
<script>créés avecDocument.createElement()et insérés dans un document, se comportent désormais conformément à la spécification HTML5. Les scripts avec l'attributsrcs'exécute dès que possible (sasn maintenir la commande) et les scripts sans l'attributsrcs'exécute de manière simultanée. Pour faire des scripts d'insertion de scripts qui ont l'attributsrcqui exécute l'ensemble dans l'ordre d'insertion, pour eux.async=false. - Les objets DOM
Fileproposent désormais la propriétéurl. - Prise en charge de
FormDatapourXMLHttpRequest. - La propriété
HTMLElement.isContentEditablea été implémentée. - La propriété
Document.currentScriptvous permet de déterminer quel script de l'élément<script>est en cours d'exécution. les nouveaux évènementsbeforescriptexecuteetafterscriptexecutesont déclenchés avant et après l'éxécution d'un élément script. - Ajout de la propriété
mozSourceNodeà l'objetDataTransfer. - Ajout de la méthode
Selection.modify()à l'objetSelection, ce qui vous permet de facilement modifier la sélection de texte courant ou la position du curseur dans une fenêtre de navigateur. - La prise en charge de l'objet
window.directorieset de la fonctionnalitédirectoriespourwindow.open, qui ne sont plus pris en charge dans les autres navigateurs, ont été enlevés. Utiliserpersonalbarà la place. bogue Firefox 474058 (angl.) - La propriété
MouseEvent.mozInputSourcea é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
readystatechangedeDocumenta été implémenté. - La méthode
Document.createElement()n'accepte plus<et>autour du nom de balise en mode quirks. - Les méthodes
Element.setCapture()etDocument.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ènementmousedownsoit survenu. - La propriété
window.mozPaintCounta été ajoutée, elle vous permet de déterminer le nombre de fois qu'un document a été peint. C'est particulièrement utile lors des tests de performance de votre application web. - Le signe de la langue a été supprimé de
Navigator.appVersionetNavigator.userAgent. UtilisezNavigator.languageou l'en-têteAccept-Languageà la place. bogue Firefox 572656 (angl.) - L'objet
XMLHttpRequestexpose désormais la réponse comme un tableau JavaScript typé et aussi comme une chaîne de caractères, en utilisant la propriété, spécifique de Gecko,mozResponseArrayBuffer. - Les évènements de sourcis incluent désormais une propriété
mozPressureindiquant le niveau de pression supporté sur les périphériques d'entrée sensibles à la pression. - Les méthodes
URL.createObjectURL()etURL.revokeObjectURL()vous permettent de créer des URLs d'objet qui renvoient à des fichiers locaux. - La méthode
DOMImplementation.createHTMLDocument()vous permet de créer un nouveau document HTML. Node.mozMatchesSelector()retourne désormais l'exceptionSYNTAX_ERRsi la chaîne de caractères du sélecteur définie est invalide, au lieu de retournerfalse.- Vous pouvez désormais 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'. Voirstylepour plus de détails. - Le document racine a désormais un attribut
privatebrowsingmode(angl.) 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
window.getComputedStyle()est désormais optionnel, car elle l'est dans tous les autres navigateurs. - L'objet DOM
StorageEventest désormais conforme à la dernière version de la spécification. - Le délai minimum autorisé pour la méthode
setTimeout()est désormais la préférencedom.min_timeout_value. - L'évènement
MozAfterPaint(angl.) 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 concepteur·ice·s de sites Web et les administrateur·ice·s de serveur en définissant comment le contenu sur leurs sites Web agit. L'objectif est d'aider à détecter et à atténuer les attaques incluant les scripts intersites 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 pris en charge 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 restreinte.
- Changement de la chaîne de caractères 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 le bogue Firefox 572650 (angl.)), le niveau de cryptage et le signe de la langue ont été enlevés de la chaîne de caractères de l'agent utilisateur.
JavaScript
Pour un aperçu des changements effectués dans JavaScript 1.8.5, voir Nouveautés dans JavaScript 1.8.5. Dans Firefox 4, JavaScript a un plus grand respect de la norme ECMAScript 5.
Outils pour les développeur·euse·s
- Utiliser la Console Web
-
L'outil Console Web est un outil de débogage utile pour les développeur·euse·s web et d'extensions.
Note :
La Console d'erreurs est désactivée par défaut à partir de Gecko 2.0. 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éveloppeur·euse·s de Mozilla et de modules complémentaires
Pour des conseils utiles sur la mise à jour des extensions existantes pour Firefox 4, voir Mise à jour des extensions pour 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 Changements des thèmes dans Firefox 4 (angl.) afin de connaître certains changements importants.
Modules de code JavaScript
- Services.jsm (angl.)
-
Le module de code
Services.jsmfournit 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 (angl.)
-
L'API JS-ctypes permet d'appeler une bibliothèque de fonctions étrangère C-compatible sans utiliser XPCOM.
- Gestionnaire de modules complémentaires (angl.)
-
Le nouveau gestionnaire de modules complémentaires fournit des informations sur les modules, permet la modification des options, l'installation et la suppression des modules.
- PopupNotifications.jsm (angl.)
-
Le nouveau module des notifications popup facilite la présentation des notifications non-modales. Vous pouvez voir comment utiliser cette API dans Utiliser des fenêtres intrusives de notification (angl.).
- Chargement des modules de code à partir des URLs
chrome:(angl.) -
Vous pouvez désormais 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(angl.) fournit la variablegDownloadLastDirqui contient une chaîne de caractères 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 (angl.)
-
Le module de code
PerfMeasurement.jsm(angl.) propose une API qui mesure les performances au niveau du CPU dans du code JavaScript.
Divers changements dans les modules de code
- Le module de code
NetUtil.jsmoffre désormais la méthodereadInputStreamToString(), qui permet de lire des octets arbitraires à partir d'un flux dans une chaîne de caractères, même si le flux inclut des zéros. - Le module de code XPCOMUtils.jsm propose désormais les fonctions d'aide
IterSimpleEnumerator()etIterStringEnumerator()pour parcourir les énumérateurs XPCOM. - Vous pouvez désormais utiliser les workers dans les modules de code JavaScript (angl.).
Changements DOM
ChromeWorker-
Un nouveau type de travailleur pour du code privilégié, ce qui permet l'utilisation de choses comme js-ctypes (angl.) à partir des travailleurs dans les extensions et le code d'une application.
- Évènements tactiles
-
Ajout de la prise en charge 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 » (angl.) 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 <xul:tabbrowser> ce qui impacte les extensions qui interagissent avec les onglets. En plus de la prise en charge des onglets d'application, ces changements ont aussi modifié la barre d'onglet en une barre d'outils standard, ce qui permet à l'utilisateur·ice de faire glisser les boutons dans la barre d'outils.
- Les évènements
TabClose,TabSelectetTabOpennon plus de bulle jusqu'à l'élément<xul:tabbrowser>(gBrowser). Les récepteurs d'évènements pour ces évènements doivent être ajoutés àgBrowser.tabContainerplutôt qu'àgBrowserdirectement. - Le menu contextuel d'un onglet n'est plus un enfant anonyme de
<xul:tabbrowser>. Il peut donc être superposé directement avec les couches XUL. On peut également y accéder directement depuis JavaScript avecgBrowser.tabContextMenu. Voir cet article de blog (angl.)pour plus de détails. - La nouvelle propriété
visibleTabsa été ajoutée pour vous permettre de faire un tableau des onglets visibles, cela vous permet de déterminer quels onglets sont visibles dans l'ensemble de l'onglet courant. Par exemple, par Firefox Panorama l'utilise. - Ajout de la nouvelle méthode
showOnlyTheseTabs, qui est utilisée par Firefox Panorama. - Ajout de la nouvelle méthode
getIcon, qui vous permet d'obtenir le favicon d'un onglet sans avoir besoin de le remonter de l'élément<xul:browser>. - Ajout de la nouvelle propriété
tabbrowser.tabs, qui vous permet d'obtenir facilement une liste des onglets dans l'élement<xul:tabbrowser>. - Les nouvelles méthodes
pinTabetunpinTabvous 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
getTabModalPromptBoxet de l'attributtabmodalPromptShowingà<xul:tabbrowser>pour la prise en charge des alertes majeures des onglets.
Changements pour les fenêtres intrusives
- L'élément
<xul:popup>n'est plus supporté, vous devez utiliser<xul:menupopup>à la place. (Si vous continuez à utiliserpopup, vous allez rencontrer des problèmes, car l'élément n'a plus de signification particulière. par exemple,<xul:menuseparator>peut apparaître transparent lorsqu'il est utilisé avec<xul:popup>.) - L'élément XUL
<xul:menupopup>a désormais une propriététriggerNode, qui indique le noeud sur lequel l'évènement s'est produit et qui a causé l'ouverture de la fenêtre intrusive. Cela a aussi nécessité l'ajout d'un paramètre de l'évènement déclencheur de la méthodeopenPopup. En plus de ça, la propriétéanchorNodea été ajoutée, elle retourne l'ancre définie lorsque la fenêtre intrusive a été créé. - L'élément
<xul:panel>propose désormais les attributspanel.fadeetpanel.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 XUL distant n'est plus pris en charge ; cela concerne les documents XUL diffusés par HTTP ; de plus, vous ne pouvez plus charger de documents XUL à l'aide d'URL file://, à moins de créer la préférence dom.allow_XUL_XBL_for_file et de la définir sur true. Il existe toutefois une fonctionnalité de liste blanche qui permet d'autoriser certains domaines à charger du XUL distant.
Divers changements XUL
- L'attribut
readonlyfonctionne désormais correctement pour les champs XBL. - L'élément
<xul:resizer>vous permet désormais d'utiliser l'attributelementpour définir l'élément à redimensionner, au lieu de redimensionner la fenêtre. - L'élément
<xul:resizer>a désormais un attributtypequi vous permet de définir 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 utiliser la nouvelle pseudo-classe:-moz-window-inactiveafin d'attribuer différents styles aux fenêtres en arrière-plan. - L'attribut
emptytextest désormais obsolète, vous devez utiliezplaceholderà la place. - L'élément
<xul:window>propose désormais un attributaccelerated; quand il est vrai, le gestionnaire de la couche matérielle est autorisé à accélérer la fenêtre. - L'élément
<xul:stack>prend désormais en charge les attributsbottometright. - Les évènements sont désormais tirés lors de la personnalisation de
<xul:toolbox>, vous permettant de détecter les changements sur les barres d'outils. - L'attribut
alternatingbackgroundpour l'élément<xul:tree>n'est plus pris en charge, à la place, vous pouvez utiliser la pseudo-classe:-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
<xul:tabs>a désormais la propriété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
<xul:window>ont désormais l'attributdrawintitlebar, s'il a la valeurtrue, 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 :
TabPinnedetTabUnpinned, vous permettant de détecter quand des onglets sont épinglés ou relâchés. - le nouvel évènement
TabAttrModifiedest envoyé lorsque l'un des attributs (label,crop,busy,image, ouselected) d'un onglet change. - Les éléments
<xul:tab>ont désormais l'attributpinned, qui vous permet de savoir si un onglet est actuellement épinglé. - La classe
setDirectionIndicatorsur les éléments<xul:tree>n'a rien fait depuis un certain temps et désormais elle n'est plus du tout utilisée. - L'élément
<xul:window>possède désormais l'attributchromemarginqui vous permet de définir la marge entre le chrome et le contenu de chaque côté d'une fenêtre. - L'élément
<xul:window>possède désormais l'attributdisablechrome, il est utilisé pour cacher la plupart du chrome dans une fenêtre, comme pourabout:addons. - L'élément
<xul:window>possède désormais l'attributdisablefastfind, 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 désormais être externes aux boîtes à outils, tout en restant considérée comme un membre de
<xul:toolbox>, en configurant la propriététoolboxidde<xul:toolbar>. De plus, l'élément<xul:toolbox>a désormais une propriété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éveloppeur·euse·s
- La barre d'extension
-
La barre d'état a été supprimée en faveur de la nouvelle barre d'add-on. Vous devez mettre à jour votre extension l'utiliser cette option si vous aviez ajouté l'UI de la barre d'état avant.
-
Vous pouvez désormais cacher le chrome du navigateur quand il est souhaitable de le faire, par exemple,
about:addonsle fait.
Stockage
Divers changement dans l'API Storage
- L'interface
mozIStorageBindingParamsArraya désormais un attribut de longueur indiquant le nombre d'objetsmozIStorageBindingParamsdans le tableau. mozIStorageStatement.bindParameters()retourne désormais une erreur si l'interfacemozIStorageBindingParamsArraydéfinie est vide.- Ajout de la méthode
mozIStorageConnection.clone(), qui vous permet de cloner une connexion à une base de données déjà existante. - Ajout de la méthode
mozIStorageConnection.asyncClose(), qui vous permet de fermer une connexion à une base de données de manière asynchrone, vous définissez un rappel pour être averti quand l'opération est terminée. - Ajout de la méthode
mozIStorageConnection.setGrowthIncrement(), qui vous permet de définir 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_CONSTRAINTest désormais reportée commeNS_ERROR_STORAGE_CONSTRAINTau lieu deNS_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 interface gelée. Elles sont toutes dégelées maintenant, indépendamment de ce que peut indiquer la documentation. Nous mettons à jour la documentation au fil du temps.
- Changements d'XPCOM dans Gecko 2.0 (angl.)
-
Détails sur les modifications d'XPCOM qui impactent la compatibilité dans Firefox 4.
Components.utils.getGlobalForObject()(angl.)-
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 désormais ê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
nsINavHistoryResult,nsINavHistoryQueryOptionsetnsINavHistoryContainerResultNode. De plus, l'interfacensINavHistoryResultViewera été renommée ennsINavHistoryResultObserver. - De nouvelles notifications (angl.) 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-closedest 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 Afficher des informations sur les lieux à l'aide des vues : Menu vue (angl.) pour plus de détails.
Changements dans les interfaces
- Les interfaces
nsIDocShelletnsIWebBrowseront désormais un nouvel attributisActive, qui est utilisé pour optimiser les chemins de code pour les documents qui ne sont pas visibles. - La méthode
nsIMemory.isLowMemory()est obsolète. A la place, vous devez utiliser les notifications « memory-pressure » (angl.) 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
nsIChannelEventSink.onChannelRedirect()doit être mis à jour pour qu'il utilisensIChannelEventSink.asyncOnChannelRedirect()à la place. Cela accepte un gestionnaire de rappel qui doit être appelé quand une redirection est réussie. - La méthode
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îchissements de pages). - L'interface obsolète
nsIPrefa finalement été supprimée. Si vous n'êtes pas encore passé ànsIPrefService, il est temps de le faire. - Les interfaces
nsISessionStoreetnsISessionStartupont reçues des changements pour la restauration des sessions. Voir la méthodensISessionStore.restoreLastSession(). - Les méthodes
nsIPrincipal.subsumes()etnsIPrincipal.checkMayLoad(), et les attributsorigin,cspetURI, sont désormais disponibles à partir d'un script ; avant ils n'étaient disponibles qu'à partir du code natif. - L'interface
nsIPromptprend désormais en charge les alertes des onglets contextuels, voir Utiliser les invites d'onglet contextuels (angl.) pour plus de détails. - La méthode
nsIEffectiveTLDService.getPublicSuffixFromHost()rejette désormais correctement le nom des hôtes qui commencent par un point (.). - La méthode
mozIJSSubScriptLoader.loadSubScript()a désormais un argument optionnel qui vous permet de définir le jeu de caractère du script, s'il n'est pas fourni, on suppose que c'est le format ASCII (comme cela a toujours été précédemment). - L'interface
nsIAccessProxya été supprimée. C'était un élément qui n'avait plus d'utilité. - Les interfaces
nsIContentViewetnsIContentViewManageront é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
nsIDiskCacheStreamInternala été ajoutée. - L'interface
nsIExternalURLHandlerServicea été ajoutée. - L'interface
nsISyncJPAKEa été ajoutée. Voir bogue Firefox 601645 (angl.). - L'interface
nsIINIParserWriterest ajoutée dans Gecko 1.9.2.4 pour prendre en charge l'écriture des fichiers INI.
Gestion de la mémoire
- Allocation infaillible de la mémoire (angl.)
-
Mozilla propose désormais des répartiteurs de mémoire infaillible qui sont garantis de ne pas retouner
null. Vous devriez lire cet article pour connaître 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 (angl.). - La préférence
accessibility.disablecachen'est plus prise en charge, 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 désormais être mises à jour correctement.
- Suite à la suppression des répertoires spécifiques à chaque plateforme dans les paquets d'extensions, il n'est désormais plus possible de définir des préférences par défaut différentes pour chaque plateforme.
- Par défaut, les extensions ne sont plus décompressées quand elles sont installées (angl.), mais sont plutôt exécutées directement à partir du fichier XPI. Les extensions peuvent utiliser la propriété unpack (angl.) dans le manifeste d'installation (angl.) pour choisir l'ancien comportement. Les extensions qui utilisent des composants binaires, des DLLs chargées avec js-ctypes (angl.), des modules complémentaires 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 (angl.), ou font des copies de fichiers du système relatifs au répertoire de l'extension, peuvent aussi avoir besoin de modifier leur code.
- Vous pouvez désormais inclure des extensions qui s'installent automatiquement au démarrage de l'application (angl.) dans une version personnalisée de Firefox.
Autres changements
- Seul le fichier chrome.manifest racine est chargé
-
Maintenant seul le fichier
chrome.manifestracine est chargé ; si vous avez besoin de fichiers manifestes secondaires à charger, vous pouvez utiliser la commandemanifest(angl.) dans votre fichierchrome.manifestracine pour les charger. - Suppression de la prise en charge de Gopher
-
Le protocole Gopher n'est plus pris en charge nativement. L'extension OverbiteFF permet de continuer à le prendre en charge.
- Gestion des évènements du processus Content (angl.)
-
Pour la prise en charge des modules complémentaires 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 (angl.)
-
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 modules complémentaires par défaut
-
Le module par défaut a été supprimé. Le dossier des modules de l'application a également été supprimé par défaut, mais la prise en charge de l'installation de modules à partir de ce dossier est toujours disponible. Voir bogue Firefox 533891 (angl.).
- Extension Manager remplacé par Addon Manager
-
nsIExtensionManagera été remplacée par AddonManager (angl.). - Child HWNDs n'est plus utilisé
-
Firefox ne crée plus d'enfant HWNDs pour son usage interne sous Windows. Si vous avez codé une extension qui utilise du code natif pour manipuler ces HWNDs, votre extension ne fonctionne pas dans Firefox 4. Soit vous devez arrêter l'utilisation de HWND ou soit mettre votre code reposant sur HWND dans un module complémentaire 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 ça ouvre ou ferme 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_scrollBottompourbrowser.gesture.swipe.downetcmd_scrollToppourbrowser.gesture.swipe.up.