Firefox 7 pour les développeurs
Firefox 7, basé sur Gecko 7.0, est sorti le 27 september 2011. Cet article fournit des informations à propos des changements qui affectent les développeurs dans cette version.
Changements pour les développeurs Web
HTML
- La propriété
profile
deHTMLHeadElement
a été supprimée, cette propriété est obsolète depuis Gecko 2.0. - Les propriétés
x
ety
deHTMLImageElement
ont été supprimées. - Le paramètre
before
de la méthodeadd()
deHTMLSelectElement
est désormais optionnel. - L'attribut
background
de l'élément<body>
n'est plus résolu en tant qu'URI, ce qui est conforme à la spécification HTML courante. - L'attribut
label
de l'élément<option>
reflète désormais la valeur du contenu texte de l'élément si l'attribut n'est pas spécifié.
Canvas
- Dans le cadre du projet Azure, le Backend Azure Direct2D a été implémenté et améliore considérablement les performances des canvas 2D.
- La spécification de valeurs invalides lors de l'appel de
setTransform()
,bezierCurveTo()
ouarcTo()
ne renvoie plus d'exception, ces appels sont à présent ignorés silencieusement. - La méthode
isPointInPath()
considère maintenant correctement la matrice de transformation lors de la comparaison du point spécifié au tracé en cours. - L'appel de
strokeRect()
avec une largeur et une hauteur de zéro n'a désormais plus aucun effet. - L'appel de
drawImage()
avec une largeur ou hauteur<canvas>
de zéro lance désormaisINVALID_STATE_ERR
. - L'appel de
drawImage()
avec des coordonnées non-finies ne renvoie plus d'exception. - La méthode
toDataURL()
accepte désormais un second paramètre pour contrôler la qualité JPEG. - Le support des opérations non-standards
clear
etover
deglobalCompositeOperation
a été enlevé. - Les ombres sont désormais uniquement dessinées pour les opérations de composition de
source-over
. - Vous pouvez désormais configurer la règle de remplissage utilisé par la toile en définissant l'attribute
mozFillRule
au contexte. - Le support des attributs expérimentaux
mozDash
,mozDashOffset
,mozCurrentTransform
etmozCurrentTransformInverse
a été ajouté. - Le support des méthodes non-standards
mozDrawText()
,mozMeasureText()
,mozPathText()
etmozTextAlongPath()
a été retiré.
CSS
text-overflow
est désormais supporté.- La propriété
-moz-orient
a été corrigée pour que les éléments<progress>
qui sont orientés verticalement aient des dimensions par défaut appropriées.
MathML
- XLink href a été rétabli et l'attribut
href
de MathML3 est maintenant supporté. Les développeurs sont encouragés à passer à la dernière syntaxe. - Le support de l'attribut
voffset
sur les éléments<mpadded>
a été ajouté et le comportement de l'attributlspace
a été fixé. - L'élément de premier niveau
<math>
accepte maintenant tous les atributs de l'élément<mstyle>
. - Le support des polices Asana Math a été ajouté.
- L'épaisseur des lignes
medium
des barres de fraction des éléments<mfrac>
a été corrigé pour correspondre à l'épaisseur par défaut. - Les noms des espaces négatifs sont maintenant supportés.
DOM
- Les méthodes non-standards
getAsBinary()
,getAsDataURL()
etgetAsText()
de l'interfaceFile
ont été supprimées ainsi que les propriétés non-standardsfileName
etfileSize
. - L'interface
FormData
ne signale plus le nom du fichier comme une chaîne vide lors de l'envoi l'en-tête HTTPContent-Disposition
si les données ont été définies à l'aide deBlob
. Cela corrige les erreurs qui avaient lieu sur certains serveurs. - L'attribut
element.dir
renvoie désormais toujours son résultat en minuscules, comme l'exige la spécification HTML. - la méthode
readAsArrayBuffer()
deFileReader
est maintenant implémentée. document.createEntityReference
a été retiré. Elle n'a jamais été correctement implémentée et n'est pas intégrée dans la plupart des autres navigateurs.document.normalizeDocument
a été retiré. UtilisezNode.normalize
à la place.DOMTokenList.item
renvoie désormaisundefined
siindex
est en dehors des limites, auparavant il renvoyénull
.Node.getFeature
a été supprimé.- Les interfaces
HTMLInsElement
etHTMLDelElement
ont été retirées, depuis que les éléments<ins>
et<del>
utilisent l'interfaceHTMLModElement
. - Dans le but d'être conforme à la prochaine spécification DOM4 où
Attr
n'hérite plus deNode
(il l'a fait dans les DOM Core 1, 2 and 3), beaucoup de propriétés et méthodes deNode
sur l'interfaceAttr
sont maintenant des rapports d'alertes que nous nous efforçons de retirer dans une version ultérieure. - Ajout du support des propriétés
window.ondeviceorientation
etwindow.ondevicemotion
sur les objetswindow
. window.resizeTo
,window.resizeBy
,window.moveTo
etwindow.moveBy
ne s'appliquent plus à la fenêtre principale.
JavaScript
- La propriété
Function.arity
a été enlevée, utilisezFunction.length
à la place.
WebSockets
- la préférence
network.websocket.max-connections
est utilisée pour déterminer le nombre maximum de connexions à WebSocket qui peuvent être ouvertes en même temps. La valeur par défaut est 200. - La version 8 du protocole WebSocket (comme spécifié par IETF draft 10) est maintenant utilisé à la place de la version 7 du protocole utilisé par Firefox 6.
- L'API WebSocket est maintenant disponible sur Firefox Mobile.
Console API
- Les messages enregistrés avec
console.log
alors que la console web n'est pas ouverte sont toujours enregistrés, bien qu'ils ne s'affichent pas lorsque la console web est ouverte.
Web timing
- Première implémentation de la spécification Navigation Timing qui fournit des données pouvant être utilisées pour mesurer les performances d'un site.
XML
- En plus de la précédente prise en charge de
text/xsl
, les feuilles de style XSLT peuvent désormais utiliser les médias Internet officiels (MIME) de typeapplication/xslt+xml
(dans la feuille de style d'instruction de traitement ou le champ d'en-tête HTTP Link).
Changements pour les développeurs de Mozilla et de modules complémentaires
Ces changements affectent les développeurs d'extensions ainsi que les développeurs qui travaillent sur ou avec le code de Mozilla lui-même. Les developpeurs d'extensions doivent voir Updating extensions for Firefox 7 pour plus d'informations.
Note : Firefox 7 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 nouvelle méthode
openFileOutputStream()
ouvre un flux de sortie du fichier, la variante non-sécurisée, pour écrire dedans.
AddonManager.jsm
- Le gestionnaire de modules complémentaires a de nouvelles méthodes pour gérer les listes d'extensions qui ont changé durant le démarrage des applications :
AddonManager.addStarupChange()
,AddonManager.removeStartupChange()
etAddonManager.getStartupChanges()
. - .
XUL
- Les éléments
<tree>
peuvent désormais conserver l'état des triangles d'affichage si les nœuds référencés par lesdatasources
ont tous des ID uniques spécifiés par les attributs "id". - Les éléments
<panel>
peuvent désormais être configurés pour permettre à l'utilisateur de les faire glisser en cliquant n'importe où sur leur arrière-plan avec le nouvel attributbackdrag
.
XPCOM
- La nouvelle méthode
Components.utils.schedulePreciseGC()
vous permet de programmer un cycle approfondi de collection de garbage de se produire à un moment donné lorsqu'aucun code JavaScript n'est exécuté, un rappel est exécuté une fois la collecte terminée. - La méthode
Components.utils.unload()
vous permet de décharger les modules de code JavaScript déjà chargés en appelantComponents.utils.load()
.
Rapporteur de mémoire
Ajout du support pour le multi-reporters, c'est le rapporteur de mémoire qui rassemble des données sur demande et effectue un rappel pour chaque résultat généré. Voir nsIMemoryMultiReporter
et nsIMemoryMultiReporterCallback
pour les interfaces nécessaires, ainsi que les méthodes nsIMemoryReporterManager.registerMultiReporter()
et nsIMemoryReporterManager.unregisterMultiReporter()
.
Changements de l'expérience utilisateur
- Les options des extensions peuvent désormais être être affichées à l'intérieur du gestionnaire de modules complémentaires.
- La destination des téléchargements est désormais gardée en mémoire sur une base site par site. Ces données peuvent être accessibles par DownloadLastDir.jsm.
Changements dans le système de compilation
- L'API d'intégration d'ActiveX n'est plus compilée et son support a été retiré du système de compilation. Des interfaces ont également été supprimées, voir Interfaces supprimées.
- Vous n'avez plus besoin de préciser
-Zc:wchar_t-
lors de la compilation sous Windows. Pour plus de détails, voir la documentation sur la compilation.
Changements dans les interfaces
nsISocketTransport
offre désormais un nouveau drapeau de connexion :DISABLE_IPV6
, cela entraîne des tentatives de connexion uniquement aux adresses IPv4, en ignorant toutes les adresses IPv6 disponibles. De plus,nsIDNSService
offre désormais un nouveau drapeau de résolution :RESOLVE_DISABLE_IPV6
, ce qui entraîne un résolution des noms de domaine en ne tenant compte que des hôtes IPv4 et en ignorant toutes les adresses IPv6 disponibles. Ces changements permettent d'implémenter la stratégie "happy eyeballs" pour améliorer le temps de réponse lors d'une tentative de connexion sur les hôtes qui supportent à la fois IPv4 et IPv6 (en particulier ceux qui ont brisé la connectivité IPv6).inIDOMUtils
a deux nouvelles méthodes,inIDOMUtils.getChildrenForNode()
qui renvoie une liste des nœuds enfants d'un noeud etinIDOMUtils.getUsedFontFaces()
qui renvoie la liste des police de caractères utilisées dans une gamme.- L'interface
nsIMarkupDocumentViewer_MOZILLA_2_0_BRANCH
a été intégrée dans l'interfacensIMarkupDocumentViewer
. - L'interface
nsIDOMWindow2
a été intégrée dans l'interfacensIDOMWindow
. - L'interface
nsIDOMWindow_2_0_BRANCH
a été intégrée dans l'interfacensIDOMWindowInternal
. - Les méthodes
nsINavHistoryObserver
avec des paramètres d'URI exigent désormais un GUID. - L'interface
nsISHistory_2_0_BRANCH
a été intégrée dans l'interfacensISHistory
. -
nsITelemetry
a une nouvelle méthode,nsITelemetry.getHistogramById()
qui retourne un histogramme par son ID, et un nouvel attributcanRecord
qui, lorsqu'il est défini surfalse
désactive l'enregistrement des statistiques de télémétrie. Les statistiques de télémétrie ne sont plus enregistrées lorsque l'on est en mode de navigation privée. (voir bug Firefox 661574 et bug Firefox 661573) Les histogrammes de télémétrie définis avecnsITelemetry.newHistogram()
ne seront pas rapportés dans le ping de télémétrie. - L'interface
nsIMemoryReporter
a été sensiblement modifiée, si vous l'utilisez, vous devez faire quelques ajustements à votre code. - Les en-têtes
nsIXMLHttpRequest
fixées parnsIXMLHttpRequest.setRequestHeader()
sont envoyées à la demande lorsque l'on suit une redirection. Auparavant, ces en-têtes n'auraient pas été envoyées. nsIDocShell
a un nouvel attributallowWindowControl
. Si il esttrue
, le contenu du docshell est autorisé à contrôler la fenêtre (c'est-à-dire la déplacer ou la redimensionner).- L'interface
nsIThreadInternal2
a été intégrée dans l'interfacensIThreadInternal
.
Nouvelles interfaces
nsIDOMFontFace
-
Décrit une seule police de caractères.
nsIDOMFontFaceList
-
Décrit une liste de polices de caractères, chacune représentée par
nsIDOMFontFace
.
Interfaces supprimées
Les interfaces suivantes ont été supprimées car elles n'étaient plus indispensables :
nsIDOM3Attr
nsIDOM3Node
nsIDOM3TypeInfo
nsIDOM3Text
nsIDOMDocumentStyle
nsIDOMNSDocument
nsIDOMNSFeatureFactory
nsIDOMNSHTMLDocument
nsIDOMNSHTMLFormElement
nsIDOMNSHTMLHRElement
nsIDOMNSHTMLTextAreaElement
Les interfaces suivantes ont été supprimées dans le cadre du retrait de l'API ActiveX :
DITestScriptHelper
DWebBrowserEvents
DWebBrowserEvents2
IDispatch
IMozControlBridge
IMozPluginHostCtrl
IWebBrowser
IWebBrowser2
IWebBrowserApp
IXMLDocument
IXMLElement
IXMLElementCollection
IXMLError
nsIActiveXSecurityPolicy
nsIDispatchSupport
nsIMozAxPlugin
nsIScriptEventHandler
nsIScriptEventManager
Autres changements
- La structure de la fenêtre de la bibliothèque (
places.xul
) a été nettoyée. Cela pourrait casser les extensions et les thèmes - L'apparence de la fenêtre d'aperçu avant impression a été modernisé et les auteurs de thèmes sont invités à avoir le même style en utilisant les pseudo-éléments CSS
::-moz-page
,::-moz-page-sequence
et::-moz-scrolled-page-sequence