因此。我有一些问题,我的面板并不总是显示(虽然看起来附加的其余部分仍然有效)。我正在尝试写一些日志来找出发生这种情况的原因,但有一些我不太了解的事情。
为了实验我做了一个简单的插件
// 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。也许这是在以后的版本中解决的问题,我不知道。无论哪种方式,我都想知道我是否在这里思考。
答案 0 :(得分: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);
});
代码在这里: