Как я могу использовать Prototype в расширении Firefox? - PullRequest
1 голос
/ 11 января 2010

Я понимаю, что jQuery является предпочтительной средой Javascript для расширений Firefox, но я доволен Prototype и должен реализовать простое расширение Firefox.

К сожалению, у меня проблемы с вызовом метода Prototype. Каждый вызов метода приводит к неработоспособности: нет ошибок или других признаков того, что произошел вызов метода.

Вот код оверлея:

<overlay id="liteextension-overlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

Этот вызов метода Prototype возвращает пустой массив, даже если на странице есть div:

var all_divs = $$('div');

Файл "prototype.js" находится в том же каталоге, что и файл XUL.

1 Ответ

2 голосов
/ 14 мая 2010

Использование таких библиотек, как prototype и jquery внутри расширения Firefox - сложная вещь. Проблема в том, что JQuery не загружается в том же контексте при загрузке из XUL, чем при загрузке с веб-страницы. Поэтому, если вы пытаетесь манипулировать содержимым на странице, библиотека, загруженная в XUL, не увидит страницу DOM там, где она ожидает. С JQuery (не уверен насчет прототипа) вы можете решить эту проблему, указав правильный контекст.

Во-вторых, импорт библиотек внутри расширения в оверлее browser.xul поместит все функции и переменные, определенные в библиотеке, в глобальное пространство имен, потенциально конфликтуя с другими расширениями и даже кодом Firefox. Это может вызвать большой беспорядок.

В этом сообщении на форуме больше информации о JQuery, но применяются те же проблемы ... возможно, предложенные решения могут быть полезны для вас:

http://forums.mozillazine.org/viewtopic.php?f=19&t=1460255

...