Полезная информация

Хотите узнать больше о расширениях? Посмотрите ролики, рассказывающие о работе с расширениями Firefox.

№120-07-2009 12:23:15

Najlus
Рррррррррррь!
 
Группа: Extensions
Откуда: Город N
Зарегистрирован: 11-01-2009
Сообщений: 1988
UA: Firefox 3.5

Помогите с созданием расширения

Я хочу создать расширение, добавляющее кнопку в Firefox. Код кнопки есть, работает в CustomButtons, а вот как сделать из неё расширение не представляю =(. Объясните пожалуйста саму структуру расширения и куда там прописывать код =) или дайте ссылку на данный материал.
(сори если повторяюсь, но в поиске ничего внятного не нашёл)


Вы ленивы, следовательно вы изобретательны (Граф Де Гиш)
Список настроек About:config на русском языке с пояснениями и рекомендациями

Отсутствует

 

№220-07-2009 14:40:49

Eskimo
Участник
 
Группа: Members
Зарегистрирован: 20-05-2009
Сообщений: 355
UA: Firefox 3.5

Re: Помогите с созданием расширения

Najlus
Попробуй поковырять расширение Ru-Board Navigation

Отсутствует

 

№320-07-2009 16:28:31

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.5

Re: Помогите с созданием расширения

Najlus
В общем случае задача нетривиальна.
Про структуру: https://developer.mozilla.org/Ru/Building_an_Extension, https://developer.mozilla.org/En/Building_an_Extension.
А начать лучше с работающего расширения, добавляющего кнопки.


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№420-07-2009 16:48:44

Najlus
Рррррррррррь!
 
Группа: Extensions
Откуда: Город N
Зарегистрирован: 11-01-2009
Сообщений: 1988
UA: Firefox 3.5

Re: Помогите с созданием расширения

Infocatcher пишет

NajlusВ общем случае задача нетривиальна.Про структуру: https://developer.mozilla.org/Ru/Building_an_Extension, https://developer.mozilla.org/En/Building_an_Extension.А начать лучше с работающего расширения, добавляющего кнопки.

Ааа, никогда не дружил с английским, придётся методом научного тыка работать =(

Добавлено 20-07-2009 17:04:22
Дополнение обозвал Sample, кнопка не появилась =(


Вы ленивы, следовательно вы изобретательны (Граф Де Гиш)
Список настроек About:config на русском языке с пояснениями и рекомендациями

Отсутствует

 

№520-07-2009 17:06:15

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.5

Re: Помогите с созданием расширения

Najlus
По первой ссылке почти все на русском.

Добавлено 20-07-2009 17:07:02
Что в консоли ошибок?


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№620-07-2009 17:18:39

Najlus
Рррррррррррь!
 
Группа: Extensions
Откуда: Город N
Зарегистрирован: 11-01-2009
Сообщений: 1988
UA: Firefox 3.5

Re: Помогите с созданием расширения

Предупреждение: Неизвестное свойство «behavior».  Потерянное объявление.
Источник: http://vkontakte.ru/css/rustyle.css?31
Строка: 25
Предупреждение: Ошибка при анализе значения «cursor».  Потерянное объявление.
Источник: http://vkontakte.ru/css/rustyle.css?31
Строка: 120
Предупреждение: Ожидалось объявление, но найдено «/».  Пропущено до следующего объявления.
Источник: http://vkontakte.ru/css/rustyle.css?31
Строка: 277

И таких предупреждений куча, наверное на css ругается, щас попробую удалить


Вы ленивы, следовательно вы изобретательны (Граф Де Гиш)
Список настроек About:config на русском языке с пояснениями и рекомендациями

Отсутствует

 

№720-07-2009 17:35:50

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.5

Re: Помогите с созданием расширения

Не, это про стили со страниц.

about:config → javascript.options.showInConsole = true
И расширение Console² может пригодиться.


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№820-07-2009 17:50:20

Najlus
Рррррррррррь!
 
Группа: Extensions
Откуда: Город N
Зарегистрирован: 11-01-2009
Сообщений: 1988
UA: Firefox 3.5

Re: Помогите с созданием расширения

Расширение это не спасло... буду и дальше пытаться =(


Вы ленивы, следовательно вы изобретательны (Граф Де Гиш)
Список настроек About:config на русском языке с пояснениями и рекомендациями

Отсутствует

 

№920-07-2009 17:54:28

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.5

Re: Помогите с созданием расширения

А что написано в chrome.manifest и install.rdf ?


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№1020-07-2009 18:08:30

Najlus
Рррррррррррь!
 
Группа: Extensions
Откуда: Город N
Зарегистрирован: 11-01-2009
Сообщений: 1988
UA: Firefox 3.5

Re: Помогите с созданием расширения

<?xml version="1.0"?>

<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns:em="http://www.mozilla.org/2004/em-rdf#">

  <Description about="urn:mozilla:install-manifest">
    <em:id>sinklerfirst@gmail.com</em:id>
    <em:version>1.0</em:version>
    <em:type>2</em:type>
   
    <!-- Указывается приложение для которого может
            быть установлено Расширение, его максимальная
            и минимальная поддерживаемая версия. -->
    <em:targetApplication>
      <Description>
        <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
        <em:minVersion>1.0</em:minVersion>
        <em:maxVersion>4.0</em:maxVersion>
      </Description>
    </em:targetApplication>
   
    <!-- Front End MetaData -->
    <em:name>sample</em:name>
    <em:description>A test extension</em:description>
    <em:creator>Your Name Here</em:creator>
    <em:homepageURL>http://www.example.com/</em:homepageURL>
  </Description>     
</RDF>

Странно О_О я же менял
а вот в маифесте (было создано на основе расширения mozilla-forums):

overlay    chrome://browser/content/browser.xul    chrome://QickBookmarks/content/forumzillaOverlay.xul
content    QickBookmarks    jar:chrome/QickBookmarks.jar!/content/QickBookmarks/

skin    QickBookmarks    classic/1.0    jar:chrome/QickBookmarks.jar!/skin/classic/
style    chrome://global/content/customizeToolbar.xul    chrome://QickBookmarks/skin/main.css
style    chrome://browser/content/browser.xul    chrome://QickBookmarks/skin/main.css

locale    QickBookmarks    ru-RU    jar:chrome/QickBookmarks.jar!/locale/ru-RU/QickBookmarks/

Добавлено 20-07-2009 18:16:03
Console² пожаловался вот на это:

Ошибка: неправильный
Источник: chrome://qickbookmarks/content/forumzillaOverlay.xul
Строка: 44, символ: 12
Исходный код:
    image && mi. setAttribute ("image", "moz-anno:favicon:" + image);


Вы ленивы, следовательно вы изобретательны (Граф Де Гиш)
Список настроек About:config на русском языке с пояснениями и рекомендациями

Отсутствует

 

№1120-07-2009 18:29:56

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.5

Re: Помогите с созданием расширения

Во-первых, описание в chrome.manifest должно совпадать со структурой папок:

Выделить код

Код:

install.rdf
chrome.manifest

chrome/
	QickBookmarks.jar
		content/
			QickBookmarks/
				forumzillaOverlay.xul
		skin/
			classic/
				main.css
		locale/
			ru-RU/
				QickBookmarks/

Console² пожаловался вот на это:

Видимо, неправильно подключен скрипт.
Должно быть примерно вот так:

Выделить код

Код:

<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
	<script type="application/x-javascript" src="chrome://QickBookmarks/content/QickBookmarks.js" />

А в
chrome/QickBookmarks.jar/content/QickBookmarks/QickBookmarks.js
уже сам скрипт.

Плюс должна быть кнопка.


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№1220-07-2009 18:50:04

Najlus
Рррррррррррь!
 
Группа: Extensions
Откуда: Город N
Зарегистрирован: 11-01-2009
Сообщений: 1988
UA: Firefox 3.5

Re: Помогите с созданием расширения

Расширение утановилось, но кнопки тютю =(

Добавлено 20-07-2009 19:01:39
Опять на туже ошибку жалуется


Вы ленивы, следовательно вы изобретательны (Граф Де Гиш)
Список настроек About:config на русском языке с пояснениями и рекомендациями

Отсутствует

 

№1320-07-2009 22:03:40

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.5

Re: Помогите с созданием расширения

Тогда нужно смотреть, что в forumzillaOverlay.xul.
Минимальный вариант примерно такой:

Выделить код

Код:

<?xml version="1.0"?>
<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
	<toolbarpalette id="BrowserToolbarPalette"> <!-- Встроенное в Firefox хранилище кнопок -->
		<toolbarbutton label="Some label" oncommand="someJsFunc();" /> <!-- Добавляемая кнопка -->
	</toolbarpalette>
</overlay>

Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№1421-07-2009 02:04:21

Crazy-EyE
Участник
 
Группа: Members
Зарегистрирован: 20-06-2008
Сообщений: 81
UA: Firefox 3.5

Re: Помогите с созданием расширения

Infocatcher пишет

Видимо, неправильно подключен скрипт.
Должно быть примерно вот так:

Или использовать CDATA, если скрипт в самом xul-файле. Тогда XML-парсер не будет ругаться на & и < в JS-коде. Примерно так:

Выделить код

Код:

<script> <![CDATA[
   // ... собственно JS-код
]]> </script>

Отсутствует

 

№1521-07-2009 19:03:45

Najlus
Рррррррррррь!
 
Группа: Extensions
Откуда: Город N
Зарегистрирован: 11-01-2009
Сообщений: 1988
UA: Firefox 3.5

Re: Помогите с созданием расширения

FFUser665 пишет

дык сделай так:ищешь одинаковые(делающие одно и то же) 1кнопку под СВ2 расширение добавляющее эту кнопкусмотришь код кнопкираспаковываешь расширение и смотришь как и где это код прописан в нёмдалее действуешь со своим кодом аналогично

Ээээ а вы хоть одну такую пару знаете?

Добавлено 21-07-2009 19:10:21

Infocatcher пишет

Тогда нужно смотреть, что в forumzillaOverlay.xul.Минимальный вариант примерно такой:Код:<?xml version="1.0"?>
<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
    <toolbarpalette id="BrowserToolbarPalette"> <!-- Встроенное в Firefox хранилище кнопок -->
        <toolbarbutton label="Some label" oncommand="someJsFunc();" /> <!-- Добавляемая кнопка -->
    </toolbarpalette>
</overlay>

Чёт немного не понял код. Ясно что он обращается к хранилищу кнопок лиса, а вот что значит строка
<toolbarbutton label="Some label" oncommand="someJsFunc();" />
както не особо.


Вы ленивы, следовательно вы изобретательны (Граф Де Гиш)
Список настроек About:config на русском языке с пояснениями и рекомендациями

Отсутствует

 

№1621-07-2009 19:20:59

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.5

Re: Помогите с созданием расширения

Najlus пишет

а вот что значит строка

Строка добавляет новую кнопку, которая будет видна из
Вид – Панели инструментов – Настроить

label – подпись
oncommand – выполняемая команда


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№1721-07-2009 19:28:40

Najlus
Рррррррррррь!
 
Группа: Extensions
Откуда: Город N
Зарегистрирован: 11-01-2009
Сообщений: 1988
UA: Firefox 3.5

Re: Помогите с созданием расширения

А код кнопки где именно прописывать? в скобках someJsFunc(); или вместо этой команды?


Вы ленивы, следовательно вы изобретательны (Граф Де Гиш)
Список настроек About:config на русском языке с пояснениями и рекомендациями

Отсутствует

 

№1821-07-2009 20:32:12

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.5

Re: Помогите с созданием расширения

Если скрипт большой, он должен быть подключен с помощью тэга <script> и должен реализовывать некоторую внешнюю функцию, которая будет вызываться из oncommand.
Ну, и имена глобальных функций и переменных должны быть индивидуальными для каждого расширения – чтобы не было конфликтов.

То есть в <overlay> должен быть добавлен скрипт (возможно, путь к скрипту должен быть через chrome:// – давно не проверял, раньше, вроде, можно было указывать относительный путь):

Выделить код

Код:

<?xml version="1.0"?>
<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
	<script type="application/x-javascript" src="cbToExt.js" />
	<toolbarpalette id="BrowserToolbarPalette">
		<toolbarbutton id="qickBookmarksButton" label="Qick Bookmarks" oncommand="qickBookmarks.command();" />
	</toolbarpalette>
</overlay>

В скрипте должно быть что-то вроде

Выделить код

Код:

var qickBookmarks = {
	buttonId: "qickBookmarksButton",
	initialized: false,
	init: function() {
		window.removeEventListener("load", this, false);
		if(this.initialized || !this.button)
			return;
		this.cbInit.call(this.button);
		this.initialized = true;
	},
	command: function() {
		if(!this.initialized)
			this.init();
		this.cbCode.call(this.button);
	},
	cbCode: function() {
		/*CODE*/
	},
	cbInit: function() {
		/*Initialization Code*/
	},
	get button() {
		var button = document.getElementById(this.buttonId);
		if(!button)
			return null;
		delete this.button;
		return this.button = button;
	},
	handleEvent: function(e) {
		switch(e.type) {
			case "load": this.init(e); break;
		}
	}
};
window.addEventListener("load", qickBookmarks, false);

Правда, по-хорошему надо бы посмотреть, как там все запускается в Custom Buttons. =)

P.S. Работоспособность не проверял.

Добавлено 21-07-2009 20:35:09
P.P.S. Там потом еще будет ругаться на

Выделить код

Код:

custombuttons. writeFile (path, xmenu);

Отредактировано Infocatcher (21-07-2009 20:37:38)


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№1921-07-2009 21:52:04

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.5

Re: Помогите с созданием расширения

Пояснения.

Выделить код

Код:

var qickBookmarks = { ... }

– удобно для того, чтобы глобальные переменные не пересекались с другими расширениями.

Выделить код

Код:

window.addEventListener("load", qickBookmarks, false);

– добавляет обработчик события "load" окна браузера (до полной загрузки нельзя обратиться к элементам интерфейса – их еще нету).

Выделить код

Код:

handleEvent: function(e) { ... }

– метод объекта qickBookmarks, который будет вызван при наступлении события "load".


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№2022-07-2009 20:34:56

Najlus
Рррррррррррь!
 
Группа: Extensions
Откуда: Город N
Зарегистрирован: 11-01-2009
Сообщений: 1988
UA: Firefox 3.5

Re: Помогите с созданием расширения

Всёравно не пашет =(


Вы ленивы, следовательно вы изобретательны (Граф Де Гиш)
Список настроек About:config на русском языке с пояснениями и рекомендациями

Отсутствует

 

№2122-07-2009 20:58:34

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.5

Re: Помогите с созданием расширения

Najlus пишет

Всёравно не пашет =(

А консоль ошибок на что?

В том и дело, что не хватает реализации

Выделить код

Код:

custombuttons. writeFile (path, xmenu);

Остальное должно работать, если заменить

Выделить код

Код:

cbCode: function() {
        /*CODE*/
    },
    cbInit: function() {
        /*Initialization Code*/
    },

соответствующими скриптами из кода исходной кнопки.

Так что сначала нужно сделать, чтобы ругалось только на отсутствующее API Custom Buttons (т.е. чтобы работало только при включении Custom Buttons).


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№2228-07-2009 19:33:37

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 3.5

Re: Помогите с созданием расширения

Как-то так:
qick_bookmarks-0.1.1dev-fx.xpi [8,0 Кбайт] (без jar-архива)
qick_bookmarks-0.1.1-fx.xpi [6,1 Кбайт]


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]