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

Заказывай стафф с атрибутикой Mozilla и... пусть все вокруг завидуют тебе! Быть уникальным - быть с Mozilla!

№7602-09-2008 14:35:18

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Что-то похоже либо я чего-то не понимаю, либо с многоплатформенностью у Лиса есть проблемы :(
По крайней мере приведенный мною пример в Линуксе работает иначе - перенаправления в файл не происходит, а вместо этого результат печатается прямо в консоли (файл при этом не создается) :(
С этим вообще что-то можно сделать?
И баг ли это?


---  ---

Отсутствует

 

№7703-09-2008 13:26:50

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Еще кстати указанный код почему-то не работает с ехе-файлами?..


---  ---

Отсутствует

 

№7804-09-2008 22:55:02

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Продолжая тему горячих клавиш и их обработчиков:
Как-то странно тут все сделано: есть обработчики команд command, есть возможность их использования с контролах через одноименный атрибут, однако почему-то с хоткеями они так не работают - нету у key атрибута command! :(
Мб конечно они как-то вместе и работают, но у меня складывается впечатление, что не работают они вместе :(
Я понимаю, что все можно делать через onCommand, но тогда как минимум перестает работать фича, что если задизейблить описание command - через все контролы она тоже станет недоступна, но почему-то через хоткей эта функциональность останется доступной (ну или надо и его тоже дизейблить).
Да и некрасиво как-то (и не логично):dumb:

Вот пример:

Выделить код

Код:

<command id="SF_Fill_CMD" oncommand="SF_Fill();" />
    <key id="SF_Fill_Key" keycode="VK_F4" oncommand="SF_Fill();" />
    <toolbarbutton id="SF-Fill" tooltiptext="&ScriptFilling.bFillTT;"
            label="&ScriptFilling.bFill;" command="SF_Fill_CMD" />

Кстати, этот пример под 2-й версией не работает вообще: command ладно, а вот то, что key не работает - уже неприятно...
Причём как-то я не заметил, чтобы какие-то из этих элементов были помечены на оффсайте как относящиеся только к 3-ке :(

И вообще никто не в курсе, этот бардак на девелоперском оффсайте устранять вообще будут (или в чем его смысл хотя бы)?
А то например и здесь, и и здесь (разница в урлах на docs/) - практически одно и то же?..


---  ---

Отсутствует

 

№7904-09-2008 23:38:08

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.0
Веб-сайт

Re: Вопросы (и ответы) по разработке расширений

нету у key атрибута command!

проверял на XUL Runner'е, вроде есть:

Выделить код

Код:

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

    <!-- your code here -->
<commandset id="cs01">
<command id="c01" oncommand="alert('xyz')"/>
</commandset>

<keyset id="ks01">
<key id="k01" key="a" command="c01"/>
</keyset>

<button id="b01" label="do command" command="c01" key="k01"/>
<button id="b02" label="disable command" oncommand="document.getElementById('c01').setAttribute('disabled','true');"/>
<button id="b03" label="enable command" oncommand="document.getElementById('c01').removeAttribute('disabled');"/>

</window>

Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№8005-09-2008 12:27:53

Shutnik
Участник
 
Группа: Extensions
Зарегистрирован: 12-11-2005
Сообщений: 3785
UA: Iceweasel 3.0

Re: Вопросы (и ответы) по разработке расширений

Forest
http://developer.mozilla.org/En/XUL/Key#Attributes

Отсутствует

 

№8108-09-2008 12:46:16

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Shutnik

http://developer.mozilla.org/En/XUL/Key#Attributes

Там действительно есть :)
Наверное я как-то неправильно ищу :(

Anton

Выделить код

Код:

<button id="b01" label="do command" command="c01" key="k01"/>

Так действительно в 3-ке работает, спасибо :)

Но все равно смущает тот факт, что недостаточно добавить key, а надо еще и command :(
То есть получается, что key добавляется только чтобы в элементе стал отображаться соотв хоткей.
Но при этом запросто можно указать разные command разным элементам при одинаковом значении key (а это потенциальный источник ошибок).

Теперь буду разбираться, как же прикрутить хоткей на Фх в 2-ке?..


---  ---

Отсутствует

 

№8209-09-2008 08:45:46

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.0
Веб-сайт

Re: Вопросы (и ответы) по разработке расширений

недостаточно добавить key, а надо еще и command

key вполне достаточно. command там по другой причине.
Соврал ) Атрибут key в <button ... - лишний.

Отредактировано Anton (09-09-2008 13:58:40)


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№8326-09-2008 12:24:52

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Anton
Спасибо за пример, он действительно везде работает :)

Только вот видимо у меня случай особый - кнопки на тулбаре.
И вот там не получается заставить работать :(
Сделал даже тестовое расширение, где нет ничего кроме тулбара и кнопок с различными вариантами - так работают только где явно oncommand прописан + хоткеи не работают вообще :(
Вот выложил.
Что я не так сделал?

Добавлено 26-09-2008 12:31:02
Ещё написал диалог (для изменения настроек расширения) - так не получается отменить нажатие на Ок в обработчике этой кнопки :(
То есть если я явно после вызова обработчика в xul-е допишу "return false;" - окно не закрывается!
А вот если у меня с обработчике произошло исключение и я в его обработчике сделал "return false;" - обработчик прерывается, но окно все равно закрывается :(
Пробовал даже переменную булеву заводить и выходить из обработчика всегда в одном месте по "return _переменная_;" - не помогает.
Куда копать?

Отредактировано Forest (26-09-2008 12:26:12)


---  ---

Отсутствует

 

№8426-09-2008 12:38:15

Shutnik
Участник
 
Группа: Extensions
Зарегистрирован: 12-11-2005
Сообщений: 3785
UA: Iceweasel 3.0

Re: Вопросы (и ответы) по разработке расширений

Forest
в xul-файле нужно писать return foo(), в foo возвращать false, когда диалог закрываться не должен

Отсутствует

 

№8526-09-2008 14:38:50

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.0
Веб-сайт

Re: Вопросы (и ответы) по разработке расширений

Forest пишет

Что я не так сделал?

Пропустил самое главное : )
"Заверни" keyset и commandset в <window id="main-window"

И ещё, атрибуты key в <toolbarbutton - лишние.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№8626-09-2008 15:10:24

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Anton

Пропустил самое главное : )
"Заверни" keyset и commandset в <window id="main-window"
И ещё, атрибуты key в <toolbarbutton - лишние.

Вот и я тоже думаю, что что-то важное упускаю :(
Вечером дома попробую, спасибо :)


---  ---

Отсутствует

 

№8726-09-2008 19:24:02

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Anton

Пропустил самое главное : )
"Заверни" keyset и commandset в <window id="main-window"

И ещё, атрибуты key в <toolbarbutton - лишние.

Все проверил - работает - спасибо :)
Удивительно, почему в документации об этом ни слова + нет ни в одном примере?..

Shutnik

в xul-файле нужно писать return foo(), в foo возвращать false, когда диалог закрываться не должен

return действительно нужен, но у меня проблема оказалась в другом - промежуточный вызов-обертка, в котором я забыл сделать return :(
Спасибо за участие :)

На будущее - интересно, можно ли как-то смотреть возвращаемые такими обработчиками значения?..


---  ---

Отсутствует

 

№8827-09-2008 03:15:52

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.0
Веб-сайт

Re: Вопросы (и ответы) по разработке расширений

Удивительно, почему в документации об этом ни слова + нет ни в одном примере?..

Есть об этом и в документации и в примерах.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№8927-09-2008 10:09:37

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Anton

Есть об этом и в документации и в примерах

Нисколько не сомневаюсь, что где-то оно есть.
Только вот признак качества документации - насколько быстро можно найти то, о существовании чего даже не догадываешься (ну разве что самую малость) ;)
Рассмотрим оффсайт:
В описании тубларов вообще ничего нет про command и key - исключительно oncommand. Пример.
В описании command и key (а так же в их туториалах: command и key) нет ни слова про

Выделить код

Код:

<window id="main-window"

(ссылок тоже нет).
Даже поиск по "main-window" не дает ничего относящегося к вопросу (по крайней мере на первой странице).

Так что у меня в очередной раз складывается впечатление, что кто-то из нас двоих неправильный (я или эта документация).

Есть об этом и в документации и в примерах

Так что за ссылки на эти документы (а особенно на пример поиска, который позволяет их найти) был бы очень признателен.


---  ---

Отсутствует

 

№9027-09-2008 15:11:35

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.0
Веб-сайт

Re: Вопросы (и ответы) по разработке расширений

Forest пишет

В описании command и key (а так же в их туториалах: command и key) нет ни слова про

Выделить код

Код:

<window id="main-window"

(ссылок тоже нет).

XUL->XUL Reference->overlay

Each element within the overlay is inserted at a location in the master window, determined by matching id  attributes. For instance, if an element in an overlay has an id  of file_menu, the corresponding element with the id  file_menu in the master window that uses the overlay would be altered. Attributes declared in the overlay are added to that element and child elements are inserted into the window within that element. Elements directly inside the overlay element as children that do not have id  attributes are appended to the master window. This allows the addition of scripts to the master window from the overlay.

"Каждый элемент оверлея вставляется в позицию главного окна, определяемую соответствующими атрибутами id. Например, если элемент оверлея имеет атрибут id со значением "file_menu", соответствующий элемент (имеющий атрибут id со значением "file_menu") главного окна, использующего оверлей, будет изменён. Атрибуты и дочерние элементы элемента из оверлея будут добавлены в этот элемент главного окна. Дочерние элементы элемента overlay, не имеющие атрибутов id будут добавлены в главное окно. Это позволяет добавлять скрипты в главное окно из оверлея."
То есть, commandset и keyset особенными не являются: если они должны находиться в элементе window, значит и в оверлее они должны находиться в элементе window. Либо не иметь идентификаторов, но без идентификаторов они не работают - не работают их дочерние command или key.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№9106-10-2008 23:19:09

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Anton
Спасибо за исчерпывающий ответ :)

Но все таки примеров у них явно не хватает.
Например

То есть, commandset и keyset особенными не являются: если они должны находиться в элементе window, значит и в оверлее они должны находиться в элементе window. Либо не иметь идентификаторов, но без идентификаторов они не работают - не работают их дочерние command или key.

- это уже не перевод их текста, а собственные знания ;)


