Firefox 5 pour les développeurs
Firefox 5, basé sur Gecko 5.0, est sorti le 21 juin 2011. Cet article fournit des informations à propos des changements qui affectent les développeurs dans cette version.
Changements pour les développeurs Web
HTML
- Tous les éléments HTML ont maintenant l'attribut
accessKey
, ainsi que les méthodesblur()
,click()
etfocus()
. Elles sont spécifiées dans l'interfaceHTMLElement
. - Afin d'être conforme à la spécification HTML5, le support des jeux de caractères UTF-7 et UTF-32 a été retiré.
- Lorsque l'on est en mode quirks, les
<map>
vides ne sont plus ignorées en faveur des non-vides quand elles correspondent. Pour plus de détails, voir les notes de Gecko sur l'élément<map>
. - Firefox mobile pour Android supporte désormais les polices WOFF pour
@font-face
. - WebGL ne charge plus les textures provenant d'autres domaines que celui d'origine, par mesure de sécurité. Le support du contrôle d'accès d'HTTP devrait arriver dans le futur pour que le chargement des textures se fasse en toute sécurité.
Améliorations de Canvas
- L'environnement de dessin 2D
<canvas>
supporte désormais la spécification d'un objetImageData
en entrée de la méthodecreateImageData()
; cela créé un nouvel objetImageData
qui est initialisé avec les mêmes dimensions que l'objet spécifié, mais tous les pixels sont toujours prédéfinis en noir transparent. ceci a été documenté comme déjà mis en oeuvre alors que ça ne l'était pas. - Spécifier des valeurs non finies lors de l'ajout de couleur arrête l'ajout via un appel à
addColorStop()
de la méthodeCanvasGradient
en renvoyant désormaisINDEX_SIZE_ERR
à la place deSYNTAX_ERR
. - La méthode
HTMLCanvasElement
toDataURL()
now correctly lower-cases the specified MIME type before matching. getImageData()
accepte maintenant correctement les rectangles qui vont au-delà des limites de la zone, les pixels qui sont en dehors de la zone sont mis en noir transparent.drawImage()
etcreateImageData()
traitent désormais les arguments négatifs conformément à la spécification, en retournant le rectangle autour de l'axe approprié. Nous avons besoin d'un article sur CSS sizing et son fonctionnement.- La spécification de valeurs non-finies lors de l'appel de
createImageData()
renvoi maintenant l'exceptionNOT_SUPPORTED_ERR
. createImageData()
etgetImageData()
retournent maintenant correctement une valeur d'un pixel en données d'image si un rectangle plus petit qu'un petit qu'un pixel est spécifié.- La spécification d'un angle négatif lors de l'appel de
createRadialGradient()
renvoi désormaisINDEX_SIZE_ERR
. - La spécification d'une image
null
ouundefined
lors de l'appel decreatePattern()
oudrawImage()
renvoi désormais l'exceptionTYPE_MISMATCH_ERR
. - La spécification de valeurs incorrectes pour
globalAlpha
ne renvoie plus l'exceptionSYNTAX_ERR
, cela est désormais ignoré silencieusement. - La spécification de valeurs incorrectes lors de l'appel de
translate()
,transform()
,rect()
,clearRect()
,fillRect()
,strokeRect()
,lineTo()
,moveTo()
,quadraticCurveTo()
ouarc()
ne renvoie plus une exception ; ces appels sont désormais ingorés silencieusement. - Le réglage de la valeur de
shadowOffsetX
,shadowOffsetY
oushadowBlur
avec une valeur incorrecte est désormais ignoré silencieusement. - Le réglage de la valeur de
rotate
ouscale
avec une valeur incorrecte est désormais ignoré silencieusement.
CSS
- Animations CSS
-
Le support pour les animations CSS a été ajouté, pour l'instant il faut utilisé le préfixe
-moz-
.
DOM
- L'objet
selection
de la méthodemodify()
a été modifiée afin que la sélection de la granularité "mot" ne contienne plus les espaces à la fin, ce qui est plus cohérent et correspond au comportement de WebKit. - La méthode
window.setTimeout()
veille maintenant à ne plus envoyer de délai d'attente dans les onglets inactifs. En plus, le délai est imbriqué à la valeur minimale autorisée par la spécification HTML5 : 4 ms (au lieu de 10 ms qui sert à fixer). - De même, la méthode
window.setInterval()
ne serre pas plus d'un intervalle par seconde dans les onglets inactifs. XMLHttpRequest
supporte maintenant l'évènementloadend
. C'est envoyé après qu'un transfert soit terminé (c'est-à-dire après l'évènementabort
,error
ouload
). Vous pouvez utiliser cette fonction pour gérer les tâches qui doivent être exécutées indépendamment de la réussite ou l'échec d'un transfert.Blob
et, par extension, les objets deFile
de la méthodeslice()
ont été supprimés et remplacés par une nouvelle, avec une syntaxe qui la rend mieux compatible avec les méthodesArray.slice()
etString.slice()
dans JavaScript. Cette méthode s'appelle pour l'instantmozSlice()
.- La valeur de
window.navigator.language
est maintenant déterminée en examinant la valeur de l'en-tête HTTPAccept-Language
. - La propriété
Node.prefix
est maintenant en lecture seule, comme l'exige la spécification DOM. HTMLVideoElement
supporte maintenant des propriétés expérimentales qui permettent d'obtenir des informations sur les statistiques des vidéos comme le nombres d'images par seconde.
JavaScript
- Les expressions régulières ne sont plus appelable comme si il s'agissait de fonctions, ce changement a été fait de concert avec l'équipe de WebKit afin d'assurer la compatibilité (voir la bogue WebKit 28285. Cette fonctionnalité existait depuis longtemps déjà mais n'a jamais été documentée (du moins, pas sur MDN).
- La méthode
Function.prototype.isGenerator()
est désormais supportée, ce qui vous permet de déterminer si une fonction est génératrice. - Les mots suivants ont été réservés :
class
,enum
,export
,extends
,import
etsuper
. Auparavant, ils étaient uniquement considérés comme réservés en mode strict. - Les documents DOM crées dans le chrome ne peuvent plus être exposés à des scripts en sandbox.
- Le parser JSON a été ré-écrit pour améliorer la vitesse et la conformité. Ce qui inclut un correctif pour le bug Firefox 572279.
SVG
- L'attribut SVG
class
peut maintenant être animé. - Les interfaces SVG suivantes sont liées à des interfaces DOM représentant les listes d'objets qui sont maintenant indexables et peuvent être consultées comme des tableaux ; en outre, ils ont une propriété
length
indiquant le nombre d'éléments dans les listes :SVGLengthList
,SVGNumberList
,SVGPathSegList
etSVGPointList
.
HTTP
- Firefox n'envoi plus l'en-tête HTTP
Keep-Alive
, nous n'avons pas pu le formater correctement et il était redondant car on retrouve la valeur "keep-alive" dans l'en-têteConnection
ouProxy-Connection
. - Le modèle de transaction HTTP a été mis à jour pour être plus intelligent sur la réutilisation des connexions dans le pool de connexions persistantes, au lieu de traiter le pool pool comme une file d'attente, Necko tente maintenant de trier le pool avec des connexions avec la fenêtre qui a le plus de fenêtre de congestion (CWND) en premier. Cela peut réduire le temps d'aller-retour (RTT) des transactions HTTP en évitant la nécessité de développer des connexions fenêtres dans de nombreux cas.
- Firefox gère désormais l'en-tête de réponse HTTP
Content-Disposition
plus efficacement si les deux paramètresfilename
etfilename*
sont fournis, il regarde à travers tous les noms fournis, en utilisant le paramètrefilename*
si il est disponible, même si un paramètrefilename
est inclus en premier. Auparavant, le premier paramètre correspondant était utilisé, ce qui empêchait l'utilisation d'un nom plus approprié. Voir bug Firefox 588781.
MathML
- Support des opérateurs embellis
Outils pour les développeurs
- L'objet
Console
de la Console Web a maintenant une méthodedebug()
, qui est un alias pour la méthodelog()
, cela améliore la compatibilité avec certains sites.
Changements pour les développeurs de Mozilla et de modules complémentaires
Pour des conseils utiles sur la mise à jour des extensions pour Firefox 5, voir Updating add-ons for Firefox 5.
Note : Firefox 5 requiert que les composants binaires soient recompilés, comme pour toutes les versions majeures de Firefox. Pour plus de détails, voir Interfaces Binaires.
Changements dans les modules de code JavaScript
Nouveau module de code JavaScript
- Le module de code
Dict.jsm
a été ajouté, il fournit une API pour les dictionnaires de paires clé/valeur.
NetUtil.jsm
- La méthode
asyncFetch()
supporte désormais la spécification de la source en tant quensIInputStream
.
Changements dans les interfaces
- L'interface
nsIHttpChannelInternal
a maintenant de nouveaux attributs donnant accès à des informations sur les points finaux des canaux des adresses et des ports. Ces informations sont fournies principalement à des fins de débogage. - Les attributs
width
etheight
de l'élément<canvas>
sont désormais inclus dans IDL comme des entiers non signés au lieu d'être signés (voirHTMLCanvasElement
). - Les interfaces
nsIAppStartup2
etnsIAppStartup_MOZILLA_2_0
ont été fusionnées avec l'interfacensIAppStartup
. - L'interface
nsIDocShell_MOZILLA_2_0_BRANCH
a été fusionnée avec l'interfacensIDocShell
. - L'interface
nsIFocusManager_MOZILLA_2_0_BRANCH
a été fusionnée avec l'interfacensIFocusManager
. - L'interface
nsIHTMLEditor_MOZILLA_2_0_BRANCH
a été fusionnée avec l'interfacensIHTMLEditor
.
Nouvelle interface
- Ajout de
nsIDOMAnimationEvent
.AnimationEvent
Interfaces supprimées
Les interfaces suivantes ont été supprimées car elles n'étaient plus indispensables :
nsICiter
(voir bug Firefox 633066)nsIDOM3Document
(voir bug Firefox 639849)nsIFIXptrEvaluator
nsISelectElement
(voir bug Firefox 619996)
Aide au débogage
- La nouvelle aide
DebugOnly<T>
permet de déclarer des variables seulement pour les versionsDEBUG
.
API JavaScript (SpiderMonkey)
JS_DoubleToInt32()
etJS_DoubleToUint32()
ont été ajoutés, pour convertir des valeursjsdouble
en nombres entiers de type C et en entiers non-signés.
Changement dans le système de compilation
- Vous pouvez désormais compiler Firefox sans le fichier
mozconfig
,l'option --enable-application
paramètre par défaut à "browser". Après avoir extrait ou téléchargé le code, vous pouvez tout simplement faireconfigure && make
(oumake -f client.mk
) pour compiler Firefox.