self.port与`cfx run`一起使用,但在普通浏览器中导致`cfx xpi`错误

时间:2014-04-18 09:33:39

标签: javascript firefox firefox-addon firefox-addon-sdk

我有一个显示pageMod.PageMod电话的页面。在我传递的html脚本中,我使用self.port.on来监听需要在显示的页面中反映的基础数据的更改。

如果我使用cfx run运行我的插件,我有一个功能齐全的添加,可以正常工作。

但是,如果我使用cfx xpi打包我的插件,那么我会转到正常的' firfox浏览器并使用File安装插件 - >打开文件,插件安装,我在浏览器控制台中收到TypeError: self.port is undefined

的错误消息

如果我运行cfx run,则浏览器版本为28.0,与我的'正常'相同浏览器。为什么它适用于cfx run,而不是我的普通浏览器?

以下是导致错误的以下代码,但我认为它不会有帮助(options.js):

/*************************************************
* MESSAGE RECEIVED WHEN A
* CHANGE IS MADE TO UNDERLYING DATA
* USED BY THIS PAGE
**************************************************/
self.port.on("username", function(data){
        console.log("received username data");
        if(data=="false"){
                lg = false;
        }else{
                lg = true;
                username = data;
        }
        //update page
        k();
});

要添加更多上下文,以下是页面模式的实例化/调用方式:

function init(cb){
        var menuitem = require("menuitems").Menuitem({
          id: "clickme",
          menuid: "menu_ToolsPopup",
          label: "Tetherly Options",
          onCommand: function() {
                menuitem_onclicked(cb);
          },
          insertbefore: "menu_pageInfo"
        });
}

function menuitem_onclicked(cb){
        console.log("clicked");
        //open a new tab with options page...
        //attach page mod script to it...

        pageMod.PageMod({
                include: self.data.url("html/options.html"),
                contentScriptFile: [
                        self.data.url("js/jquery-1.11.0.js"),
                        self.data.url("js/options.js")
                        ],
                onAttach: function(worker) {
                        pagemode_onattach(worker,cb);
                }

        });
        tabs.open(self.data.url("html/options.html"));
}

1 个答案:

答案 0 :(得分:1)

所以错误发生在我的package.json文件中。

我替换了这一行:

"dependencies": ["menuitems", "addon-sdk"]

使用:

"dependencies": ["menuitems"]

问题解决了。