gpt4 book ai didi

firefox-addon - 如何使用 Firefox 插件 sdk 重新加载小部件弹出面板?

转载 作者:行者123 更新时间:2023-12-04 20:52:18 24 4
gpt4 key购买 nike

我的插件会打开一个弹出面板 ( popup.html )。

当用户将当前选项卡更改为不同的选项卡时,弹出面板将隐藏,直到用户再次单击插件图标。 (同时插件仍然“存在”在后台)。

当第二次打开弹出面板时,我需要它重新加载它的 contentURL ( popup.html ),但我确实找到了方法。

这可能看起来很简单,但我对 Add-on 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});
}
});
};

最佳答案

毕竟重新加载 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;

在我的 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});
}
});
};

关于firefox-addon - 如何使用 Firefox 插件 sdk 重新加载小部件弹出面板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9098828/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com