Firefox Addon SDK: связь между различными contentScripts - PullRequest
2 голосов
/ 16 января 2012

У меня есть два скрипта контента в main.js аддона Firefox: contentScript A находится внутри модуля 'panel' (модуль A) contentScript B находится внутри модуля 'page-mod' (модуль B) Как они могут общаться или обмениваться сообщениями? Я попытался сделать это, выполнив следующие действия: 1. отправив сообщение из contentScript A в AddonScript A 2. отправив сообщение из AddonScript A в AddonScript B, включив модуль B в A 3. отправив сообщение из AddonScript B в contentScript B. Тем не менее, это не работает (скорее это работает с перебоями, может быть из-за некоторых ошибок в коде). , Этот метод в порядке? Можно ли прокомментировать какой-либо лучший метод? , Thanx

1 Ответ

6 голосов
/ 19 января 2012

Из-за модели безопасности SDK любое взаимодействие между вашей панелью и вашим модом страниц должно проходить через основной код дополнения.Вот пример, который берет данные из формы, реализованной в Panel, и отправляет их через основной скрипт в мод страницы:

https://builder.addons.mozilla.org/addon/1035008/latest/

Ключевой фрагмент кода - этот:

var pagemod = require("page-mod").PageMod({
    include: [target],
    contentScriptFile: [data.url('jquery-1.7.1.min.js'), data.url('page-mod.js')],
    onAttach: function(worker) {
        // console.log('attached...');
        // when we get a panel-message event from the panel 
        panel.port.on('panel-message', function(data) {
            // we emit the same message through to the page-mod
            worker.port.emit('panel-message', data);
        });
    }
});

Вы заметите, что когда подключен мод страницы, я настроил экземпляр панели для перехвата события 'panel-message', а затем отправил его прямо в текущий мод страницыработник.

...