Voici les nouveautés qu'il y a dans Gecko 1.8 (Firefox 1.5) pour les développeurs.
Technologies
XUL
;Overlays dynamiques: il est possible de charger dynamiquement un overlay, même si le fichier XUL est déja affiché (document.loadOverlay()).
;Fenêtres translucides: sur windows et linux, les fenêtres XUL avec un fond transparent peuvent s'afficher.
;XUL, bindings pour les préférences: des nouvelles balises XUL (balises prefWindow, prefPane, preference, preferences, Attribut preference-editable) permettent de construire une fenêtre de choix de préférences, sans écrire une seule ligne de code javascript. Les préférences choisies sont automatiquement enregistrées. Voir
http://forums.mozillazine.org/viewtopic.(..).
- nouvelles balises XUL
- richlistbox, richlistitem, scrollcorner
- attribut tabindex
- il peut être utilisé sur presque tout les éléments.
- attribut value sur <radiogroup>
- permet de selectionner le radio bouton associé à la valeur.
- attribut defaultButton sur <dialog>
- on peut indiquer quel bouton est le bouton par defaut dans une boîte de dialogue.
- attribut icon sur <button>
- contient un nom d'icone. il permet d'indiquer à gecko qu'il faut qu'il affiche l'icone correspondante utilisée habituellement dans l'environnement utilisateur. Il peut prendre les valeurs accept, cancel, help, open, save, find, clear, yes, no, apply, close, print, add, remove, refresh, go-forward, go-back, properties, select-font, select-color, network.
- <tabbrowser>
- permet maintenant de réorganiser les onglets par drag and drop.
Evolutions sur la balise tree
Les colonnes n'ont plus besoin d'id. En effet, il leur est maintenant associé un objet nsITreeColumn. Dans le view d'un tree, ce n'est donc plus un ID que vous recevez mais un objet nsITreeColumn.
Vous pouvez aussi maintenant utiliser des colonnes de checkbox et la pseudo-classe CSS associée -moz-tree-checkbox.
Voir les details sur devmo
bfcache
Gecko 1.8 peut mettre en cache des arbres DOM. Cela permet par exemple à Firefox de pouvoir faire des back/forward instantannés.
CSS
- propriété quote (open-quote, close-quote)
- pseudo element :only-child
- propriété pour le multi-colonnage CSS3 (-moz-column*) voir des exemples sur cette page : propriétés CSS counter
- propriété CSS 3 overflow-x, overflow-y
- nouveaux noms de curseurs pour la propriété cursor
- propriété outline (-moz-outline est maintenant obsolete)
- -moz-outline-radius pour faire des outline avec coins arrondis
- compteurs CSS, qui permettent la numérotation automatique. Voir un exemple sur cette page : compteurs CSS
- nouvelle rêgle @-moz-document , que l'on peut utiliser dans les feuilles de styles utilisateurs pour indiquer des styles à utiliser pour des sites précis.
- pseudo-classe : :valid, :invalid, :out-of-range, :in-range, :disabled, :enabled, :-moz-read-only, :-moz-read-write
Autres
;Support de
XTF: = eXtensible Tag Framework. Permet l'ajout de nouveaux namespace dans gecko, sans toucher au code de Gecko. On peut donc ajouter le support d'un nouveau langage XML dans Gecko, via une extension. Par exemple, l'implementation de Xforms utilise XTF. Voir
les détails sur la page dédiée
;Prise en charge de SVG: langage xml pour faire des dessins vectoriels. voir la page
SVG.
- Prise en charge de l'élément <canvas>
- cet élément fournis un espace où l'on peut "dessiner" en javascript. Voir http://developer.mozilla.org/en/docs/Dra(..).
- Prise en charge de Xforms
- permet d'utiliser ce puissant système de formulaire. Voir la page XForms.
API
;Accés à l'historique: on accéde plus facilement à l'historique dans le navigateur, ce qui permet à une extension d'afficher l'historique autrement, de mieux gérer les données de l'historique etc.
;API pour specifier les priorités de connexions HTTP: on peut mettre une priorité sur les connexions vers un serveur spécifique.
;API pour gérer l'utilisateur et les feuilles de styles utilisateurs: Les extensions peuvent maintenant déclarer des feuilles de styles additionnelles. Elles n'ont plus besoin d'éditer userContent.css pour ajouter des styles aux pages web (comme des attachements de composants XBL)
;API pour configurer les proxys: Il est maintenant possible pour les extensions de modifier la configuration des proxys sans toucher aux préférences utilisateurs.
;Ajout d'informations dans le user-
agent:Il est maintenant possible d'ajouter des informations dans le user-agent sans écraser les infos ajoutés par d'autres extensions.
- API pour la base de registre windows
- une nouvelle API via l'interface nsIWindowsRegKey a fait son apparition pour acceder plus facilement à la base de registre de Windows (il s'agit de l'objet @mozilla.org/windows-registry-key;1. (nsIWindowsShellService::getRegistryEntry est donc obsolète)
;API les paramètres de lignes de commandes: les extensions peuvent désormais manipuler/obtenir plus facilement les paramètres données en ligne de commande quand l'application est lancée. (cela concerne les interfaces nsICommandLine et nsICommandLineHandler, qui seront du même coup gelées). Trés utile aussi pour les applications
XulRunner.
Chrome
La déclaration de fichiers dans le chrome a été grandement amélioré. Ainsi on ne doit plus mettre de fichiers content.rdf mais un simple fichier texte (non xml), chrome.manifest. Voir sur les details sur la page Enregistrement Chrome.
Il est également possible de
- fournir dans une extension des fichiers qui vont remplacer ceux d'une autre extension, d'un autre paquet jar
Gestionnaire d'extension
- Il est maintenant possible d'avoir des extensions en dehors du repertoire extension du profile et celui de l'application
- L'installation des extensions peut être fait en mettant simplement un XPI dans le repertoire extension du profil ou de l'application.
- Désinstaller une extension est tout aussi simple, en supprimant le repertoire correspondant dans le repertoire extensions.
- Les extensions peuvent être installées sur Windows en mettant des valeurs dans la base de registre de windows. Voir cette page
- On peut indiquer dans le fichier install.rdf de l'extension (bug), la plateforme cible :
<[[em:targetPlatform>Linux_gcc2</em:targetPlatform]]>
<[[em:targetPlatform>Linux_gcc3</em:targetPlatform]]>
<[[em:targetPlatform>WINNT_msvc</em:targetPlatform]]>
<[[em:targetPlatform>OS2</em:targetPlatform]]>
- on peut fournir des plugins de recherche dans les extensions, en les mettant dans un repertoire searchplugins du xpi (bug)
- on peut indiquer les composants xpcom à installer en fonction de la plateforme (bug)