1.3 L'URl Chrome

Écrit par Neil Deakin , mise à jour par les contributeurs à MDC .
Traduit par Romain D. (11/02/2004), mise à jour par Laurent Jouanneau (22/11/2004) , Alain B. (04/04/2007) .
Page originale : http://developer.mozilla.org/en/docs/XUL_Tutorial/The_Chrome_URL

Attention : Ce tutoriel est ancien et n'est pas mis à jour. Bien que beaucoup d'informations soient encore valables pour les dernières versions de gecko, beaucoup sont aussi obsolètes. Il est préférable d'aller consulter cette page sur la version française de ce tutoriel sur developer.mozilla.org.

Cette section décrit comment faire référence à des documents XUL et d'autres fichiers chrome.

L'URL Chrome

Les fichiers XUL peuvent être référencés par une URL HTTP habituelle tout comme les fichiers HTML (ou tout autre type d'URL). En revanche, les paquetages qui sont installés sur le système chrome de Mozilla doivent être référencés avec des URLs spéciales appelées « chrome ». Les paquetages livrés avec Mozilla seront déjà installés mais vous pouvez déclarer les votres.

Les paquetages installés ont l'avantage de ne pas avoir de restrictions de sécurité, ce qui est nécessaire pour de nombreuses applications. Un autre avantage comparé aux autres types d'URLs est qu'ils manipulent automatiquement les thèmes graphiques (NdT : skins) et les localisations (NdT : locales). Par exemple, une URL chrome vous permet d'adresser un fichier dans le thème, comme une image, sans avoir besoin de connaître le thème utilisé par l'utilisateur. Tant que les noms de fichiers sont identiques dans chaque thème, vous pouvez vous y faire référence via une URL chrome. Mozilla déterminera où le fichier est situé et renverra la bonne donnée. Cela signifie aussi que l'emplacement où le paquetage est installé n'est pas important pour être capable d'y accéder. Les URLs chrome sont indépendantes du lieu où les fichiers sont stockés physiquement. Il est donc simple d'écrire des applications contenant beaucoup de fichiers sans vous soucier des détails concernant leurs chemins d'accès.

La syntaxe de base d'une URL chrome est la suivante :

chrome://<paquetage>/<partie>/<fichier.xul>

Le texte <paquetage> est le nom du paquetage, tel que messenger ou editor. Le texte <partie> vaut soit content, soit skin, soit locale, selon la partie que vous voulez. <fichier.xul> est simplement le nom du fichier.

Exemple : chrome://messenger/content/messenger.xul

Ici, l'exemple se réfère à la fenêtre de messagerie. Vous pouvez pointer vers un fichier qui fait partie d'un thème en remplaçant content par skin et en changeant le nom du fichier. De même, vous pouvez pointer vers un fichier qui fait partie de la localisation en utilisant locale au lieu de content.

Quand vous ouvrez une URL chrome, Mozilla consulte sa liste de paquetages installés et essaie de trouver le fichier JAR qui correspond au nom et à la partie recherchés. Le lien entre des URLs et des fichiers JAR est précisé dans les fichiers manifest situés dans le répertoire chrome. Si vous déplaciez le fichier messenger.jar autre part et que vous modifiez le fichier manifest en conséquence, Thunderbird fonctionnerait encore puisque ce fichier n'est pas dépendant de l'emplacement de son installation. En utilisant des URLs chrome, ce genre de détails est secondaire pour Mozilla. De même, si les utilisateurs changent leur thème graphique, la partie 'skin' de l'URL chrome va pointer vers une autre série de fichiers sans que le XUL et les scripts en soient affectés.

Voici quelques exemples. Notez qu'aucunes URLs ne précisent un thème, une langue ou bien des répertoires spécifiques.

chrome://messenger/content/messenger.xul
chrome://messenger/content/attach.js
chrome://messenger/skin/icons/images/folder-inbox.gif
chrome://messenger/locale/messenger.dtd

Pour des sous-répertoires, vous pouvez simplement les ajouter à la fin des URLs chrome. Les URLs suivantes font référence à la fenêtre des marque-pages, aussi bien pour la suite Mozilla que pour Firefox, puisque les noms des paquetages sont différents :

chrome://communicator/content/bookmarks/bookmarksManager.xul (Mozilla)
chrome://browser/content/bookmarks/bookmarksManager.xul (Firefox)

Vous pouvez entrer des URLs chrome partout où des URLs normales peuvent être utilisées. Vous pouvez même les entrer directement dans la barre d'adresse d'une fenêtre du navigateur Mozilla. Si vous entrez une des URLs mentionnées ci-dessus dans la barre d'adresse du navigateur, vous devriez voir cette fenêtre apparaître comme une page Web le ferait et, dans la plupart des cas, elle sera fonctionnelle comme si elle était dans une fenêtre séparée. Cependant, quelques boîtes de dialogue pourraient ne pas bien fonctionner, si elles nécessitent des arguments fournis par la fenêtre qui les a ouvertes.

Vous pourriez voir également des URLs chrome sans noms de fichiers spécifiés, tel que :

chrome://navigator/content/

Dans le cas présent, seul le nom du paquetage et la partie sont spécifiés. Ce type de référence sélectionnera automatiquement un fichier approprié depuis le bon répertoire. Pour le contenu, un fichier avec le même nom que le paquetage et une extension xul sont choisis. Dans l'exemple ci-dessus, le fichier browser.xul est choisi. Pour messenger, messenger.xul serait sélectionné. Lorsque vous créez vos propres applications, vous devriez créer un fichier pour votre fenêtre principale avec le même nom que votre paquetage. Ainsi, elle pourra être appelée en utilisant cette syntaxe plus courte. C'est commode car alors, tout ce qu'a besoin de connaître un utilisateur pour pouvoir ouvrir l'application, c'est le nom du paquetage. Bien sûr, pour les extensions qui modifient l'interface du navigateur, l'utilisateur n'aura pas besoin de connaître l'URL car l'extension sera présente elle-même dans l'interface utilisateur.

Pour un thème, le fichier paquetage.css est choisi ; pour une localisation, le fichier paquetage.dtd est choisi.

Souvenez-vous, l'URL chrome n'est pas dépendante à un emplacement sur le disque. Les deux premières pièces sont le nom du paquetage et la partie (content, skin, ou locale). Bien qu'il soit courant de mettre les fichiers de contenu dans un répertoire appelé content, c'est une simple convention, et ces fichiers peuvent être placés dans une structure totalement différente.


Dans la section suivante, nous verrons comment créer des fichiers .manifest et des paquetages.


Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.