Chrome URL
Ссылаться на XUL файлы можно с помощью обычного HTTP URL (или любого типа URL) так же, как и на HTML файлы. Однако на пакеты, установленные в chrome систему Mozilla можно ссылаться с помощью специальных chrome URL. Пакеты, включенные в установку Mozilla будут уже установлены, но вы можете зарегистрировать и свои собственные.
Установленные пакеты имеют преимущество в том, что на них не накладывается каких-либо ограничений безопасности, что важно для многих приложений. Другим достоинством по сравнению с прочими типами URL является то, что они автоматически поддерживают множество тем и локалей. Например, chrome URL позволяет вам ссылаться на файл в теме, например на изображение, но без необходимости знать, какую именно тему оформления использует пользователь. Поскольку имена файлов одинаковы во всех темах, вы можете ссылаться на файл с помощью chrome URL. Mozilla позаботится о том, чтобы определить, где находится этот файл и предоставить правильные данные. Это также означает, что не имеет значения, куда именно установлен пакет, чтобы получить к нему доступ. Chrome URL-ы не зависят от физического месторасположения файлов. Это существенно облегчает программирование приложений, содержащих множество файлов, так как вам не надо беспокоиться о деталях месторасположения этих файлов на диске.
Базовый синтаксис chrome URL выглядит следующим образом:
chrome://<package name>/<part>/<file.xul>
Текст <package name> - это название пакета, например "messenger" или "editor". <part> - это 'content', 'skin' или 'locale' в зависимости от того, какая часть пакета вам нужна. <file.xul> - это просто имя файла.
Пример: chrome://messenger/content/messenger.xul
Вышеприведенный пример относится к окну программы обмена сообщениями (messenger). Вы можете указать на файл, который является частью скина, заменив 'content' на 'skin' и изменив имя файла. Сходным образом, вы можете указать на файл, являющийся частью локали использовао 'locale' вместо 'content'.
Когда вы открываете chrome URL, Mozilla просматривает список установленных пакетов и пытается найти JAR файл или папку, подходящие под заданное имя пакета и части пакета. Соответствие между chrome URL-ами и JAR файлами заданы в файлах манифестов, хранящихся в папке chrome. Если вы переместите файл messenger.jar в какую-либо другую папку на диске и соответствующим образом подправите манифест, Thunderbird будет продолжать нормально работать, так как он не полагается только на свое специфическое месторасположение установки на диске. Используя chrome URL-ы мы можем возложить заботу о таких деталях на Mozilla. Аналогично, если пользователь поменяет тему оформления, часть 'skin' chrome URL-а транслируется в другой набор файлов, тем не менее сам XUL и сценарии не придется изменять.
Ниже приведено еще несколько примеров. Заметьте, что ни в одном из URL не указывается, какая тема или локаль используется и не указывается какая-либо определенная папка.
chrome://messenger/content/messenger.xul chrome://messenger/content/attach.js chrome://messenger/skin/icons/folder-inbox.gif chrome://messenger/locale/messenger.dtd
Для ссылок на вложенные папки вы можете просто добавить их к концу chrome URL. Следующие URL будут ссылаться на окно закладок, указанное как для Mozilla Suite так и для Firefox, несмотря на то, что имя пакета для них различно:
chrome://communicator/content/bookma...rksManager.xul (Mozilla) chrome://browser/content/bookmarks/b...rksManager.xul (Firefox)
Вы можете вводить chrome URL в любом месте, где могут использоваться обычные URL. Вы даже можете вводить их непосредственно в панель адреса (URL bar) в окне браузера Mozilla. Если вы введете один из URL, приведенных выше в адресную строку браузера, вы увидите, что появится окно, так же, как если бы вы ввели адрес веб-страницы и, в основном, будет работать, как если бы оно было отдельным окном. Однако некоторые диалоговые окна могут работать неправильно, поскольку они могут предполагать передачу каких-то аргументов из открывающего их окна.
Вы также можете видеть, что существуют chrome URL без заданных имен файлов, такие как:
chrome://browser/content/browser.xul
В этом случае указывается только название пакета и его часть. Этот тип ссылки автоматически выберет соответствующий файл из соответствующей-же папки. Для контента выбирается файл с таким же именем и расширением xul. В приведенном выше примере выбирается файл browser.xul. Для программы обмена сообщениями будет выбран файл messenger.xul. Если вы создаете свое собственное приложение, вы можете решить создать файл для главного окна вашего приложения с именем, совпадающим с названием пакета, чтобы иметь возможность использовать данную сокращенную форму. Это удобно, так как пользователю достаточно знать только название приложения для того, чтобы его запустить. Естественно для расширений, которые меняют интерфейс браузера, пользователю нет необходимости знать URL, так как расширение будет само представлять себя в пользовательском интерфейсе.
Для скина выбирается файл <package name>.css; для локали - <package name>.dtd.
Помните, что chrome URL никак не отражает своего месторасположения на диске. Первые два элемента chrome URL, это название пакета и его части (это может быть content, skin, или locale). Общепринято помещать файлы контента в папку под названием 'content', но это, конечно, не регламентируется никакими соглашениями, и эти файлы можно размещать в полностью иной структуре папок.
В следующей главе мы опишем, как создать файлы манифеста (.manifest) и пакеты.