2015-04-02 2 views
7

Я пытаюсь отправить данные на sidebar. Я просмотрел следующую документацию, но я не мог понять, как правильно отправлять данные на панель, когда она уже открыта.Как правильно отправлять данные на открытую боковую панель Firefox?

Мой текущий подход заключается в сохранении worker объекта я получаю, когда боковая панель прикрепляет в глобальной переменной, но я уверен, что есть лучший путь. Минимально пример демонстрации мой текущий подход:

var BARWORKER = undefined; 
require("sdk/ui/sidebar").Sidebar({ 
    id: "mybar", 
    url: "./sidebar.html", 
    onReady: function (worker) { 
     BARWORKER = worker; 
    } 
}); 

// lots of code 

if (BARWORKER) { 
    BARWORKER.port.emit("message", payload); 
} 

// lots of code 

ответ

2

Мое текущее решение дать Sidebar поле, чтобы сохранить текущий worker объект. При отсоединении боковой панели установлено значение undefined. Это хорошо работает как промежуточное решение. Я чувствую, что лучший подход будет включать пользовательские события, однако я еще не выяснил, как использовать его в этом конкретном случае.

var BAR = require("sdk/ui/sidebar").Sidebar({ 
    id: "mybar", 
    url: "./sidebar.html", 
    worker: undefined, 
    onReady: function (worker) { 
     BAR.worker = worker; 
    }, 
    onDetach: function() {  
     BAR.worker = undefined; 
    } 
}); 
3

Чтобы отправить данные на боковую панель, когда она уже открыта, вы также можете использовать API видимости.

https://developer.mozilla.org/en-US/docs/DOM/Using_the_Page_Visibility_API

function onVisibilityChange() { 
    if(!document.hidden){} 
} 

document.addEventListener("visibilitychange", onVisibilityChange); 
+0

Эй. Я не совсем слежу за тобой. Не могли бы вы добавить еще несколько деталей? У меня нет доступа к 'document' global в главном скрипте, из которого я хочу отправить данные в скрипт боковой панели. Благодарю. – timgeb

+0

Этот код вам нужно добавить в HTML на боковой панели. Если нет вашей боковой панели, вы можете вставить код с помощью ** Content Script ** https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Content_Scripts –

+0

Хорошо, это в основном документация I уже связанный с моим вопросом. Мне все еще нужен полный рабочий пример. – timgeb

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