Pull to refresh

Comments 13

Ага, в последнее время какая-то путаница у меня с названиями :)
«Напоследок, позвольте пару „приятных“ мелочей:»

не надо тянуть в расширения свои привычки из веб-страничек. у мозиллы есть замечательная технология — xbl, которая позволяет навешивать обработчики, которые сами удаляются при вытаскивании кнопки из дома и добавляются при добавлении.

насчёт валидации — какие-то странные требования. эта «валидация» какую цель преследует?

лениво грузить модули удобно этой штукой: github.com/nin-jin/fenix/blob/master/this.jsm
используется просто:
Compinent.utils.import( 'resource://fenix/this.jsm' )
let $my= $( 'путь к папке модулей' ) // путь может быть относительным или вообще не быть
теперь везде можно использовать например $my.blinker() — при первом обращении будет загружен модуль blicker.jsm и оттуда взят объект blinker

По поводу XBL — Спасибо! Учту.

А можно при регистрации через XBL оставить все инициации функций внутри замыкания?
Т.е., чтобы они не оказывались в глобальной области?

Потому, что валидатор (тот, про который сказано в самом начале, ещё до хабраката) не валидирует без предупреждений, если что-нибудь присутствует в контексте.

Components.utils.import( path_to_file, object_where_file_will_be_loaded )

Components.utils.import( path_to_file, object_where_file_will_be_loaded )

Только то, что Вы предложили попадет в window.

А то, что предлагаю я, попадет в «object_where_file_will_be_loaded»…
Что-то непонятное вышло.

Там, выше у меня было уже
Components.utils.import( path_to_file, object_where_file_will_be_loaded )

Предыдущий комментарий про него же.

tenshi в личку (так получилось) кинул ещё вот это:

> А можно при регистрации через XBL оставить все инициации функций внутри замыкания?

через xbl можно определять методы, которые будут и элемента.
и из анонимного контента можно их вызывать

> Components.utils.import( path_to_file, object_where_file_will_be_loaded )
> Только то, что Вы предложили попадет в window.

это в модулях применяется, чтобы не надо было определять константу EXPORTED_SYMBOLS
в оверлее можно писать так:
let $= Components.utils.import( path_to_file, {} ).$

вот ещё интересная штука: nin-jin.github.com/article/article_fiber/article_fiber.xml

Осталось добавить статью про модерацию расширений. Сначала два месяца модерируют поверхностно и расширение светится желтым в списке (Это дополнение прошло предварительную проверку Mozilla.), потом еще столько же для окончательной модерации в обычный статус.
Infocatcher с forum.mozilla-russia.org/ просил передать: «Тем не менее, изменение сторонних функций через eval() имеет меньше проблем с совместимостью (в принципе, это обычный патч).
adblockplus.org/blog/five-wrong-reasons-to-use-eval-in-an-extension
piro.sakura.ne.jp/latest/blosxom/mozilla/xul/2010-02-08_eval-en.htm#section-root-children
piro.sakura.ne.jp/latest/blosxom/mozilla/extension/2010-04-06_amo-review-and-eval.htm#section-root-children

«Правильный» вариант с nsITimer требует написания дополнительного кода для отмены таймеров при закрытии окна.
То есть не понятно, что в нем настолько правильного, чтобы оправдать создание дополнительных велосипедов.

> gid('helloButton')
И внезапно узнаем, что, например, CSS применяется не только к самому первому #id.
А вот getElementById() из скрипта всегда вернет самый первый элемент.
И совершенно не понятно, зачем придумывать ненужные усложнения, если для устранения конфликтов достаточно создать свое уникальное «пространство имен»:
var exampleExtension = {
someMethod: function() {… }
};

Это еще не считая рекомендации снимать все добавленные listener'ы при закрытии окна.

> Моргалка…
Для моргалок есть setInterval()/clearInterval() или можно делать повторный setTimeout() после завершения предыдущего.
Причем это не одно и то же, потому как повторяющийся код выполняется не мгновенно (и с помощью setTimeout() можно получить примерно равные паузы между выполнениями этого кода).»
:)

Все верно, но об этом же тоже вроде бы как уже известно, это ж все так, для интересу.

А в «моргалке» самое на мой взгляд веселое это не таймеры, которые там есть, а то, что в замыкании используется остаток от деления на два, который или «1» или «0».
:)
Sign up to leave a comment.

Articles