Firefox firexfox扩展在图标单击时切换开/关

Firefox firexfox扩展在图标单击时切换开/关,firefox,firefox-addon,firefox-addon-sdk,Firefox,Firefox Addon,Firefox Addon Sdk,我开发了我的第一个firefox扩展。我的用例(已成功实现为chrome扩展): 注入特定页面的CSS 默认加载:contentscript-on.js 单击图标(icon-On.png/icon-off.png),从contentscript-On.js切换到contentscript-off.js并向后切换 contentscript-on.js已经可以在页面加载时工作。我已经搜索了很多,为我的用例寻找帮助或示例。有什么想法吗 多谢各位 main.js var pageMod = req

我开发了我的第一个firefox扩展。我的用例(已成功实现为chrome扩展):

  • 注入特定页面的CSS
  • 默认加载:contentscript-on.js
  • 单击图标(icon-On.png/icon-off.png),从contentscript-On.js切换到contentscript-off.js并向后切换
contentscript-on.js已经可以在页面加载时工作。我已经搜索了很多,为我的用例寻找帮助或示例。有什么想法吗

多谢各位

main.js

var pageMod = require("sdk/page-mod");
var self = require("sdk/self");

pageMod.PageMod({
  include: "https://app.example.de/dashboard",
  contentScriptFile: [self.data.url("jquery-1.11.0.min.js"), self.data.url("contentscript-on.js")]
});
在我的chrome扩展中,我使用background.js在脚本之间切换开/关

//toggle = true, because the contenscript-on.js is already loaded on initial loading of the page
var toggle = true;
chrome.browserAction.onClicked.addListener(function(tab) {
toggle = !toggle;
   if(toggle){
//change the icon after pushed the icon to On
    chrome.browserAction.setIcon({path: "icon-on.png", tabId:tab.id});
    //start the content script to hide dashboard
    chrome.tabs.executeScript({file:"contentscript-on.js"});
   }
   else{
//change the icon after pushed the icon to Off
    chrome.browserAction.setIcon({path: "icon-off.png", tabId:tab.id});
    //start the content script to hide dashboard
    chrome.tabs.executeScript({file:"contentscript-off.js"});
    }
});
firefox扩展中有类似的方法吗?

有一个可选的
onAttach
属性,它将a传递给函数。可以
destroy
ed此工作进程以从页面中删除脚本

var contentWorker; // Global (or greater scope) variable
// …
  onAttach: function(worker) {
    contentWorker = worker;
  }
然后,在您的click listener中

var tab = contentWorker.tab;
contentWorker.destroy();
contentWorker = tab.attach( {
  contentScriptFile: [self.data.url("jquery-1.11.0.min.js"), self.data.url("contentscript-off.js")]
});
坦率地说,只需在内容脚本代码中附加它们并以某种方式切换它们可能会更容易

作为旁注,有一个新的,你可以使用,将有一个激活/停用的外观,听起来像是对你的场景很好