我有一个显示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"));
}
答案 0 :(得分:1)
所以错误发生在我的package.json文件中。
我替换了这一行:
"dependencies": ["menuitems", "addon-sdk"]
使用:
"dependencies": ["menuitems"]
问题解决了。