2015-04-02 18 views
7

Verileri bir sidebar ürününe göndermeye çalışıyorum. Aşağıdaki belgelere baktım, ancak zaten açıldığında veriyi çubuğa doğru şekilde nasıl gönderileceğini anlayamadım.Açık bir Firefox kenar çubuğuna veri nasıl düzgün gönderilir?

Bulunduğum yaklaşım kenar çubuğu küresel değişkende takılarak zaman alıyorum worker nesneyi kaydetmek için, ama bir olduğuna eminim daha iyi yol. Benim geçerli bir yaklaşım sergileyen Minimal örnek:

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 

cevap

2

Benim şu anki çözüm kenar çubuğu akım worker nesneyi kaydetmek için bir alan sağlamaktır. Kenar çubuğunu ayırdıktan sonra undefined olarak ayarlanır. Bu, bir ara çözüm olarak oldukça iyi çalışır. En iyi yaklaşımın özel olayları içereceği konusunda bir fikrim var, ancak henüz bu özel durumda nasıl kullanıldığını öğrenemedim.

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

Zaten açıldığında verileri kenar çubuğuna göndermek için, ayrıca görünürlük API'sini de kullanabilirsiniz.

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

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

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

Selam. Seni orada takip etmiyorum. Lütfen birkaç detay daha ekleyebilir misiniz? Ana komut dosyasında global 'belgesine' erişimim yok, bunun için kenar çubuğu komut dosyasına veri göndermek istiyorum. Teşekkürler. – timgeb

+0

Bu kod kenar çubuğunuzdaki HTML'ye eklemeniz gerekiyor. Kenar çubuğunuz değilse, kodu ** İçerik Komut Dosyası ** ile birlikte ekleyebilirsiniz. Https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Content_Scripts –

+0

Tamam, temel olarak belgeler I zaten benim soruma bağlı. Hala eksiksiz, çalışan bir örneğe ihtiyacım var. – timgeb

İlgili konular