Вот ещё с какой проблемой столкнулся: у моей кнопки на тулбаре название сбоку, а не снизу + в Настройке панелей инструментов у неё нет картинки.
Вот кусок из .css:

Выделить код

Код:

#SF-Fill
{
  list-style-image: url("chrome://acfilling/skin/barcod.png");
}

и из .xul:

Выделить код

Код:

<toolbox id="navigator-toolbox">
    <toolbar id="SF-Toolbar" class="chromeclass-toolbar"
             context="toolbar-context-menu" toolbarname="&ACFilling.toolbarName;"
             hidden="false" persist="hidden">
      <toolbaritem flex="0">
        <toolbarbutton id="SF-Fill" tooltiptext="&ACFilling.bFillTT;"
                label="&ACFilling.bFill;" command="sfc_fill" />
      </toolbaritem>
    </toolbar>
  </toolbox>

  <toolbarpalette id="BrowserToolbarPalette">
        <toolbarbutton id="SF-Fill" tooltiptext="&ACFilling.bFillTT;"
                label="&ACFilling.bFill;" command="sfc_fill" />
  </toolbarpalette>

Смотрел готовые расширения (например для работы с HandyCache) - особой разницы не нашёл (ну или не там искал).
Вот разве что попробовал прописать

Выделить код

