Firefox 9, basé sur Gecko 9.0, est sorti le 20 décembre 2011 sur Windows. La version 9.0.1, qui corrige un problème de plantage découvert au dernier moment, est sortie le 21 décembre 2011, sur Mac et Linux.
Changements pour les développeurs Web
HTML
- L'attribut
value
de<li>
peut désormais être négatif comme c'est indiqué dans HTML5. Auparavant les valeurs négatives été converties à 0. - Vous pouvez désormais specifier le début et la fin du temps d'un média dans l'URI en utilisant les éléments
<audio>
et<video>
. - Les éléments
<input>
et<textarea>
respectent désormais la valeur de l'attributlang
lors de l'appel du correcteur orthographique. - Firefox sur Android permet désormais la prise de photo avec le téléphone sans devoir quitter le navigateur lorsque l'élément
<input>
est utilisé avectype="file"
etaccept="image/*"
. - Les images ICO de style PNG de Windows Vista sont à présent supportée.
- Les images dessinées qui utilisent l'attribut
crossorigin
pour demander l'accès à CORS n'altère plus le canvas quand CORS est accordé. - La valeur de l'attribut
rowspan
peut désormais aller jusqu'à 65 534, contre 8190 avant.
CSS
- La propriété
font-stretch
est à présent supportée. - La propriété
columns
est à présent supportée, avec le préfixe-moz
. C'est un raccourci des propriétés suivantes :column-width
etcolumn-count
. - Quand une feuille de style incluse à l'aide de l'élément
<link>
a été entièrement chargée et analysée (mais pas encore appliquée au document), l'load
event est désormais déclenché. En outre, si une erreur survient durant le traitement d'une feuille de style, l'événementerror
est déclenché. - Vous pouvez à présent spécifier les paramètres de débordement pour les bords, à la fois à gauche et à droite, du contenu en utilisant une nouvelle syntaxe de deux valeurs pour
text-overflow
.
DOM
- Utilisation du mode plein écran
- La nouvelle API pour le plein écran offre un moyen de présenter le contenu en utilisant la totalité de l'écran, sans l'interface du navigateur. C'est très bien pour les vidéos et les jeux. Cette API est encore expérimentale et préfixée.
- La méthode
Node.contains()
est désormais implémentée, elle vous permet de déterminer si un nœud donné est un descendant d'un autre noeud. - L'attribut
Node.parentElement
a été implémenté, cela renvoie l'Element
parent d'un noeud DOM, ounull
si le parent n'est pas un élément. - Les évènements de composition du DOM Level 3 sont à présent supportés.
- L'attribut
Document.scripts
a été implémenté, il renvoieHTMLCollection
de tous les éléments<script>
du document. - la méthode
Document.queryCommandSupported()
a été implémentée. - L'ensemble des événements qui peuvent être écoutés sur les éléments
<body>
a été révisé pour correspondre à la dernière version de la spécification HTML5. La liste des événements dans la référence d'événements DOM reflète ceux qui peuvent être écoutés sur les<body>
. - L'évènement
readystatechange
est désormais uniquement tiré sur le document, comme prévu. - Les gestionnaires d'événements sont désormais implémentés comme des interfaces IDL standard. Dans la plupart des cas, cela n'affectera pas le contenu, mais il y a des exceptions.
- Un nouveau type de réponse, "
moz-json
", a été ajouté àXMLHttpRequest
, laissantXMLHttpRequest
analyser automatiquement les chaînes JSON, quand vous demandez ce type, une chaîne JSON est analysé, afin que la valeur de la propriétéresponse
est la résultante de l'objet JavaScript. - Les évènements "progress" de
XMLHttpRequest
sont à présent correctement envoyé pour chaque bloc de données reçu, dans le passé il était possible pour que le dernier bloc de données reçu ne déclenche pas un évènement "progress". Maintenant, vous pouvez suivre uniquement la progression des évènements "progress", au lieu d'avoir également à surveiller les évènements "load" pour détecter la réception du dernier bloc de données. - Dans le passé, l'appel de
addEventListener()
avec un écouteurnull
renvoyait une exception. maintenant il ne retourne plus d'erreur et est sans effet. - La nouvelle propriété
navigator.doNotTrack
permet à votre contenu de déterminer facilement si l'utilisateur a activé la préférence do-no-track, si la valeur est "oui", vous ne devez pas suivre l'utilisateur. - Les objets
Range
etSelection
se comportent désormais selon leurs spécifications lorsquesplitText()
etnormalize()
sont appelés. - La valeur de
Node.ownerDocument
pour les noeuds de doctype est désormais le document sur lequelcreateDocumentType()
a été appelé pour créer le noeud, au lieu denull
. window.navigator.taintEnabled
a été retiré, il n'est plus supporté depuis plusieurs années.
Workers
- Les workers implémentés dans les URLs blob étaient cassés sous Firefox 8, et sont de nouveaux disponibles à partir de Firefox 9.
WebGL
- Dans le cadre de WebGL les attributs
drawingBufferWidth
etdrawingBufferHeight
sont à présent supportés.
MathML
- La valeur non-standard
restyle
pour les attributsactiontype
des éléments<maction>
a été retirée. - Alors qu'il n'était pas encore supporté, l'utilisation de l'élément
<mlabeledtr>
ne casse plus complètement le rendu. Voir le bug 689641 pour l'avancement du support de cet élément.
Réseau
- Vous pouvez désormais envoyer le contenu de tableaux JavaScript typés (c'est, le contenu d'un objet
ArrayBuffer
) en utilisant XMLHttpRequest. - Les connexions WebSocket permettent désormais des non-caractères autres que UTF-8 des trames de données devant être reçues, au lieu d'échouer.
- L'en-tête HTTP
Accept
pour les réquêtes XSLT a été changée pour "*/*" pour simplifier. Puisque l'extraction d'XSLT est toujours retombée à "* / *", il était logique de faire la simplification. - Les tentatives faites par un serveur pour utiliser les codes de réponses
301 Moved Permanently
ou307 Temporary Redirect
pour rediriger l'utilisateur vers une URIjavascript:
donne désormais lieu à l'erreur "connexion incorrecte" au lieu de vraiment rediriger. Cela évite certaines attaques de type cross-site scripting. - Le contenu servi par Content-Disposition: vide avait déjà été traité comme si Content-Disposition: était attachment", ce qui ne fonctionnait pas toujours comme prévu. C'est désormais traité comme si Content-Disposition: était "inline".
- La taille maximale par défaut d'un élément dans le cache disque a été augmentée à 50 Mo, auparavant, seuls les éléments jusqu'à 5 Mo étaient mis en cache.
Outils de développement
- La console Web supporte désormais les chaînes de substitutions basiques dans ses méthodes d'exploitation.
- Vous pouvez désormais créer des blocs imbriqués pour la sortie dans la console web, pour faciliter la lecture.
Changements pour les développeurs de Mozilla et de modules complémentaires
Voir Updating add-ons for Firefox 9 pour un aperçu des modifications que vous devriez apporter pour rendre vos extensions compatibles avec Firefox 9.
XUL
- L'élément
tab
dispose à présent d'un attributpending
, dont la valeur esttrue
, lorsque l'onglet est en train d'être rétabli par le service de sauvegarde de session. Il peut être utilisé pour le style de l'onglet dans les thèmes. L'attribut n'est pas présent sur les onglets qui ne sont pas en attente. - L'élément
tab
dispose à présent d'un attributunread
, dont la valeur esttrue
, lorsque l'onglet a changé depuis la dernière fois qu'il était actif ou si il n'a pas été sélectionné depuis que la session en cours a commencé. L'attribut n'est pas présent sur les onglets qui ne sont pas lus. - Vous pouvez désormais utiliser
panel
comme une image glissée pour les opérations DOM de glisser-déposer. Cela vous permet d'utiliser l'API standard drag & drop pour glisser et déposer du contenu XUL. - La méthode
appendNotification
de l'élémentnotificationbox
vous permet désormais de spécifier un rappel qui est appelé pour des événements intéressants liés à la zone de notification. Actuellement, le seul événement est "removed", qui vous indique la zone qui a été retirée de sa fenêtre.
Changements dans le module de code JavaScript
FileUtils.jsm
dispose désormais du constructeurFile
qui renvoie l'objetnsIFile
représentant un fichier spécifié par son chemin d'accès.
Changement dans le service
- Le service de préférence du contenu gère désormais le mode de navigation privée (voir bug 679784).
NSPR
- NSPR dispose désormais d'un module "append", qui vous permet d'ajouter de nouvelles données à la fin d'un journal existant.
Changements dans les interfaces
Interface supprimée
nsIGlobalHistory3
a été enlevée lors de la réduction de Places et du code DocShell.
Divers changements dans les interfaces
- L'interface
nsISound
a une nouvelle constanteEVENT_EDITOR_MAX_LEN
. Elle permet de lire le son du système quand plus de caractères que le maximum autorisé sont entrés dans un champ de texte. Actuellement, ce n'est utilisé que sous Windows. - L'interface
nsIScriptError2
a de nouvelles propriétés,timeStamp
etinnerWindowID
; en plus, la méthodeinitWithWindowID()
prend désormais un ID de fenêtre intérieure au lieu d'un ID de fenêtre extérieure. - L'attribut
nsIBidiKeyboard.haveBidiKeyboards
a été ajouté, il vous permet de vérifier que le système a au moins un clavier installé dans chaque sens : de gauche à droite ou de droite à gauche. - Le nouvel attribut
nsIEditor.isSelectionEditable
vous permet de déterminer si l'ancre de sélection en cours est modifiable. Cela permet de supporter les cas où seules certaines parties du document sont modifiables, en vous permettant de voir si la sélection actuelle est dans une partie modifiable. - Les méthodes
nsIBrowserHistory.registerOpenPage()
etnsIBrowserHistory.unregisterOpenPage()
ont été supprimées dans le cadre d'une refonte des performances dans le système Places. A la place, vous pouvez utiliser les méthodes correspondantes demozIPlacesAutoComplete
. - La méthode
nsIDOMWindowUtils.wrapDOMFile()
a été ajoutée, elle retourne un objet DOMFile
pour unnsIFile
donné. - La méthode
nsIChromeFrameMessageManager.removeDelayedFrameScript()
a été ajouté pour supporter la suppression des scripts de chargement différé. Les extensions amorcées doivent l'utilisée, lors de l'arrêt, pour éliminer tous les scripts chargés à l'aide densIChromeFrameMessageManager.loadFrameScript()
avec l'indicateur de charge différé. Cela expose des extensions commebrowser.messageManager.removeDelayedFrameScript()
. - L'interface
nsIAppStartup
a un nouvel attributinterrupted
, qui vous permet de savoir si la procédure de démarrage a été interrompue à tout moment par une commande interactive invitée. Cela peut être utile, par exemple, lors de la synchronisation du démarrage pendant l'évaluation des performances, pour être en mesure de déposer le nombre de sessions qui ont été interrompues. - L'interface
nsIEditorSpellCheck
a été revue pour supporter le choix des sites de dictionnaires pour la vérification orthographique.
Parseur IDL
Le parseur IDL ne supporte plus la notion de pointeurs unique qui n'a jamais été entièrement implémentée.
Changements dans le système de compilation
- L'option
--enable-application=standalone
pour la compilation autonome d'XPConnect a été retirée, elle n'a pas été utilisée depuis 2007. - Le support de la compilation autonome de Necko et Transformiix XSLT a été retiré, vous ne pouvez plus utilisez
--enable-application=network
ou--enable-application=content/xslt
. - Le système de compilation cherche désormais
.mozconfig
à$topsrcdir/.mozconfig
ou$topsrcdir/mozconfig
, et pas ailleurs, sauf si vous remplacez le chemin.mozconfig
en utilisant la variable d'environnementMOZCONFIG
. - L'utilitaire
xpidl
a été remplacé dans le SDK avec pyxpidl.
Autres changements
- Le correcteur orthographique n'a plus la limite de 130 caractères sur la longueur des mots à vérifier. Cette limite était précédemment en place pour éviter les plantages qui sont survenus dans le correcteur orthographique, mais les bogues sous-jacents ont depuis été corrigés.
- Vous pouvez désormais enregistrer des composants pour ajouter des fonctionnalités à l'objet
window.navigator
à l'aide de la catégorie "JavaScript-navigator-property". Voir Ajout des APIs de l'objet navigator pour plus de détails et des exemples.
Voir également
- Firefox 8 pour les développeurs
- Firefox 7 pour les développeurs
- Firefox 6 pour les développeurs
- Firefox 5 pour les développeurs
- Firefox 4 pour les développeurs
- Firefox 3.6 pour les développeurs
- Firefox 3.5 pour les développeurs
- Firefox 3 pour les développeurs
- Firefox 2 pour les développeurs
- Firefox 1.5 pour les développeurs