Firefox 8 note de version pour les développeurs
Firefox 8, basé sur Gecko 8.0, est sorti le 8 novembre 2011. Cet article fournit des informations à la fois pour les développeur·euse·s Web et pour les développeur·euse·s d'extensions et de projets liés à Mozilla pour aider à tirer pleinement parti des fonctionnalités de cette version.
Changements pour les développeur·euse·s Web
>HTML
- La propriété
crossOrigina été ajouté àHTMLImageElementet l'attributcrossorigina été ajouté à l'élément<img>(voir le bogue Firefox 664299 (angl.)). - La méthode
HTMLSelectElement.add()supporte désormais supporte désormais soit un élément ou soit l'index d'un élément auquel un nouvel élément doit être inséré avant. Auparavant, seulement un élément était supporté (voir le bogue 666200 (angl.)). - Le constructeur
HTMLIsIndexElementa été retiré. Aucun éléments n'a implémenté cette interface depuis Firefox 4. - la fonctionnalité HTML5 « menu contextuel » (attribut
contextmenu), qui vous permet d'ajouter des éléments personnalisés particuliers au menu contextuel d'origine, est désormais supportée (l'implémentation est encore expérimentale en attendant des changements dans la spécification ; voir le bogue Firefox 617528 (angl.)). - Le support de l'attribut
HTMLElement.accessKeyLabela été ajouté à tous les éléments. - les éléments
<input>et<textarea>prennent désormais en charge l'attributselectionDirection, et leurs méthodessetSelectionRange()ont été mises à jour pour prendre éventuellement en charge la définition d'une direction. - La plupart des éléments peuvent désormais obtenir une bague de focalisation établie autour d'eux s'ils ont été faits pouvant recevoir la sélection avec l'attribut
tabindexet que l'utilisateur·ice se concentre ensuite sur l'élément. - Dans un ensemble d'éléments
<label>imbriqués, cliquer sur les évènements ne déclenchent plus plusieurs éléments, qui provoquaient un blocage de Firefox (voir le bogue Firefox 646157 (angl.)).
DOM
- La méthode
insertAdjacentHTMLa été implémentée. BlobBuilderdispose désormais d'une méthodegetFile()qui retourne le contenu du blob dans un fichier.- L'interface
FileReaderSync(partie de FileAPI) a été implémentée. - La gestion des évènements par les
<label>imbriqués a été fixée. - Vous pouvez maintenant utiliser
Window.postMessage()pour passer les objetsFileetFileListentre les fenêtres. - Lors de l'édition de zones
contenteditablela sortie d'une position en appuyant sur retour, ou à la sortie d'une liste en mode édition en appuyant sur retour à deux reprises, revient maintenant au mode d'entrée au paragraphe (c'est-à-dire les paragraphes à l'intérieur des blocs<p>) au lieu de lignes de séparation par les éléments<br>. - Correction d'un bogue empêchant la justification de la prise d'effet correcte lorsqu'elle est appliquée à la première ligne dans une zone
contenteditable. - Correction d'un bogue qui faisait que en appuyant sur Suppr ou Retour arrière au début d'une zone
contenteditableaffectait le bloccontenteditableprécédent s'il était présent. Document.getSelection()retourne désormais l'objetSelectionidentique àWindow.getSelection(), à la place de le transformer en chaîne de caractères.- La propriété HTML5
selectionDirectionpermet de définir la direction de la sélection dans un texte éditable. HTMLMediaElementa maintenant une propriétéseekablequi retourne l'objetTimeRanges.- L'attribut
HTMLMediaElement.preloadse reflète désormais comme une valeur énumérée. - Les propriétés
crossOriginsont par défaut « anonymes » lorsqu'une valeur invalide est utilisée. Navigator.cookieEnabledretourne désormais correctement l'information quand le paramètre de cookie par défaut est écrasé sur la base de chaque site.
JavaScript
RegExp.exec()etRegExp.test()appelés sans arguments correspondent maintenant à la chaîne de caractères"undefined".String.search()etString.match()appelés sans arguments ouundefinedcorrespondent désormais à une chaîne de caractères vide et correspondent donc à chaque chaîne de caractères.- La prise en charge des listes de surveillance a été implémentée avec les nouvelles méthodes (non standards)
watch()etunwatch().
CSS
<resolution>accepte désormais des nombres (<number>), pas seulement des valeurs<integer>comme avec la spécification.- Les règles de césure ont été ajoutées pour de nombreuses nouvelles langues lors de l'utilisation de
hyphens. - Le traitement de
background-sizea été revu pour mieux correspondre à la spécification. - Dans le passé,
text-decorationen mode quirks avait l'épaisseur de ligne et la position ajustée sur le texte descendant pour correspondre à la descendance. Désormais le mode standard et le mode quirks ont un rendu plus proche. - Le positionnement horizontal des éléments est davantage conforme à la spécification dans beaucoup de cas. La documentation est à venir, mais pour l'instant, pour plus de détails voir le commentaire 23 du bogue Firefox 682780 (angl.).
- Les images SVG sont désormais correctement mise à l'échelle lorsqu'elles sont utilisées comme images de fond.
Réseau
- Les doubles guillemets ne sont plus acceptés en tant que délimiteur pour l'encodage RFC 2231 ou RFC 5987, conformément à ces RFCs.
- Le parseur MIME du champ d'en-tête (
Content-Disposition) exige désormais "=" dans les paramètres. - Les scripts ne sont plus téléchargés lorsque JavaScript est désactivé.
- SSL 2.0 n'est plus supporté.
WebSockets
- La méthode
send()de l'objetWebSocketne retourne plus à tort une valeur booléenne. - La méthode
close()de l'objetWebSocketcorrespond désormais à la version actuelle du standard, et les évènements proches utilisent à présent correctement l'interfaceCloseEvent. - L'attribut
extensionsde l'objetWebSocketest à présent supporté. - Le constructeur WebSocket supporte désormais un ensemble de protocoles ainsi que la chaîne de caractères d'un seul protocole.
- Le contenu mixte n'est pas autorisé avec WebSockets, vous ne pouvez plus établir une connexion vers un serveur WebSocket non sécurisé à partir d'un contenu sécurisé.
- Les erreurs de connexion avec WebSockets déclenchent à présent le gestionnaire
onerror. - L'API WebSocket a été mise à jour suivant la dernière version de la spécification (voir bogue Firefox 674890 (angl.), bogue Firefox 674527 (angl.) et bogue Firefox 674716 (angl.)).
- L'extension deflate-stream pour WebSockets a été désactivée, elle est obsolète et a cassée la compatibilité avec quelques sites.
WebGL
- Les textures inter-domaines sont à présent autorisées avec l'accord CORS.
- Le rendu inter-processus avec Direct2D/Direct3D 10.
MathML
Outils de développement
- L'objet
console(angl.) a une nouvelle méthodedir(), qui affiche une liste interactive des propriétés sur un objet défini.
Changements pour les développeur·euse·s de Mozilla et de modules complémentaires
Voir Mise à jour des modules complémentaires pour Firefox 8 pour vous guidez dans les modifications que vous êtes susceptibles d'avoir à faire pour rendre vos extensions compatibles avec Firefox 8.
Note : Firefox 8 requiert que les composants binaires soient recompilés, comme pour toutes les versions majeures de Firefox.
XPCOM
Components.utils-
Les nouvelles méthodes
Components.utils.createObjectIn()etComponents.utils.makeObjectPropsNormal()ont été créées pour faciliter la création d'objets dans des compartiments spécifiques.
Autres changements relatifs à XPCOM
- Vous pouvez à présent demander des objets DOM
Fileà partir d'éléments du code en faisant simplement un nouveau fichier, au lieu de devoir demander directement ànsIDOMFile. - Le type de tableau
nsTPtrArraya été retiré. La fonctionnalité est désormais disponible sur tous lesnsTArray, qui propose désormais la méthodeSafeElementAt()lors d'une demande à l'aide d'un type de pointeur.
Workers
Il n'est plus possible d'accéder à des objets XPCOM depuis ChromeWorkers. XPConnect a été désactivé dans le contexte des travailleurs comme indiqué par le bogue Firefox 649537 (angl.).
XUL
- Un bogue dans
document.execCommand()a été fixé, il survenait lors de l'appel sur la valeur decontentDocument. Depuis Firefox 3, cela a entraîné des erreurs au lieu d'un travail correct. - Les extensions amorcées peuvent à présent charger le chrome l'aide du fichier
chrome.manifest. - Les images XUL rétrécissent désormais avec le même ratio dans les deux sens lors de la spécification de dimensions maximales.
Changements dans le système de compilation
-
Les options de configuration de compilation suivantes ont été retirées :
--enable-timeline--disable-storage--necko-disk-cache
-
Lors de la compilation des fichiers IDL aux en-têtes, le fichier d'en-tête
jspubtd.hest automatiquement inclus lorsque c'est nécessaire. L'inclusion manuelle dejspubtd.het/oujsapi.hdans des fichiers IDL qui utilisent jsval ou [implicit_jscontext] n'est plus nécessaire.
Enregistrement du chrome
- L'indicateur
platformversionpeut être utilisé dans lechrome.manifestpour définir la compatibilité entre les versions de Gecko.
Changements dans les interfaces
- La méthode
mozIJSSubScriptLoader.loadSubScript()charge désormais scripts à partir du cache de démarrage lorsque c'est possible. - L'attribut
ownerWindowa été supprimé de l'interfacensIAccessNode. - L'interface
nsIDOMStorageWindowa été fusionnée avec l'interfacensIDOMWindow. - Tous les membres de l'interface
nsIDOMWindowInternalont été déplacés dans l'interfacensIDOMWindow. L'interface (sans les membres) reste disponible pour la compatibilité jusqu'à Firefox 9. - Afin d'améliorer les performances, le rappel pour les mises à jour asynchrones des bases de données Places a été changé. Voir les nouvelles méthodes
mozIVisitInfoCallback.handleResult()etmozIVisitInfoCallback.handleError(), qui remplacent l'ancienne unique méthode pour les erreurs et les conditions de succès. - L'attribut
KIND_MAPPEDdensIMemoryReportera été désapprouvé au profit deKIND_NONHEAP, de nouveaux types d'unités ont été ajoutées :UNITS_COUNT_CUMULATIVEetUNITS_PERCENTAGE. - L'interface
nsIMemoryReporterManagera un nouvel attributexplicit, qui indique explicitement la taille totale des allocations de mémoire. - L'interface
nsIMemoryReporterManagera un nouvel attributresident, qui relève la quantité de mémoire physique utilisée. - L'interface
nsINetworkLinkServicea un nouvel attribut,linkType. Cet attribut indique le type de connexion réseau en cours d'utilisation. Tous les systèmes d'exploitation retournent actuellementLINK_TYPE_UNKNOWN. Le support d'Android a été gardé pour des raisons de sécurité. - L'interface
nsISelection2a été fusionnée avec l'interfacensISelectionPrivate. - L'interface
nsISelection3a été fusionnée avec l'interfacensISelection. - L'attribut
statedensISessionStartupest désormais de typejsvalau lieu d'être une chaîne de caractères, pour des raisons de performance. - L'état de l'attribut
isActivede (nsIDocShell) est désormaisfalsepour les fenêtres minimisées. - La méthode
nsIDownloadHistory.addDownload()enregistre désormais la cible de l'endroit où le téléchargement est sauvegardé, sur le système de fichiers local.
Interfaces supprimées
Les interfaces suivantes ont été supprimées, car elles n'étaient plus indispensables :
nsITimelineServicensIDOMHTMLIsIndexElement
L'interface nsIWorkerFactory a également été retirée. Les travailleurs peuvent encore être créés à l'aide des constructeurs Worker et ChromeWorker.
Autres changements
- Quand une fenêtre est minimisée (non réduite), ou basculée entre le plein écran et le mode fenêtré, elle reçoit l'évènement
sizemodechange. - You can now la préférence
extensions.autoDisableScopes(angl.) pour désactiver l'installation automatique d'extensions sur un emplacement d'installation. - La nouvelle propriété
document.mozSyntheticDocumentdes objetsDocumentvous permet de déterminer si un document est synthétique (comme une image, une vidéo ou un fichier audio) plutôt qu'un document DOM standard. Cela peut être utile, par exemple, si vous voulez présenter une interface utilisateur différente dans cette situation (comme l'ajout d'éléments contextuels différemment selon le cas présent). - Vous pouvez désormais définir un filtre en ouvrant
about:config; par exemple,about:config?filter=sessionstoren'affiche que les préférences liées au stockage des sessions.