--- title: Firefox 4 pour les développeurs slug: Mozilla/Firefox/Releases/4 tags: - Firefox - Firefox 4 translation_of: Mozilla/Firefox/Releases/4 original_slug: Mozilla/Firefox/Versions/4 ---
Firefox 4, est sorti le 22 mars 2011, améliore les performances, le support d'HTML5 et d'autres technologies du web et aussi la sécurité. Cet article fournit des informations sur cette version et sur les fonctionnalités qui sont disponibles pour les développeurs Web, les développeurs de modules complémentaires et les développeurs de la plate-forme Gecko.
Gecko utilise maintenant le parseur HTML5, qui corrige des bugs, améliore l'interopérabilité et les performances. Il permet également d'intégrer du contenu SVG et MathML directement dans le code HTML.
<input>
, la validation des données et d'autres modifications.<article>
, <section>
, <nav>
, <aside>
, <hgroup>
, <header>
et <footer>
.<mark>
, <figure>
, et <figcaption>
.Les modifications suivantes ont étés apportées à l'interface CanvasRenderingContext2D
pour permettre à l'implémentation de <canvas>
d'être en conformité avec la spécification :
arc()
lance désormais correctement l'exception INDEX_SIZE_ERR
.createLinearGradient()
et createRadialGradient()
lance désormais NOT_SUPPORTED_ERR
au lieu de SYNTAX_ERR
.miterLimit
pour une valeur négative ne lance plus une exception, mais ignore plutôt les valeurs non-positives.lineWidth
pour une valeur négative ne lance plus une exception, mais ignore plutôt les valeurs non-positives.putImageData()
supporte désormais les paramètres optionnels dirtyX
, dirtyY
, dirtyWidth
et dirtyHeight
.<textarea>
est maintenant redimensionnable par défaut ; pour le désactiver, vous pouvez utiliser la propriété CSS resize
.canvas.getContext
et canvas.toDataURL
ne lancent plus d'exceptions lorsqu'ils sont appelés avec des arguments non reconnus.<canvas>
supporte maintenant la méthode spécifique à Mozilla, mozGetAsFile()
, qui permet d'obtenir un fichier basé sur l'image d'un contenu canvas. Voir HTMLCanvasElement
pour les détails.canvas2dcontext.lineCap
et canvas2dcontext.lineJoin
ne lancent plus d'exceptions lorsqu'ils sont réglés avec une valeur non reconnue.canvas2dcontext.globalCompositeOperation
ne lance plus d'exception lorsqu'il est réglé avec une valeur non reconnue et ne supporte plus la valeur darker
, qui n'est pas un standard.<spacer>
, était absent de tous les autres navigateurs, a été enlevé.<isindex>
, qui était crée par document.createElement()
, est maintenant crée comme un simple élément sans propriétés ou méthodes.click()
sur l'élément <input>
pour ouvrir le sélecteur de fichiers. Voir l'exemple dans l'article Using files from web applications.<input>
supporte un nouvel attribut mozactionhint
, qui permet de spécifier l'étiquette de la touche Entrée sur un clavier virtuel.<script>
à l'intérieur des éléments <iframe>
, <noembed>
et <noframes>
sont maintenant exécutés, contrairement aux versions précédentes de Firefox. Ceci est conforme à la spécification et correspond au comportement des autres navigateurs.-moz-calc
a été ajouté. Cela permet de spécifier des valeurs de <length>
comme des expressions mathématiques.:-moz-any
pour grouper les sélecteurs et factoriser des combinateurs.-moz-image-rect
permet d'utiliser des subrectangles en tant que background-image
.-moz-element
et la fonction DOM document.mozSetImageElement()
pour une utilisation arbitraire des éléments HTML comme fond.Propriété | Description |
-moz-font-feature-settings |
Permet de personnaliser les fonctionnalités avancées des polices OpenType. |
-moz-tab-size |
Spécifie la largeur d'un espace de tabulation (U+0009) lors du rendu du texte. |
resize |
Permet de modifier les dimensions d'un élément. |
Pseudo-class | Description |
:-moz-handler-crashed |
Utilisé pour le style d'un élément dont le plugin a planté. |
:-moz-placeholder |
Appliquée à l'espace texte réservé dans les champs des formulaires. |
:-moz-submit-invalid |
Appliquée au bouton d'envoi des formulaires quand un ou plusieurs des champs ne sont pas valides. |
:-moz-window-inactive |
Appliquée aux éléments d'une fenêtre inactive. |
:invalid |
Automatiquement appliquée aux champs <input> dont le contenu est invalide. |
:optional |
Automatiquement appliquée aux champs <input> qui ne spécifient pas l'attribut required . |
:required |
Automatiquement appliquée aux champs <input> qui spécifient l'attribut required . |
:valid |
Automatiquement appliquée aux champs <input> dont le contenu a été validé avec succès. |
Pseudo-selector | Description |
:-moz-focusring |
Permet de spécifier l'apparence d'un élément lorsque Gecko estime que l'on doit se fixer dessus. |
Fonction | Description |
:-moz-any |
Permet de grouper les sélecteurs et de factoriser les combinateurs. |
-moz-calc |
Permet de spécifier des valeurs de <length> comme des expressions mathématiques. |
-moz-element |
Permet d'utiliser un élément arbritaire de fond pour background-image and background . |
-moz-image-rect |
Permet d'utiliser un subrectangle d'une image comme background-image or background . |
Ancien nom | Nouveau nom | Notes |
-moz-background-size |
background-size |
Le nom -moz-background-size n'est plus supporté. |
-moz-border-radius |
border-radius |
L'ancien nom est encore pris en charge pour une durée limitée, le temps de mettre vos sites à jour. Le changement du rendu a été fait pour correspondre à la dernière version de la spécification. |
-moz-box-shadow |
box-shadow |
text-shadow
plafonne désormais son rayon de flou à 300px, pour des raisons de bon sens et de performances.overflow
ne s'applique plus au groupe d'éléments de tableaux (<thead>
, <tbody>
, and <tfoot>
).-moz-appearance
supporte désormais la valeur -moz-win-borderless-glass
, qui s'applique à un élément Aero sans bordure.-moz-device-pixel-ratio
a été ajoutée, permettant l'utilisation de pixels de l'appareil par ratio de pixels CSS qui sera utilisé dans les Media Queries.<img>
, ainsi qu'avec CSS background-image
.buffered
buffered
sur les éléments <video>
and <audio>
est maintenant supporté, vous permettant de déterminer quel fichier multimédia a été tamponné. L'interface DOM TimeRanges
a été mise en place pour ce support.preload
preload
de la spécification HTML5 a été implémenté, remplaçant l'attribut autobuffer
précédemment mis en place (et qui n'est plus pris en charge). Cela affecte les éléments <video>
et <audio>
ainsi que l'interface nsIDOMHTMLMediaElement
.x
, y
, dx
, and dy
sur les éléments SVG <text>
et <tspan>
. Cela vous permet de contrôler le positionnement de chaque caractère d'une chaîne, individuellement.Range
a désormais les méthodes range.getClientRects()
et range.getBoundingClientRect()
.setCapture()
et releaseCapture()
originaires d'Internet Explorer. Voir bug 503943.window.history
, supporte maintenant les nouvelles méthodes HTML5 pushState()
et replaceState()
.window.mozRequestAnimationFrame()
et de la propriété window.mozAnimationStartTime
, offre un moyen de créer des animations qui sont synchronisées avec les autres.Plusieurs éléments HTML ont vu leur interface DOM modifier, conformément à la spécification HTML5.
Interface dans Firefox 3.6 | Interface dans Firefox 4 | Elements HTML |
HTMLSpanElement |
HTMLElement |
<abbr> , <acronym> , <address> , <b> , <bdo> , <big> , <blink> , <center> , <cite> , <code> , <dd> , <dfn> , <dt> , <em> , <i> , <kbd> , <listing> , <nobr> , <plaintext> , <s> , <samp> , <small> , <strike> , <strong> , <sub> , <sup> , , <tt> , <u> , <var> , <xmp> |
HTMLDivElement |
HTMLElement |
<noembed> , <noframes> , <noscript> |
HTMLWBRElement |
HTMLElement |
<wbr> |
<textarea>
peut maintenant être commandé via l'attribut DOM wrap
. bug 41464<script>
crées avec document.createElement()
et insérés dans un document, se comportent désormais conformément à la spécification HTML5. Les scripts avec l'attribut src
s'exécute dès que possible (sasn maintenir la commande) et les scripts sans l'attribut src
s'exécute de manière simultanée. Pour faire des scripts d'insertion de scripts qui ont l'attribut src
qui exécute l'ensemble dans l'ordre d'insertion, pour eux .async=false
.file
proposent désormais la propriété url
.element.isContentEditable
a été implémentée.document.currentScript
vous permet de déterminer quel script de l'élément <script>
est en cours d'exécution. les nouveaux évènements element.onbeforescriptexecute
et element.onafterscriptexecute
sont déclenchés avant et après l'éxécution d'un élément script.mozSourceNode
à l'objet DragTransfer
.selection.modify()
à l'objet Selection
, ce qui vous permet de facilement modifier la sélection de texte courant ou la position du curseur dans une fenêtre de navigateur.window.directories
et de la fonctionnalité directories
pour window.open
, qui ne sont plus supportés dans les autres navigateurs, ont été enlevés. Utiliser personalbar
à la place. bug 474058event.mozInputSource
a été ajoutée à l'interface utilisateur des évènements DOM, cette propriété non-standard vous permet de déterminer le type de l'appareil qui a généré un évènement.document.onreadystatechange
a été implémenté.document.createElement
n'accepte plus <
et >
autour du nom de balise en mode quirks.element.setCapture()
et document.releaseCapture()
ont été ajoutées, permettant à des éléments de poursuivre des évènements de la souris, même lorsqu'elle est en dehors de leur zone de suivi normal après que l'évènement mousedown
soit survenu.window.mozPaintCount
a été ajoutée, elle vous permet de déterminer le nombre de fois q'un document a été peint. Cela est particulièrement utile lors des tests de performance de votre application web.window.navigator.appVersion
et window.navigator.userAgent
. Utilisez window.navigator.language
ou l'en-tête Accept-Language à la place. bug 572656mozResponseArrayBuffer
.mozPressure
indiquant le niveau de pression supporté sur les périphériques d'entrée sensibles à la pression.window.URL.createObjectURL()
et window.URL.revokeObjectURL()
vous permettent de créer des URLs d'objet qui renvoient à des fichiers locaux.DOMImplementation.createHTMLDocument()
vous permet de créer un nouveau document HTML.Node.mozMatchesSelector()
retourne maintenant l'exception SYNTAX_ERR
si la chaîne de sélection spécifiée est invalide, au lieu de retourner false
.element.style.fill = 'lime'
. Voir element.style
pour plus de détails.privatebrowsingmode
qui décrit l'état du mode de navigation privée, en indiquant notamment si la session de navigation privée est temporaire ou permanente.window.getComputedStyle()
est maintenant optionnel, car elle l'est dans tous les autres navigateurs.StorageEvent
est maintenant conforme à la dernière version de la spécification.window.setTimeout()
est maintenant la préférence dom.min_timeout_value
.MozAfterPaint
n'est plus envoyé par défaut, en raison d'un potentiel problème de sécurité. Il peut être réactivé en définissant une préférence.Pour un aperçu des changements effectués dans JavaScript 1.8.5, voir New in JavaScript 1.8.5. Dans Firefox 4, JavaScript a un plus grand respect de la norme ECMAScript 5.
A partir de Firefox 4, la Console d'erreurs est désactivée par défaut. Vous pouvez la ré-activer en modifiant la préférence devtools.errorconsole.enabled
à true
et en redémarrant le navigateur.
Pour des conseils utiles sur la mise à jour des extensions existantes pour Firefox 4, voir Updating extensions for Firefox 4. Il y a plusieurs changements importants qui cassent la compatibilité avec les add-ons, donc n'oubliez pas de lire cet article.
Si vous développez des thèmes, vous devez lire Theme changes in Firefox 4 afin de connaître certains changements importants.
Services.jsm
fournit des accesseurs qui font qu'il est facile d'obtenir des références sur les services couramment utilisés, tels que le service de préférences ou le médiateur fenêtre.DownloadLastDir.jsm
fournit la variable gDownloadLastDir
qui contient une chaîne qui permet de connaître le chemin du répertoire dans lequel le dernier téléchargement s'est produit. Ce module gère les questions liées à la navigation privée.PerfMeasurement.jsm
propose une API qui mesure les performances au niveau du CPU dans du code JavaScript.NetUtil.jsm
offre maintenant la méthode readInputStreamToString()
, qui permet de lire des octets arbitraires à partir d'un flux dans une chaîne, même si le flux inclut des zéros.ChromeWorker
Plusieurs changements ont été apportés à l'élément <xul:tabbrowser>
ce qui impacte les extensions qui interagissent avec les onglets. En plus du support de app tabs, ces changements on aussi modifiés la barre d'onglet en une barre d'outils standard, ce qui permet à l'utilisateur de faire glisser les boutons dans la barre d'outils.
TabClose
, TabSelect
et TabOpen
non plus de bulle jusqu'à l'élément <xul:tabbrowser>
(gBrowser
). Les récepteurs d'évènements pour ces évènements doivent être ajoutés à gBrowser.tabContainer
plutôt qu'à gBrowser
directement.<xul:tabbrowser>
. Il peut donc être surposé directement avec overlays XUL. On peut également y accéder directement depuis JavaScript via gBrowser.tabContextMenu
. Voir cet article pour plus de détails.visibleTabs
a été ajoutée pour vous permettre de faire un tableau des onglets visibles, cela vous permet de déterminer quels onglets seront visibles dans l'ensemble de l'onglet courant. Par exemple, par Firefox Panorama l'utilise.showOnlyTheseTabs
a été ajoutée, elle est utilisée Firefox Panorama.showOnlyTheseTabs
, qui est utilisée par Firefox Panorama.getIcon
, qui vous permet d'obtenir le favicon d'un onglet sans avoir besoin de le remonter de l'élément <xul:browser>
.tabbrowser.tabs
, qui vous permet d'obtenir facilement une liste des onglets dans l'élement <xul:tabbrowser>
.pinTab
et unpinTab
vous permettent d'épingler et de relâcher des onglets (pour faire la différence entre les onglets normaux et ceux utilisés régulièrement).getTabModalPromptBox
et de l'attribut tabmodalPromptShowing
à <xul:tabbrowser>
pour le support des alertes majeures des onglets.<xul:popup>
n'est plus supporté, vous devez utilisez <xul:menupopup>
à la place. (Si vous continuez à utiliser popup
, vous allez rencontrer des problèmes, car l'élément n'a plus de signification particulière. par exemple, <xul:menuseparator>
peut apparaître transparent lorsqu'il est utilisé avec <xul:popup>
.)<xul:menupopup>
a maintenant une propriété triggerNode
, qui indique le noeud sur lequel l'évènement s'est produit et qui a causé l'ouverture de la popup. Cela a aussi nécessité l'ajout d'un paramètre de l'événement déclencheur de la méthode openPopup
. En plus de ça, la propriété anchorNode
a été ajoutée, elle renvoie l'ancre spécifiée lorsque la popup a été créé.<xul:panel>
propose maintenant les attributs panel.fade
et panel.flip
, qui sont utilisés pour configurer le comportement de la nouvelle "flèche" des panneaux de notification de style.Le support à distance de XUL n'est plus supporté, cela affecte les documents XUL qui étaient servis par HTTP, en outre, vous ne pouvez plus charger des documents XUL en utilisant l'URL file://
sauf en créant une préférence dom.allow_XUL_XBL_for_file
avec la valeur true
. Cependant, il y a une fonctionnalité de liste blanche qui peut être utilisée pour permettre à des domaines spécifiques de charger XUL à distance. L'extension Remote XUL Manager vous permet de gérer cette liste blanche.
readonly
fonctionne désormais correctement pour les champs XBL.<xul:resizer>
vous permet désormais d'utiliser l'attribut element
pour spécifier l'élément à redimensionner, au lieu de redimensionner la fenêtre.<xul:resizer>
a maintenant un attribut type
qui vous permet de spécifier que le redimensionnement est pour la fenêtre au lieu d'un élément, pour également empêcher de redimensionner deux fois une fenêtre en cours de préparation.:-moz-window-inactive
afin d'attribuer différents styles aux fenêtres en arrière-plan.emptytext
est désormais obsolète, vous devez utiliez placeholder
à la place.<xul:window>
propose maintenant un attribut accelerated
; quand il est vrai, le gestionnaire de la couche matérielle est autorisé à accélérer la fenêtre.<xul:stack>
supporte maintenant les attributs bottom
et right
.<xul:toolbox>
, vous permettant de détecter les changements sur les barres d'outils.alternatingbackground
pour l'élément <xul:tree>
n'est plus supporté, à la place, vous pouvez utiliser la pseudo-classe :-moz-tree-row
.<xul:tabs>
a maintenant la propriété tabbox
, en remplacement de l'ancienne propriété _tabbox
, qui a été abandonnée (et n'a jamais été documentée).<xul:window>
ont maintenant l'attribut drawintitlebar
, si il a la valeur true
, la zone de contenu de la fenêtre qui comprend la barre de titre, permet de dessiner dans la barre de titre.TabPinned
et TabUnpinned
, vous permettant de détecter quand des onglets sont épinglés ou relâchés.TabAttrModified
event est envoyé lorsque l'un des attributs (label
, crop
, busy
, image
, ou selected
) d'un onglet change.<xul:tab>
ont maintenant l'attribut pinned
, qui vous permet de savoir si un onglet est actuellement épinglé.setDirectionIndicator
sur les éléments <xul:tree>
n'a rien fait depuis un certain temps et maintenant elle n'est plus du tout utilisée.<xul:window>
possède maintenant l'attribut chromemargin
qui vous permet de définir la marge entre le chrome et le contenu de chaque côté d'une fenêtre.<xul:window>
possède maintenant l'attribut disablechrome
, il est utilisé pour cacher la plupart du chrome dans une fenêtre, comme pour about:addons
.<xul:window>
possède maintenant l'attribut disablefastfind
, qui vous permet de désactiver la barre de recherche dans une fenêtre lorsque le contenu ne le supporte pas. Il est par exemple utilisé par le panneau de gestion des modules complémentaires.<xul:toolbox>
, en configurant la propriété toolboxid
de <xul:toolbar>
. De plus, l'élément <xul:toolbox>
a maintenant une propriété externalToolbars
, qui liste toutes les barres d'outils qui sont considérées comme des membres de la boîte à outils.about:addons
le fait.mozIStorageBindingParamsArray
a maintenant un attribut de longueur indiquant le nombre d'objets mozIStorageBindingParams
dans le tableau.mozIStorageStatement.bindParameters()
retourne maintenant une erreur si l'interface mozIStorageBindingParamsArray
spécifiée est vide.mozIStorageConnection.clone()
, qui vous permet de cloner une connexion à une base de données déjà existante.mozIStorageConnection.asyncClose()
, qui vous permet de fermer une connexion à une base de données de manière asynchrone, vous spécifiez un rappel pour être averti quand l'opération est terminée.mozIStorageConnection.setGrowthIncrement()
, qui vous permet de spécifier le nombre de fichiers ajoutés à la fois dans une base de données, pour aider à réduire la fragmentation de SQLite.SQLITE_CONSTRAINT
est maintenant reportée comme NS_ERROR_STORAGE_CONSTRAINT
au lieu de NS_ERROR_FAILURE
.En plus des changements spécifiques référencés ci-dessous, il est important de noter qu'il n'y a plus aucune interfaces gelées. Elles sont toutes dégelées maintenant, indépendamment de ce que peut indiquer la documentation. Nous mettrons à jour la documentation au fil du temps.
__parent__
qui est désormais retiré.nsINavHistoryResult
, nsINavHistoryQueryOptions
et nsINavHistoryContainerResultNode
. De plus, l'interface nsINavHistoryResultViewer
a été renommée en nsINavHistoryResultObserver
.places-connection-closed
est disponible pour savoir quand le service Places a terminé sont processus d'arrêt.<menupopup type="places">
a été supprimé. A la place, vous devez créer et remplir un menu avec ds informations Places manuellement, plutôt que de l'avoir fait pour vous. Voir Displaying Places information using views: Menu view pour plus de détails.nsIDocShell
et nsIWebBrowser
ont maintenant un nouvel attribut isActive
, qui est utilisé pour optimiser les chemins de code pour les documents qui ne sont pas visibles.nsIMemory.isLowMemory()
est obsolète. A la place, vous devez utilisez les notifications "memory-pressure" pour surveiller les situations où la mémoire est insuffisante.nsIChannelEventSink.onChannelRedirect()
doit être mis à jour pour qu'il utilise nsIChannelEventSink.asyncOnChannelRedirect()
à la place. Cela accepte un gestionnaire de rappel qui doit être appelé quand une redirection est réussie.nsINavHistoryResultObserver.batching()
a été ajoutée, fournissant un moyen de grouper des opérations Places par lots, ce qui réduit le nombre de notifications de mise à jour délivrées, qui peut améliorer les performances quand les observateurs doivent effectuer certaines tâches (telles que des rafraîchissement de pages).nsIPref
a finalement été supprimée. Si vous n'êtes pas encore passé à nsIPrefService
, il est temps de le faire.nsISessionStore
et nsISessionStartup
ont reçues des changements pour la restauration des sessions. Voir la méthode nsISessionStore.restoreLastSession()
.nsIPrincipal.subsumes()
et nsIPrincipal.checkMayLoad()
, et les attributs origin
, csp
et URI
, sont maintenant disponibles à partir d'un script ; avant ils n'étaient disponibles qu'à partir du code natif.nsIPrompt
supporte maintenant les alertes des onglets modaux, voir Using tab-modal prompts pour plus de détails.nsIEffectiveTLDService.getPublicSuffixFromHost()
rejette maintenant correctement le nom des hôtes qui commencent par un point (".").mozIJSSubScriptLoader.loadSubScript()
a maintenant un argument optionnel qui vous permet de définir le jeu de caractère du script, si il n'est pas fourni, on suppose que c'est le format ASCII (comme cela a toujours été précédemment).nsIAccessProxy
a été supprimée. C'était un élément qui n'avait plus d'utilité.nsIContentView
et nsIContentViewManager
ont été ajoutées pour Firefox Mobile. Ils représentent une vue déroulant le contenu dont le contenu est actuellement utilisé par un processus séparé.nsIDiskCacheStreamInternal
a été ajoutée.nsIExternalURLHandlerService
a été ajoutée.nsISyncJPAKE
a été ajoutée. Voir bug 601645.omni.jar
), ce qui améliore les performances au démarrage en réduisant l'I/O. Pour plus de détails, lisez About omni.jar.accessibility.disablecache
n'est plus supportée, elle a seulement été utilisée à des fins de débogage et n'est plus employée.chrome.manifest
racine est chargé ; si vous avez besoin de fichiers manifestes secondaires à charger, vous pouvez utilisez la commande manifest
dans votre fichier chrome.manifest
racine pour les charger.nsIExtensionManager
a été remplacée par AddonManager.cmd_scrollBottom
pour browser.gesture.swipe.down
et cmd_scrollTop
pour browser.gesture.swipe.up
.