2010-01-11 4 views
1

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

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

Вот код наложения:

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

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

var all_divs = $$('div'); 

«прототип .js "живет в том же каталоге, что и файл XUL.

+0

Там может быть неперехваченное исключение происходит. Можете ли вы запустить firebug и включить «остановить все ошибки» и посмотреть, что говорит отладчик сценария? Либо это, либо оберните свою строку кода в блок try/catch и посмотрите на исключение? что-то простое, как 'try {var a = $$ ('div')} catch (e) {alert e.message}' может помочь. – glomad

ответ

2

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

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

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

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

Смежные вопросы