Firefox addon 来自注入脚本的Firefox加载项显示弹出窗口

Firefox addon 来自注入脚本的Firefox加载项显示弹出窗口,firefox-addon,firefox-addon-sdk,Firefox Addon,Firefox Addon Sdk,我正在开发一个Firefox扩展。我已经使用内容脚本将一些HTML按钮代码注入到网页中。现在我想在点击按钮时打开一个弹出窗口。我有一个popup.html文件。我想以弹出窗口的形式打开此文件。但是,当我尝试这样做时,它会显示错误: 错误:访问'resource://test/data/popup/popup.html"来自剧本, 否认 my package.json: { "title": "First", "name": "test", "version": "0.0.1",

我正在开发一个Firefox扩展。我已经使用内容脚本将一些HTML按钮代码注入到网页中。现在我想在点击按钮时打开一个弹出窗口。我有一个popup.html文件。我想以弹出窗口的形式打开此文件。但是,当我尝试这样做时,它会显示错误:

错误:访问'resource://test/data/popup/popup.html"来自剧本, 否认

my package.json:

{
  "title": "First",
  "name": "test",
  "version": "0.0.1",
  "description": "Just for testing",
  "main": "index.js",
  "author": "Bharath",
  "engines": {
      "firefox": ">=38.0a1",
      "fennec": ">=38.0a1"
  },
  "license": "MIT"
}
注入脚本:

var popupURL = '';
var timerId = setInterval(function () {
    if(!!$('.aic').length){
        window.clearInterval(timerId);

        $('.aic').append('<div id="sendButtonID" class="sendButtonCls" role="button" tabindex="0" gh="cm" style="-webkit-user-select: none;">Send Now</div></div>');
        $('#sendButtonID').click(function(){
            console.log('Received url: ', popupURL);
            window.open(popupURL, "Popup window", 'width=400 height=500');
        });
    }
}, 1000);

document.addEventListener('popUrlEvent', function (e) {
    popupURL=e.detail;
    console.log('Received url: ', popupURL);
});
index.js:

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

var urls = {
    'jQuery': data.url("js/lib/jquery-1.10.2.min.js"),
    'injectedJs' : data.url("js/main.js"),
    'buttonCss' : data.url("css/button.css"),
    'popupUrl' : data.url("popup/popup.html")
};

pageMod.PageMod({
    include: "https://mail.google.com/*",
    contentScriptFile: data.url("js/content.js"),
    contentScriptWhen: 'end',
    onAttach: function(worker) {
        worker.port.emit("init", urls);
    } 
});

因为您使用的是附加sdk,所以请在index.js脚本中使用“sdk/panel”。 此处的文档:


是否有任何方法可以打开窗口而不是面板?不确定您的意思,请访问:[link](),其中的示例可能适合您的需要
var pageMod = require("sdk/page-mod");
var data = require("sdk/self").data;

var urls = {
    'jQuery': data.url("js/lib/jquery-1.10.2.min.js"),
    'injectedJs' : data.url("js/main.js"),
    'buttonCss' : data.url("css/button.css"),
    'popupUrl' : data.url("popup/popup.html")
};

pageMod.PageMod({
    include: "https://mail.google.com/*",
    contentScriptFile: data.url("js/content.js"),
    contentScriptWhen: 'end',
    onAttach: function(worker) {
        worker.port.emit("init", urls);
    } 
});
pageMod.PageMod({
    include: "https://mail.google.com/*",
    contentScriptFile: data.url("js/content.js"),
    contentScriptWhen: 'end',
    onAttach: function(worker) {
        worker.port.emit("init", urls);
        worker.port.on("showpopup", function() {
            require("sdk/panel").Panel({
                contentURL: data.url("./popup/popup.html"),
                contentScriptFile: ["./lib/jquery.js",
                    data.url("js/main.js")
                    ]         
            });
        });
    } 
});