2012-11-16 87 views
1

所以。我遇到了一些問題,我的面板並不總是顯示(雖然看起來附加組件的其餘部分仍在工作)。我正在嘗試寫一些日誌來了解爲什麼會發生這種情況,但有些事情我並不是很瞭解。如何知道面板我顯示

要試驗我做了一個簡單的附加這樣

// main.js 
const panels  = require("panel"); 
const {Cc, Ci}  = require("chrome"); 
const widgets  = require("widget"); 

var my_widget = widgets.Widget({ 
    id: "google-link", 
    label: "Click me", 
    contentURL: "http://google.com/favicon.ico", 
    width: 20, 
    height: 20, 
    panel: my_panel, 
    onClick: function() { 
     my_panel.show(); 
     console.log('Panel displaying? ' + my_panel.isShowing); 
    } 
}); 

var my_panel = panels.Panel({ 
    width: 500, 
    height: 500, 
    contentURL: "http://google.com", 
}); 

my_panel.port.on("show", function() { 
    console.log('Panel emitted show'); 
}); 

什麼情況,首先是:isShowing總是false,甚至當我清楚地看到面板。並且show事件似乎永遠不會被觸發(我真的希望趕上error事件,但這只是爲了首先找到事件)。

細則:這是使用SDK 1.6.1和Firefox 10ESR。也許這是在以後的版本中解決的問題,我不知道。無論哪種方式,我想知道我是否想在這裏。

回答

1

您的代碼是不完全正確,看這種變化:

// main.js 
const panels  = require("panel"); 
const {Cc, Ci}  = require("chrome"); 
const widgets  = require("widget"); 

var my_widget = widgets.Widget({ 
    id: "google-link", 
    label: "Click me", 
    contentURL: "http://google.com/favicon.ico", 
    width: 20, 
    height: 20, 
    panel: my_panel, 
    onClick: function() { 
     my_panel.show(); 
     // this is false because the panel is shown asynchronously 
     console.log('Panel displaying? ' + my_panel.isShowing); 
    } 
}); 

var my_panel = panels.Panel({ 
    width: 500, 
    height: 500, 
    contentURL: "http://google.com", 
}); 

// there is no port property on panel 
my_panel.on("show", function() { 
    console.log('Panel emitted show'); 
    // this is true... 
    console.log('Panel displaying? ' + my_panel.isShowing); 
}); 

的代碼是在這裏:

https://builder.addons.mozilla.org/package/161691/latest/

+0

啊哈!現在就做到了。 show()是異步的信息+1。 – danneth