Как вставить jQuery в дополнение / расширение Firefox без Window-объекта?

У меня большие проблемы, когда я решил портировать расширение Chrome на Firefox. Одна из проблем заключается в том, что jQuery не будет устанавливаться в файл "Lib/main.js". Я получаю следующую ошибку:

ReferenceError: window is not defined

Кажется, что объект window просто не определен в основном методе дополнения Firefox.

Я понимаю, что само расширение не нуждается в фиксированном объекте окна, потому что оно не представляет HTML-страницу. Но это делает невозможным установку jQuery, пока я хочу воспользоваться преимуществами метода ajax и алгоритма поиска в элементах dom.

Я пробовал несколько методов, но все они потерпели неудачу:

  • Получить объект окна с активной вкладки (Не удалось отправить элемент окна, поскольку метод sendMessage() является частью объекта окна)
  • document.createElement (Ошибка, потому что нет документа-объекта)
  • Некоторые случайные вещи, которые также не удалось

Так что мой вопрос: кто-нибудь успешно установил jQuery в основной метод дополнения Firefox?

1 ответ

Lib/main.js это не то, где вы должны поместить свой код приложения. Там вы бы положили свой код инициализации. Как мы сделали в Chrome manifest.json, Взгляните на мои расширения Firefox main.js, Это выглядит так:

exports.main = function() {};

var { MatchPattern } = require("match-pattern");

var pageMod = require("page-mod");
var data = require("self").data;

pageMod.PageMod({
    include: [/.*phpminiadmin.*/, /.*phpmyadmin.*/, /.*devadmin.*/],
    contentScriptWhen: 'ready',
    contentScriptFile: [data.url('jquery-1.7.2.min.js'),data.url('jquery-ui-1.8.20.custom.min.js'),data.url('bootstrap.min.js'),data.url('querysaver.js')]

});

Это pageMod это позволит вам загружать ваш javascript в контекст страницы, который, конечно, находится внутри отдельного мира по сравнению с собственным контекстом страницы.

Скрипты, которые вы хотите загрузить, должны находиться внутри ../data в отношении lib/,

Посмотрите на структуру папок моего аддона. https://github.com/juzerali/Don-t-lose-your-query/tree/master/Firefox-Addon. Я не помню правильно, но вам может понадобиться включить api-utils.

Я нашел полезным использовать SDK Firefox.

Другие вопросы по тегам