Les plus visibles

Les fonctionnalités les plus marquantes sont sans doute TraceMonkey et le support natif du son et de la vidéo. TraceMonkey est une évolution du moteur JavaScript, qui améliore la réactivité des sites très dynamique. Le chantier est en cours, mais Shiretoko bénéficiera de premiers gains de performance. Quant aux balises audio et video, elles permettront d'insérer dans une page web du son et des vidéos qui pourront être lues directement par le navigateur, sans avoir besoin d'installer le moindre plugin. Ces balises sont disponibles dans les compilations nocturnes depuis un petit moment, mais le design de leur interface est en cours de finalisation. De nombreux articles ont déjà été consacrés au sujet, je n'y reviens pas.

Le p0rn mode devrait finalement être disponible dans la 3.1 finale, mais sans doute pas visible avant la béta 2. Cette fonctionnalité avait dans un premier temps été repoussée, les discussions sur son design n'étant pas assez avancées. Mais comme Chrome et IE8 se gargarisent d'offrir déjà cette fonction, elle a finalement été ré-intégrée à Shiretoko, quitte à en retarder la sortie. Pour les âmes pures qui ne suivent pas, le porn mode donne la possibilité de surfer sur des sites de cul[1][2] sans laisser de traces sur l'ordinateur, ni cookies, ni historique, etc.

Autres nouveautés très visibles, la petite animation quand vous naviguerez entres les onglets à coups de Ctrl-Tab, et des évolutions du système d'onglet, comme par exemple un bouton à droite pour ouvrir un nouvel onglet (j'ai découvert récemment que tout le monde n'utilise pas Ctrl-T pour ça !). Mozilla Links publie un billet assez complet sur le sujet[3].

Parcours simplifié du DOM

Le DOM est composé de nœuds de 11 types, dont les éléments, les attributs, le texte, etc. Les fonctions habituelles pour se promener dans l'arborescence d'un document (trouver les parents, enfants, frères et sœurs d'un nœud) ramènent l'ensemble de ces nœuds, alors que souvent seuls les éléments nous intéresse. Pour faciliter les choses, le W3C a défini une nouvelle interface, ElementTraversal permettant de ne parcourir que les éléments d'un document. Cette interface ajoute quatre propriétés à chaque nœuds : firstElementChild, lastElementChild, previousElementSibling, nextElementSibling, childElementCount. Pratique, et dans Shiretoko depuis quelques semaines

Chargement des scripts

Chaque fois que dans une page web le navigateur rencontre une instruction lui disant de charger un script externe, il interrompt l'affichage de la page le temps de charger et d'exécuter le script en question. C'est pour cela qu'il est fortement conseillé de placer les scripts externes non pas dans l'entête de la page, mais le plus près possible de la fin, idéalement juste avant le </body>. Si le temps réel d'affichage de la page ne change pas, l'expérience utilisateur est meilleure, puisque l'internaute voit sa page s'afficher plus vite, et ne remarque généralement pas le temps de chargement final des scripts.

Firefox 3.1 proposera une autre méthode, via l'ajout d'un attribut defer à la balise script. Cela indiquera au navigateur de ne charger et exécuter le script qu'une fois la page affichée. L'évènement onload lui ne sera toujours exécuté qu'après le chargement et la fin d'exécution de tous les scripts, qu'ils possède l'attribut defer ou pas. Cf cette explication complète sur l'usage de defer

Gestion des couleurs

Depuis la version 3.0, la gestion des couleurs dans Firefox a été améliorée, et le navigateur peut utiliser le profil ICC d'une image pour mieux restituer ses couleurs. Pour l'instant, cette fonctionnalité est désactivée par défaut, il faut modifier une préférence avancée pour en profiter, car elle cause dans certains cas des problèmes de performance. Problèmes à présent résolus et le nouveau système de gestion de couleurs a été activé par défaut dans Firefox 3.1 pour toutes les images qui possèdent un profil ICC. L'affichage de photos sur des écrans correctement calibrés devrait donc gagner en qualité. Parlez-en à vos connaissances photographes, graphistes et autres amoureux de belles images, si elles sont encore dans l'erreur.

Pour plus d'infos, allez jeter un œil à cette introduction à la gestion des couleurs sur MDC (ainsi qu'à sa page de commentaires ou par exemple à ce billet).

Et aussi

  • les chaînes JavaScript disposent (enfin) des méthode trim, trimLeft et trimRight, cf la discussion sur l'implémentation et le patch;
  • on peut à présent modifier "en masse" les mots clés (tags) associés aux marques pages, via le gestionnaire de bookmarks, cf le ticket 412002;
  • toujours à propos des mots-clés, leur saisie sera simplifiée grâce à une auto-complétion (ça devrait arriver très bientôt, cf le ticket 415960);
  • les dernières compilations nocturnes atteignent à présent le score de 89/100 au test Acid 3, et Frédéric a montré que si certains patches sont intégrés, la 3.1 pourrait bien atteindre 93/100, voire 97/100 en activant le support de SMIL :-);
  • Shiretoko proposer peut-être des méthodes JavaScript natives pour sérialiser des objets en JSON et les dé-sérialiser: ces méthodes sont déjà disponibles dans le chrome[4], mais pas encore accessibles depuis les scripts s'exécutant dans une page web. Pour l'instant, la finalisation de cette fonctionnalité est suspendue au travaux du groupe de travail ECMA sur JavaScript 3.1 (lui aussi) "Harmony", afin que l'implémentation soit conforme à la spécification. Pour voir à quoi ressemble l'implémentation actuelle, tapez simplement l'url resource://gre/modules/JSON.jsm dans votre navigateur: cette fonctionnalité est en effet implémentée directement en JavaScript, via un JavaScript code modules[5];

Plein de choses sont encore dans les tuyaux, et devraient me donner matière à de prochains billets, par exemple:

  • les workers JavaScript que j'ai déjà évoqués mais avec lesquels je n'ai pas encore eu le temps de jouer
  • peut-être la possibilité de faire des requêtes vers un autre site depuis du code s'exécutant dans une page web (c'est possible depuis FireFox 3 pour le code "privilégié", c'est à dire les extensions par exemple. Le spécification étant en plein travaux, je ne sais pas si cela sera finalement dans Shiretoko)
  • le support de la propriété CSS @font-face, pour permettre de proposer à l'internaute de télé-charger les fontes qui lui manquent pour afficher au mieux un site. Cette fonctionnalité est apparemment déjà disponible chez la concurrence, mais je suis assez partagé: elle va simplifier la vie des travailleurs du web, mais risque de provoquer une inflation de fontes sur le disque des internautes;
  • et bien plus encore, n'hésitez pas à consulter la liste prévisionnelle sur le wiki.

Notes

[1] je vais bien voir si les stats de ce billet explosent ;-)

[2] je vais aussi voir si ce billet vaut à mon modeste journal les foudres de l'Anastasie de ma boîte, car oui, il y a encore des tôles qui infantilisent leurs salariés en leur imposant un logiciel de contrôle parental qui bloque surtout les billets de blogs osant affirmer que telle ou telle chose sucks, oups, pardon.

[3] et je m'étrangle en allant sur le dit billet avec un nightly non protégée par l'indispensable Adblock Plus et en constatant qu'il est tout pollué de publicités Google incitant à télécharger IE. Berk !

[4] c'est à dire les extensions, rien à voir avec le logiciel espion de Google

[5] un concept introduit dans Firefox 3 qui permet de partager des bibliothèques de code entre différentes modules