我有一个通过pageMod.PageMod调用显示的页面。在我传递的脚本和显示的html中,我使用self.port.on监听需要反映在所显示的页面中的底层数据的更改。
如果我使用cfx run运行我的插件,我有一个功能齐全的插件,它可以毫无问题地工作。
但是,如果我使用cfx xpi打包我的插件,然后转到我的“普通”firfox浏览器,并使用文件->打开文件安装插件,插件安装完成后,我在浏览器控制台中收到一条错误消息,提示TypeError: self.port is undefined。
如果我运行cfx run,浏览器版本是28.0,和我的“普通”浏览器一样。为什么它可以在cfx上运行,而不能在我的普通浏览器上运行?
下面是导致错误的代码,但我不认为它会有帮助(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();
});为了添加更多的上下文,下面是pagemode是如何实例化/调用的:
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"));
}发布于 2014-04-18 17:52:18
所以错误出在我的package.json文件上。
我替换了这一行:
"dependencies": ["menuitems", "addon-sdk"]通过以下方式:
"dependencies": ["menuitems"]问题就解决了。
https://stackoverflow.com/questions/23151360
复制相似问题