#javascript #firefox #firefox-addon #xul
#javascript #firefox #firefox-дополнение #xul
Вопрос:
Я пытаюсь сделать свои первые шаги в программировании Firefox addon, но я запутался в одном моменте.Я прочитал руководства «как создать дополнение hello world», но я не могу понять, как добавить сложное / расширенное поведение, скажем, с помощью JavaScript. Я думаю, что мне нужно написать код JavaScript, поскольку мне пришлось «поместить» его на свою веб-страницу и создать ссылку из файла xul на файл js. Я прав? И firefox API называется Jetpack или я совершенно не в том месте?
Ответ №1:
На самом деле вы можете добавить обработку событий к своим элементам XUL способом, очень похожим на то, как вы бы делали это на обычных веб-страницах.
Например, в вашем основном документе XUL вы бы добавили ссылки на javascript, содержащие вашу логику / обратные вызовы, вот так:
<script src="findfile.js"/>
<script src="chrome://findfiles/content/help.js"/>
<script src="http://www.example.com/js/items.js"/>
И если предположить, что у вас есть кнопка в вашем XUL (где-то в вашем аддоне), то вы можете заставить ее вызывать javascript, когда происходит какое-то событие, подобное этому:
<button label="OK" oncommand="doMyAction();"/>
или что-то вроде:
<button label="OK" oncommand="alert('Button was pressed!');"/>
Ознакомьтесь с этой документацией Mozilla для получения дополнительной информации об этом..
Комментарии:
1. Я просматривал документацию javascript и даже не подумал взглянуть на xul…my плохо. спасибо за совет.
Ответ №2:
Плагин — это, по сути, zip-файл с другим именем. Вы создадите свой javascript и включите его в архивированный файл плагина. При установке он копируется в каталоги Firefox. Создание одного из них не является тривиальным и требует хорошего знания работы javascript и браузера… или много терпения.
Комментарии:
1. Хорошо, я знаю о xpi и обо всем этом. Мой вопрос касается «обработки событий» (если можно так выразиться). Я создам, допустим, несколько кнопок с помощью XUL. Когда я нажимаю button1, я хочу foo.js вызываемый скрипт. Как я могу это сделать?