Firefox addon 使面板仅对某些URL可用

Firefox addon 使面板仅对某些URL可用,firefox-addon,firefox-addon-sdk,Firefox Addon,Firefox Addon Sdk,Chrome有一个叫做的东西,我正在尝试用Firefox插件SDK/Jetpack复制这个功能。可能有一个比我迄今为止尝试的更好的方法,我愿意接受建议 使用选项卡,我能够监听选项卡就绪并激活事件,如果选项卡的URL匹配,则应启用插件小部件;如果没有,则禁用。我已经到了可以在适当的时候更改图标的地步,但是我也想禁用面板 策略1:窃取点击事件,仅当我们在正确的页面上时才显示面板;否则,请忽略。问题是,手动显示配电盘会导致配电盘无法锚定 策略2:禁用时将contentURL设置为null。获取一个错误

Chrome有一个叫做的东西,我正在尝试用Firefox插件SDK/Jetpack复制这个功能。可能有一个比我迄今为止尝试的更好的方法,我愿意接受建议

使用
选项卡
,我能够监听选项卡就绪并激活事件,如果选项卡的URL匹配,则应启用插件小部件;如果没有,则禁用。我已经到了可以在适当的时候更改图标的地步,但是我也想禁用面板

策略1:窃取点击事件,仅当我们在正确的页面上时才显示面板;否则,请忽略。问题是,手动显示配电盘会导致配电盘无法锚定

策略2:禁用时将
contentURL
设置为
null
。获取一个错误,抱怨它不是URL

策略3:对禁用状态使用不同的HTML文档。转到其他页面后,将
panel.contentURL
设置为其他URL不起作用

代码如下:

const widgets=require(“widget”);
const Panel=需要(“Panel”)。Panel;
常量选项卡=需要(“选项卡”);
常量数据=需要(“自身”)数据;
const prefs=require(“简单prefs”).prefs;
var面板=面板({
宽度:480,
身高:640,
contentURL:data.url(“panel.html”),
contentScriptFile:[data.url('jquery.min.js')、data.url('panel.js')],
onMessage:function(msg){console.log(msg)}
});
var widget=widgets.widget({
id:“图标”,
标签:“出口”,
contentURL:data.url(“icon.png”),
面板:面板
});
函数启用(){
widget.contentURL=data.url('icon.png');
panel.contentURL=data.url(“panel.html”);
}
函数禁用(){
widget.contentURL=data.url('icon_disabled.png');
panel.contentURL=data.url(“panel_disabled.html”);
}
更改选项卡(选项卡)上的功能{
console.log(tab.url);
if(/http:\/\/example.com\/.*.exec(tab.url)){
console.log('ENABLE');
启用();
}否则{
console.log('DISABLE');
禁用();
}
console.log(panel.contentURL);
}
tabs.on('ready',on\u change\u tab);
tabs.on('activate',on\u change\u tab);

相关,但应该有锚定问题吗

如果您仍然没有解决您的问题(以及其他有类似问题的人):

我有一个类似的问题,并通过使用erikvold的包解决了它。一旦安装了它及其依赖项,main.js文件中的类似内容应该可以工作

var pan=require(“面板”).panel({
宽度:400,
身高:600,
内容URL:“http://stackoverflow.com"
//也许这里有更多的选择
});
var按钮=需要(“工具栏按钮”)。工具栏按钮({
id:“我的按钮”,
标签:“我的按钮”,
image:data.url(“someicon.png”),
panel:pan//将面板绑定到此工具栏按钮
});

我希望您能找到一些方法使其适应您的项目。

toolbarbutton.toolbarbutton({ id:“MyAddon”, 标签:“我的插件”, tooltiptext:“我的插件工具提示”, 图片:data.url(“logo.png”), onCommand:function(){

}))

} });

         var dictionary_panel = require("panel").Panel({
         width:630,
         height:600,
         contentURL: data.url("HtmlPage.html"),
         contentScriptWhen: 'ready',
         contentScriptFile: [data.url("style.css"),data.url("jquery-1.7.1.js"),
                  data.url("javascriptquezz.js"),data.url("create.js")]          
        dictionary_panel.show();