Как вставить 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.