Firefox 6 pour les développeurs
-
Notes de versions pour développeurs
-
Modules complémentaires
-
Fonctionnement interne de Firefox
-
Développer et contribuer
Firefox 6, basé sur Gecko 6.0, est sorti le 16 août 2011. Cet article fournit des informations à propos des changements qui affectent les développeurs dans cette version.
Changements pour les développeurs web
HTML
- L'élément HTML5
<progress>
, qui vous permet de créer une barre de progression, est maintenant supporté. - L'analyse syntaxique de l'élément HTML5
<track>
, qui spécifie les pistes de texte pour les éléments multimédias, est désormais supporté. Cet élément devrait apparaître dans les DOM, si son comportement n'est pas encore implémenté. - L'élément
<iframe>
est désormais correctement coupé par son conteneur lorsque les coins du conteneur ont été arrondis à l'aide de la propriétéborder-radius
. - Les champs
<input>
des éléments<form>
ne sont plus supportés par la propriété XULmaxwidth
, cela n'a jamais été volontaire, et est contraire à la spécification HTML. Vous devriez plutôt utiliser l'attributsize
pour définir la largeur maximum de champs de saisie. - Les propriétés
fillStyle
etstrokeStyle
deCanvasRenderingContext2d
(<canvas>
) utilisées pour ignorer les déchets inclus après la définition d'une couleur valide, maintenant c'est traité comme une erreur. Par exemple, "rouge bleu" est une couleur utilisée pour être traitée comme du "rouge", alors qu'elle aurait dû être ignorée. - La largeur et la hauteur des éléments
<canvas>
peuvent être correctement mis à 0px ; avant, lorsque vous essayez de le faire, elles se fixaient à 300px. - le support de l'attribut HTML des données personnalisées (data-*) a été ajouté. La propriété DOM
element.dataset
permet d'y accéder. - Quand un élément
<textarea>
reçoit le focus, le point d'insertion de texte est désormais placé, par défaut, au début du texte plutôt qu'à la fin. Le comportement de Firefox est ainsi conforme avec les autres navigateurs.
CSS
-moz-text-decoration-color
-
Cette nouvelle propriété vous permet de définir la couleur utilisée par les décorations du texte, comme le soulignement, le surlignement et le texte barré.
-moz-text-decoration-line
-
Cette nouvelle propriété vous permet de définir le type de décorations du texte ajoutée à un élément.
-moz-text-decoration-style
-
Cette nouvelle propriété vous permet de définir le style de décorations du texte, comme le soulignement, le surlignement et le texte barré. Les styles incluent les simples lignes, les lignes doubles, les lignes ondulées, les lignes pointillées, etc.
-moz-hyphens
-
Cette nouvelle propriété vous permet de contrôler la façon dont la césure des mots lors de retours à la ligne est gérée.
-moz-orient
-
Une nouvelle propriété (pour l'instant spécifique à Mozilla) qui vous permet de contrôler l'orientation verticale ou horizontale de certains éléments (en particulier
<progress>
). ::-moz-progress-bar
-
Un pseudo-élément spécifique à Mozilla qui vous permet de définir le style de la zone d'un élément
<progress>
représentant la fraction d'une tâche.
Autres changements
- La propriété
@-moz-document
a une nouvelle fonctionregexp()
, qui vous permet d'adapter l'URL du document à une regular expression. - La propriété CSS
azimuth
n'est plus supportée, comme nous avons enlevé le peu de code que nous avions pour le groupe médiaaural
. Il n'a jamais été implémenté de manière significative, donc il était plus logique de supprimer cette implémentation crufty pour le moment, au lieu d'essayer de le rafistoler. - Avant, la pseudo-classe
:hover
n'était pas appliquée aux sélecteurs de classe quand on était en mode quirks, par exemple,.someclass:hover
ne fonctionne pas. Cette bizarrerie a été enlevée. - La pseudo-classe
:indeterminate
peut être appliquée à l'élément<progress>
. Cela n'est pas un standard, mais nous espérons que ce soit adopté par les autres navigateurs car c'est utile. - La valeur
-moz-win-exclude-glass
a été ajoutée à la propriété CSS-moz-appearance
afin d'exclure des zones opaques dans les effets d'Aero Glass sur les systèmes Windows. - Le bug 658949 change la façon dont le symbole dièse (#) est traité dans les données URI qui peut briser les feuilles de style CSS qui contiennent un tel symbole.
DOM
- Utilisation de media queries à partir de code
-
Vous pouvez désormais tester le résultat d'une chaîne media query en programmant la méthode
window.matchMedia()
et l'interfaceMediaQueryList
. - Evènements tactile
-
Firefox 6 ajout le support du standard W3C sur les évènements tactile, cela facilite l'interprétation d'une ou plusieurs touches à la fois sur les surfaces tactiles comme les écrans tactiles et pavés tactiles.
- Evènements server-sent
-
Les évènements server-sent permettent à une application Web de demander à un serveur pour envoyer des événements comme n'importe quel événement DOM localement créé.
navigator.securityPolicy
, qui a depuis longtemps retourné une chaîne vide, a simplement été supprimé.BlobBuilder
est maintenant implémenté, même si pour l'instant il est préfixé (vous devez utiliserMozBlobBuilder
).document.height
etdocument.width
ont été supprimées. bug 585877- Les propriétés
entities
etnotations
de l'objetDocumentType
, qui n'ont jamais été implémentées et renvoyées toujoursnull
, ont été retirées, car elles ont également été enlevées de la spécification. - L'interface
DOMConfiguration
et la propriétédocument.domConfig
qu'elle utilisait ont été supprimées, elles n'ont jamais été supportées et ont depuis été retirées de la spécification DOM. - L'évènement
hashchange
comprend désormais les champsnewURL
etoldURL
. - La méthode
abort()
de l'interfaceFileReader
retourne maintenant une exception si aucun fichier n'est en cours de lecture lorqu'elle est utilisée. - La méthode
window.postMessage()
utilise maintenant l'algorithme de clonage structuré pour vous permettre de transmettre d'une fenêtre à une autre des objets JavaScript au lieu de chaînes. - L'API
window.history
utilise désormais l'algorithme de clonage structuré pour sérialiser des objets que vous passez avec les méthodespushState()
etreplaceState()
, ce qui vous permet d'utiliser des objets plus complexes (y compris ceux qui contiennent des références de graphes cycliques). - Vous pouvez désormais détecter lorsqu'une impression a été lancée et a été achevée grâce aux nouveaux évènements
beforeprint
etafterprint
. - La propriété
document.strictErrorChecking
a été supprimée, car elle n'a jamais été implémentée et a été retiré de la spécification DOM. - La propriété standard
event.defaultPrevented
est maintenant supportée, vous devriez utiliser à la place la méthode non-standardgetPreventDefault()
pour détecter sievent.preventDefault()
a été appelée sur l'événement. - La propriété
window.top
est désormais en lecture seule. - DOM views, which we never documented, have been removed. This was a bit of implementation detail that was unnecessarily complicating things, so we got rid of it. If you notice this change, you're probably doing something wrong.
- La fonction
EventTarget
de la méthodeaddEventListener()
est désormais facultative, car ça l'est dans WebKit (et aussi dans la dernière version de la spécification). - La propriété
mozResponseArrayBuffer
de l'objetXMLHttpRequest
a été remplacé par les propriétésresponseType
etresponse
. - La propriété
element.dataset
a été ajoutée à l'interfaceHTMLElement
permettant d'accéder aux attributs globauxdata-*
global attributes d'un élément. - L'interface
CustomEvent
a été implémentée. (voir bug 427537) - Pour des raisons de sécurité, les URIs
data:
etjavascript:
n'héritent plus de l'environnment de sécurité de la page active lorsque l'utilisateur les saisit dans la barre d'adresse, mais un nouvel environnment de sécurité vide est créé. Par exemple, le script chargé en entrant l'URIjavascript:
dans la barre d'adresse n'a plus accès aux méthodes DOM et similaires. Ces URIs continueront à travailler comme avant lorsqu'elles sont utilisées par le script.
JavaScript
- Avant, il était possible d'utiliser l'opérateur
new
sur plusieurs fonctions natives (eval, parseInt, Date.parse, etc) ce qui, conformément à la spécification, n'était pas autorisé. Désormais ce comportement n'est plus supporté. Cette façon d'utiliser l'opérateurnew
n'a jamais été officiellement supportée et était peu utilisée, donc il est peu probable que ce changement vous affecte. - ECMAScript Harmony WeakMaps a été ajouté en tant que prototype.
SVG
- L'attribut
pathLength
est désormais supporté. - Les modèles SVG, les dégradés et les filtres fonctionnent désormais correctement lorsqu'ils sont chargés à partir de
data:
URLs.
MathML
- L'implémentation de
<mstyle>
a été corrigée.
Accessibilité (ARIA)
- Un événement de changement d'état est à présent correctement envoyé lors d'un changement de la valeur de
aria-busy
. - Un événement de changement d'attribut est à présent correctement envoyé lorsque survient
aria-sort
.
Réseau
- WebSockets
-
Pour Firefox 6, WebSockets a été mis à jour à la version 07 du protocole. De plus, l'objet
WebSocket
a été renommé enMozWebSocket
pour l'empêcher d'être utilisé de façon incorrecte pour détecter la disponibilité des WebSockets sans préfixe.
- L'analyse de l'en-tête
Content-Disposition
a été fixée afin d'interpréter correctement les antislashs des caractères ASCII. Auparavant, il été remplacé par le caractère underscore ("_"). - La valeur du champ du chemin de l'en-tête
Set-Cookie
est désormais correctement interprétée lors de l'utilisation de guillements, auparavant, ils étaient considérés comme faisant partie de la chaîne du chemin d'accès à la place d'être des délimiteurs. Ce changement peut affecter la compatibilité avec certains sites web, les auteurs doivent vérifier leur code. - L'en-tête de la requête
Upgrade
est désormais supporté, vous pouvez demander la mise à niveau d'un canal vers un autre protocole HTTP en appelantnsIHttpChannelInternal.HTTPUpgrade()
.
Autres changements
- Le support des microrésumés a été enlevé, ils n'ont jamais été très utilisés, n'étaient pas très détectable et continuer leur support été d'apporter des améliorations à Places (favoris et historique) à l'architecture difficile.
- WebGL supporte maintenant l'extension
OES_texture_float
. - Le nouvel outil Ardoise offre un endroit pratique pour expérimenter du code JavaScript.
- La méthode
console.trace()
a été ajouté à ConsoleAPI (voir bug 585956).
Changements pour les développeurs de Mozilla et de modules complémentaires
Pour des conseils utiles sur la mise à jour des extensions pour Firefox 6, voir Updating add-ons for Firefox 6.
Note : Firefox 6 requiert que les composants binaires soient recompilés, comme pour toutes les versions majeures de Firefox. Pour plus de détails, voir Interfaces Binaires.
Modules de code JavaScript
FileUtils.jsm
- La méthode
openSafeFileOutputStream()
ouvre maintenant les fichiers avec l'indicateur de comportementDEFER_OPEN
au lieu d'essayer de les ouvrir immédiatement.
XPCOMUtils.jsm
- La nouvelle méthode
importRelative()
vous permet de charger un module de code JavaScript depuis un chemin relatif au chemin d'un autre module de code JavaScript. Cela rend plus facile la construction de modules qui dépendent les uns des autres.
XPCOM
nsCOMArray<T>
dispose désormais d'une méthodeRemoveObjectsAt()
pour enlever plusieurs objets à la fois à partir d'un tableau.
Utilisation du DOM depuis le chrome
- Utilisation de l'API DOM File dans du code chrome
-
Bien que vous avez toujours pu utiliser l'API DOM File à partir du code chrome, le constructeur
File
supporte désormais la spécification d'un chemin d'accès local lorsqu'il est utilisé depuis le chrome. De plus, vous pouvez également spécifier le fichier pour accéder à l'aide de l'API DOM File en utilisant un objetnsIFile
.
Changements dans les interfaces
nsINavHistoryQueryOptions
supporte désormais le tri par orde de frecency à l'aide des nouvelles constantesSORT_BY_FRECENCY_ASCENDING
etSORT_BY_FRECENCY_DESCENDING
.nsIFilePicker
a un nouvel attributnsIFilePicker.addToRecentDocs
, qui vous permet d'indiquer que le fichier sélectionné doit être ajoutée à la liste "documents récents" de l'utilisateur si il y en a une. Cet attribut n'a aucun effet en mode navigation privée.- Les méthodes de
nsINavBookmarkObserver
avec les paramètres ID d'un élément exigent désormais un GUID. nsIPrefBranch.clearUserPref()
ne génère plus d'exception si la préférence spécifié n'existe pas ou n'a pas de valeur définie par l'utilisateur. Désormais, il ne fait rien.- L'interface
nsIMemoryReporter
prend désormais en charge l'indication du type de mémoire qui est décrite (mappée, heap, ou autre). - L'attribut
stateData
densISHEntry
renvoi désormais ànsIStructuredCloneContainer
. nsIURI
a un nouvel attributnsIURI.ref
, qui renvoie la partie de référence (la partie après le "#") de l'URI. Il y a également de nouvelles méthodesnsIURI.cloneIgnoringRef()
qui clonensIURI
sans l'élément ref etnsIURI.equalsExceptRef()
qui se compare à un autrensIURI
en ignorant l'élément ref.
Nouvelles interfaces
mozIAsyncFavicons
-
Un nouveau service qui vous permet d'accéder au service favicon de façon asynchrone.
nsIEventSource
-
Détails à venir.
nsIGSettingsCollection
-
Détails à venir.
nsIGSettingsService
-
Détails à venir.
nsIHttpUpgradeListener
-
L'interface de rappel pour le traitement des demandes de mise à niveau HTTP via la méthode
nsIHttpChannelInternal.HTTPUpgrade()
. nsIStructuredCloneContainer
-
Un conteneur pour les objets qui ont été sérialisé à l'aide de l'algorithme de clonage structuré.
nsITelemetry
-
Implémentation du support de la télémétrie permettant d'enregistrer des données de télémétrie pour être utilisé pour présenter des histogrammes à des fins de suivi des performances. Voir bug 649502 et bug 585196.
nsITimedChannel
-
Voir bug 576006.
nsIWebSocketListener
-
Voir bug 640003.
nsIWebSocketProtocol
-
Voir bug 640003.
Interfaces supprimées
Les interfaces suivantes ont été supprimées car elles n'étaient plus indispensables :
nsIDOMDocumentEvent
(voir bug 655517)nsIDOMDocumentTraversal
(voir bug 655514)nsIDOMDocumentRange
(voir bug 655513)IWeaveCrypto
(voir bug 651596)nsIDOM3DocumentEvent
(voir bug 481863)nsIDOMAbstractView
nsILiveTitleNotificationSubject
nsIPlugin
(voir bug 637253)nsIPluginInstance
(voir bug 637253)nsIHTMLEditRules
(voir bug 633750)nsIXSLTProcessorObsolete
(voir bug 649534)
Autres changements
- Utilisation des préférences à partir du code d'application
-
Une nouvelle API statique est disponible pour accéder facilement aux préférences, ce n'est disponible que pour le code d'application et ne peut pas être utilisé par les modules complémentaires.