Firefox 10 note de version pour les développeurs
Firefox 10 est sorti le 31 janvier 2012. Cet article fournit des informations sur les nouvelles fonctionnalités et les principaux bugs corrigés dans cette version, ainsi que des liens vers une documentation plus détaillée pour les développeur·euse·s web et les développeur·euse·s de modules complémentaires.
Note : Firefox 10 est la première version de ce navigateur à avoir deux chiffres. Cela peut poser des problèmes avec certains scripts de détection de l'UA. Assurez-vous de les vérifier, ainsi que ceux contenus dans les logiciels tiers que vous intégrez dans vos pages, comme les bibliothèques. Pour plus d'informations à ce sujet, consultez l'article Firefox passe à deux chiffres sur hacks.mozilla.org (angl.).
Changements pour les développeur·euse·s web
>HTML
- Le nouvel élément HTML5
<bdi>, isolation bidirectionnelle, permettant l'isolation de parties de texte avec une direction différente, a été implémenté. C'est particulièrement utile lors de l'affichage de texte avec une direction inconnue, provenant par exemple d'une base de données, au milieu d'un texte avec une direction connue et potentiellement différente. - Vous pouvez maintenant définir un fragment « haut » pour l'attribut
hrefafin de créer un lien vers le haut de la page. Cela fonctionnait auparavant, puis a disparu pendant un certain temps, et maintenant c'est de retour, pour être compatible avec la spécification HTML5. Par exemple :<a href="#top">Retour en haut de la page</a>.
JavaScript
- La méthode
WeakMap.set()retourne maintenantundefined, au lieu de retourner elle-même. - Un bogue a été introduit dans la gestion des expressions régulières dans Firefox 7 ; il a été corrigé. Voir le bogue Firefox 683838 (angl.) si vous voulez les détails sanglants.
- Vous ne pouvez plus utiliser la syntaxe ECMAScript pour XML (E4X) obsolète en mode strict ECMAScript 5 (c'est-à-dire après
"use strict;").
DOM
Évènements DOM3
- La méthode DOM Event
Event.stopImmediatePropagationa été implémentée. - Les évènements de souris
mouseenteretmouseleaveont été implémentés.
DOM4
- L'attribut
Document.xmlVersion(qui était uniquement accessible en lecture et non modifiable) a été supprimé, car il est obsolète dans la spécification DOM4. L'article consacré àDocument.xmlVersionsuggère maintenant une manière de détecter si le document est HTML ou XML sans utiliser cette propriété. - L'attribut
document.xmlStandalonea été supprimé, car il est obsolète dans la spécification DOM4. - L'attribut
Document.xmlEncodinga été supprimé, car il est obsolète dans la spécification DOM4. - L'attribut
text.isElementContentWhiteSpacea été supprimé, car il est obsolète dans la spécification DOM4. - La méthode
text.replaceWholeTexta été supprimée, car elle est obsolète dans la spécification DOM4. - La méthode
Node.isSameNodea été supprimée, car elle est obsolète dans la spécification DOM4. Au lieu denode1.isSameNode(node2), vous pouvez utiliser l'opérateur===, comme ceci :node1 === node2.
L'API Page Visibility
- L'API Page Visibility a été implémentée (préfixée) :
document.mozHidden,document.mozVisibilityStatesont disponibles et l'évènementmozvisibilitychangedest envoyé lorsque l'état est modifié.
L'API Full Screen
- La prise en charge de
Document.fullscreenEnableda été ajoutée. - La nouvelle propriété
:-moz-full-screen-ancestora été ajoutée. Cela vous permet de faire correspondre les éléments qui sont des ancêtres d'un élément en mode plein écran.
L'API Battery
- La prise en charge expérimentale de
navigator.mozBatterya été ajoutée (peut être activée en définissant la préférencedom.battery.enabledsurtrueet sera activée par défaut à partir de Firefox 11).
Canvas
- La méthode
createPattern()lève désormais une exception si un canevas source de taille nulle est défini. - Si vous utilisez une valeur non finie pour l'un des paramètres numériques de
putImageData(), l'appel est désormais ignoré silencieusement au lieu de lancer une exception, conformément à la spécification.
WebGL
- Firefox 10 prend désormais en charge l'extension
OES_standard_derivatives(angl.). - De nouvelles préférences ont été ajoutées pour aider à tester le code WebGL pour la compatibilité avec des appareils minimalement capables sur votre plateforme de développement complète.
Web Workers
- L'attribut
XMLHttpRequest.responseTypeetXMLHttpRequest.responsesont désormais disponibles depuis l'intérieur des Workers. - Le constructeur
Worker()accepte désormais les URL de données.
IndexedDB
De grands progrès ont été réalisés pour mettre à jour IndexedDB selon la dernière spécification provisoire. Cet effort se poursuivra dans Firefox 11.
- Les méthodes
IDBIndex.count()etIDBObjectStore.count()ont été ajoutées. - La méthode
IDBCursor.advance()a été ajoutée. - Lors de la rencontre d'un paramètre optionnel inconnu dans
IDBObjectStore.createIndex()ouIDBDatabase.createObjectStore(), Gecko ne déclenche plus d'exception, mais l'ignore. - Lorsque
IDBTransaction.abort()est appelé, toutes lesIDBRequesten attente ont leurerrorCodedéfini surABORT_ERROR. - Les méthodes
IDBObjectStore.delete()etIDBCursor.delete()définissent désormais l'attributresultde laIDBRequestretournée surundefined. - La méthode
IDBDatabase.setVersion()a été supprimée, car elle a été retirée de la dernière spécification. La version de la base de données est donnée par la méthodeIDBFactory.open()qui a été mise à jour et le rappelonupgradeneededpermet de mettre à jour le schéma de la base de données. La version elle-même a été changée d'unDOMStringà ununsigned long long. L'interfaceIDBVersionChangeRequesta été supprimée et remplacée par la nouvelle interfaceIDBOpenDBRequest. - Lors de l'ouverture d'une base de données avec
IDBFactory.open(), si le paramètreversionn'est pas fourni et que la base de données n'existe pas, elle est créée avec une version de1. - La méthode
IDBFactory.deleteDatabase()a été ajoutée. - Les méthodes qui recherchent avec un
IDBKeyRange(commeIDBObjectStore.openCursoretIDBIndex.getKey) peuvent accepter soit une seule clé, soit une plage de clés.
Autres
- Lorsque le type MIME approprié est passé,
image/svg+xml, leDOMParsercrée désormais unSVGDocumentlorsqu'il reçoit une chaîne de caractères contenant du SVG. - Par le passé, lorsque
Element.setAttribute()analysait des entiers, il signalait une erreur si l'entier contenait des caractères non numériques (par exemple « 42toto »). Maintenant, il tronque correctement cela en tant que nombre 42, conformément à la spécification. - La touche ESC ne déclenche plus incorrectement le gestionnaire
onkeydown. - L'interface
NameListn'est plus implémentée ; elle avait auparavant une implémentation sans moyen d'y accéder réellement. - La méthode
document.createProcessingInstruction()fonctionne désormais sur les documents HTML ainsi que sur les documents XML. Les nœudsProcessingInstructionne sont toujours pris en charge que sur les documents XML, mais comme les nœuds peuvent être déplacés entre les documents, il est utile de pouvoir les créer également sur les documents HTML. - Le
responseType"moz-json"deXMLHttpRequestintroduit dans Firefox 9 a été mis à jour selon le dernier projet de spécification et n'a plus de préfixe. Voir la note dans le bogue Firefox 707142 (angl.).
CSS
- Les transformations 3D en CSS sont désormais prises en charge. Cela inclut la prise en charge des propriétés
transform-style,perspective,perspective-originetbackface-visibility, ainsi que des fonctions de transformation 3D dans les propriétéstransformet<transform-function>. Voir Utilisation des transformations CSS pour plus de détails. - Deux nouvelles valeurs pour la propriété CSS
unicode-bidiont été ajoutées :-moz-isolationet-moz-plaintext. La valeur-moz-isolationisole, du point de vue de la direction, l'élément de son environnement, lui permettant d'avoir une direction différente. Un élément avecunicode-bidi:-moz-isolationse comporte comme un élément<bdi>. La valeur-moz-plaintextindique au navigateur d'utiliser Unicode euristique pour déterminer la direction et non la propriété CSSdirection. - Les propriétés CSS
linear-gradient()etrepeating-linear-gradient()ont été mises à jour pour prendre en charge la nouvelle syntaxetoet l'algorithme de coin magique. Cela permet de donner une couleur précise sur le coin d'une boîte remplie de dégradé. - La gestion de la propriété
text-overflowdans les cas où la boîte déborde des deux côtés alors que la propriététext-overflowest définie pour déborder d'un seul côté a été corrigée. - La gestion de la propriété
positionsur les éléments à l'intérieur des éléments<table>positionnés a été corrigée. Ce changement affecte la mise en page des pages ; cependant, nous respectons désormais la spécification CSS et les autres navigateurs, donc cela doit être facile à corriger. - La fusion des marges autour des éléments
<table>a été corrigée pour correspondre à la spécification CSS. Auparavant, les marges des éléments de table ne se fusionnaient pas avec les autres éléments adjacents, ce qui entraînait une mise en page incorrecte. Ce changement affecte la mise en page des pages ; cependant, nous respectons désormais la spécification CSS et les autres navigateurs, donc cela doit être facile à corriger.
SVG
- L'élément
<mask>a été mis à jour pour prendre en charge à la fois sRGB et linearRGB, et utilise désormais sRGB par défaut, conformément à la dernière révision de la spécification SVG 1.1.
Réseau
- L'en-tête HTTP
Accept-Charsetn'est plus envoyé dans les requêtes HTTP. En son absence, les serveurs doivent répondre en envoyant UTF-8.
Outils de développement
- L'objet
consoledispose de deux nouvelles méthodes,console.time()etconsole.timeEnd(), qui peuvent être utilisées pour définir des minuteries sur une page. - Le nouvel Inspecteur de page (angl.) a été ajouté, offrant un excellent moyen d'examiner et de manipuler le HTML et le CSS derrière votre contenu.
Changements pour les développeur·euse·s Mozilla et d'extensions
Pour un aperçu des problèmes susceptibles de survenir lors de la mise à jour de vos extensions pour prendre en charge Firefox 10, consultez Mise à jour des extensions pour Firefox 10.
Note :
L'ancien type de données PRBool (angl.) a été retiré ! Partout dans la documentation où il est mentionné, le type standard C++ bool est désormais utilisé. La documentation sera mise à jour à l'avenir, mais pour l'instant, gardez cela à l'esprit.
Manifestes
- La prise en charge de
<em:strictCompatibility>a été ajoutée au manifeste d'installation. Elle permet aux auteur·ice·s d'extensions de choisir de vérifier la version maximale de leur extension. Si elle est définie surtrue, l'extension est désactivée si la version de l'application est supérieure à<em:maxVersion>. Par défaut, Firefox 10 considère les extensions comme compatibles, quelle que soit leur version maximale définie. Ce drapeau remplace cette préférence. Vous devez le définir si votre extension effectue des actions susceptibles d'être perturbées par les mises à jour de Firefox, mais pas si votre extension contient un composant binaire, car ces extensions sont toujours strictement vérifiées (rappelez-vous que les composants binaires doivent toujours être recompilés pour chaque version majeure de Firefox). - Si vous souhaitez revenir à l'ancien comportement — c'est-à-dire à la vérification stricte de la compatibilité pour toutes les extensions, quelle que soit la valeur du drapeau
strictCompatibilitydans leurs manifestes, vous pouvez définir la préférenceextensions.strictCompatibilitysurtrue.
XUL
- Les modules complémentaires amorcés utilisant un fichier
chrome.manifestont désormais le fichier manifeste enregistré automatiquement. Voir la section Ajouter une interface utilisateur avec unchrome.manifest(angl.) pour plus de détails.
XPConnect
- Plusieurs nouvelles propriétés et méthodes ont été ajoutées à
Components.utils, permettant d'accéder à diverses informations liées au débogage.
Changements d'interface
- Les interfaces
mozISpellCheckingEngineetnsIEditorSpellCheckont été mises à jour pour permettre aux modules complémentaires sans redémarrage d'ajouter des dictionnaires au correcteur orthographique. - L'attribut
nsIBrowserHistory.lastPageVisiteda été supprimé. - L'interface
nsIDocumentViewera été fusionnée avecnsIContentViewer. - L'interface
nsIURIFixupdispose d'un nouveau drapeau,FIXUP_FLAG_USE_UTF8, qui permet de lui indiquer d'utiliser UTF-8 au lieu du jeu de caractères de la plateforme lors des conversions.
Changements d'extension
- La nouvelle variable
NPNVdocumentOrigina été ajoutée ; elle retourne l'origine du document et est plus sécurisée quewindow.location.
Changements du système de compilation
- L'option de compilation
--disable-rdf, qui rendait en réalité impossible une compilation réussie, a été supprimée. Des travaux sont en cours pour pouvoir supprimer entièrement la prise en charge de RDF, mais pour l'instant, XUL en a encore besoin pour fonctionner. Voir le bogue Firefox 559505 (angl.) pour suivre les progrès sur la suppression des derniers vestiges de RDF. - L'option de compilation
--disable-smila été supprimée.