Roe*_*oey 5 firefox-addon firefox-addon-sdk
我的插件打开一个弹出面板(popup.html).
当用户将当前选项卡更改为其他选项卡时,弹出式面板将被隐藏,直到用户再次单击插件图标.(同时插件仍然"生活"在后台).
当弹出面板打开时,第二次我需要它来RELOAD其contentURL(popup.html),但我确实找到了这样做的方法.
这可能看起来很简单,但我对附加SDK的经验很少.
任何帮助将不胜感激.
这是我的代码:
exports.main = function() {
data = require('self').data;
var tabs = require("tabs");
var popupPanel = require("panel").Panel({
width:550,
height:400,
contentURL: data.url("popup.html"),
contentScriptFile: [data.url("popup.js")],
contentScript: " "+
"self.port.on('curTabMsg', function(curTabMsg) {" +
"main(curTabMsg['curTab']);" +
"});"
});
require('widget').Widget({
panel: popupPanel,
onClick: function() {
popupPanel.port.emit("curTabMsg",{'curTab': tabs.activeTab.url});
}
});
};
Run Code Online (Sandbox Code Playgroud)
重新加载 iframe 的 html 毕竟不是我的问题。(我还需要重新加载我的 contentScript)
所以我最终所做的是每次单击小部件时创建一个新面板。
我向库中添加了一个名为 myPanel.js 的新文件
function getPanel(contentURL,contentScriptFile,contentScript){
var popupPanel = require("panel").Panel({
width:550,
height:400,
contentURL: contentURL,
contentScriptFile: contentScriptFile,
contentScript: contentScript
});
return popupPanel;
}
exports.getPanel = getPanel;
Run Code Online (Sandbox Code Playgroud)
在我的 main.js 中:
exports.main = function() {
data = require('self').data;
var myPanel=require("myPanel");
var tabs = require("tabs");
let myWidget = require('widget').Widget({
id: "SomeId",
label: "Some lable",
contentURL: data.url("some.png"),
onClick: function() {
var panel = myPanel.getPanel(data.url("popup.html"),[data.url("popup.js")],
"self.port.on('curTabMsg', function(curTabMsg) {" +
"main(curTabMsg['curTab']);" +
"});");
panel.show();
panel.port.emit("curTabMsg",{'curTab': tabs.activeTab.url});
}
});
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2290 次 |
| 最近记录: |