Код:

class="toolbarbutton-1"

- и сразу надпись стала под кнопкой, но вот только картинки в Настройке панелей инструментов теперь явно от стандартного тулбара, причем она там вся - все 5х14 картинок?..
Явно где-то должна прописываться эта информация.
Куда копать?


---  ---

Отсутствует

 

№9207-10-2008 00:13:39

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

Re: Вопросы (и ответы) по разработке расширений

Forest

Явно где-то должна прописываться эта информация.
Куда копать?

Значит, при настройке тулбара видно только class="toolbarbutton-1".

В chrome.manifest нужно добавить примерно следующее:

Выделить код

Код:

style chrome://global/content/customizeToolbar.xul chrome://путь_до_стилей.css

Соответственно, в css должен описываться внешний вид кнопки.


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

Отсутствует

 

№9308-10-2008 14:37:02

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Infocatcher

В chrome.manifest нужно добавить примерно следующее:

Да, спасибо, так заработало :)
Причем на 2-ке даже без

Выделить код

Код:

class="toolbarbutton-1"

. Но вот на 3-ке без него уже не работает.

Отредактировано Forest (08-10-2008 14:39:15)


---  ---

Отсутствует

 

№9427-10-2008 11:10:13

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

А контекстное меню (contentcontextmenu) tabbrowser-ра - это что?
Это которое по правой мышке над пустым местом/кнопкой выпадающего списка табов?


---  ---

Отсутствует

 

№9517-11-2008 00:10:43

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Код из about Лиса не работает в Громоптице.

Выделить код

Код:

<text value="&tbae.creator;" class="url"
          tooltiptext="&tbae.creator.email;"
          onclick="window.open('mailto:&tbae.creator.email;');"/>

В Лисе при нажатии на такое открывается окно и пытается запуститься почтовый клиент.
А в Громоптице выдается ошибка:

Ошибка: uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMJSWindow.open]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: chrome://tbae/content/dialogs/about.xul :: onclick :: line 1"  data: no]


---  ---

Отсутствует

 

№9617-11-2008 14:30:39

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
UA: Firefox 3.0
Веб-сайт

Re: Вопросы (и ответы) по разработке расширений

Forest
Попробуй

Выделить код

Код:

window. open ('mailt:&tbae.creator.email;', '_blank', 'chrome,dependent=yes,all');

Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№9717-11-2008 14:51:13

Shutnik
Участник
 
Группа: Extensions
Зарегистрирован: 12-11-2005
Сообщений: 3785
UA: Iceweasel 3.0

Re: Вопросы (и ответы) по разработке расширений

или

Выделить код

Код:

window.location.href="mailto:&tbae.creator.email;";

Отсутствует

 

№9818-11-2008 09:00:40

Forest
Участник
 
Группа: Members
Откуда: Обнинск
Зарегистрирован: 05-04-2005
Сообщений: 1778
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Anton
Shutnik
Спасибо, работает :)
Но второй вариант предпочтительнее, так как первый порождает какое-то вырожденное окно, которое приходится закрывать, чтобы работать дальше.


---  ---

Отсутствует

 

№9918-11-2008 13:24:50

Snipe
Участник
 
Группа: Members
Зарегистрирован: 18-11-2008
Сообщений: 38
UA: Firefox 3.0

Re: Вопросы (и ответы) по разработке расширений

Не подскажите, с чего начать, чтобы сделать самый простой работающий аддон для FF.
Пытался делать по https://developer.mozilla.org/en/Building_an_Extension, но в итоге то что получилось не работает. =(
На этом форуме нашел пример http://www.inode.ru/articles/programming/2005-10-04/85, но он еще на FF1 - хочется поновее что-то.

М.б. кто-то сможет что-то подсказать.

Отредактировано Snipe (18-11-2008 13:27:39)

Отсутствует

 

№10018-11-2008 15:33:19

Shutnik
Участник
 
Группа: Extensions
Зарегистрирован: 12-11-2005
Сообщений: 3785
UA: Iceweasel 3.0

Re: Вопросы (и ответы) по разработке расширений

Snipe
в вики есть немного информации
http://forum.mozilla-russia.org/doku.php?id=development:extension:firefox
http://forum.mozilla-russia.org/doku.php?id=development:extension:mozilla
http://forum.mozilla-russia.org/doku.php?id=development:xul:app:part1

Отсутствует

 

Board footer

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