Firefox addon FirefoxWebExtension赢得';t载荷

Firefox addon FirefoxWebExtension赢得';t载荷,firefox-addon,firefox-addon-webextensions,Firefox Addon,Firefox Addon Webextensions,因此,我尝试使用Firefox中的about:debug页面加载我的加载项。但是,它根本无法加载。是否有某个地方会记录错误,我可以找到它 以下是我的manifest.JSON代码: 我希望这能帮助其他沮丧的附加组件创建者 提前感谢缺少加载的问题是manifest.json文件中存在多个语法错误。在manifest.json文件中,文件末尾的行: "default_title": "Call StickMan", }, } 不应具有额外的,(这表示您将在中拥有另一个属性)

因此,我尝试使用Firefox中的
about:debug
页面加载我的加载项。但是,它根本无法加载。是否有某个地方会记录错误,我可以找到它

以下是我的manifest.JSON代码:

我希望这能帮助其他沮丧的附加组件创建者


提前感谢

缺少加载的问题是manifest.json文件中存在多个语法错误。在manifest.json文件中,文件末尾的行:

        "default_title": "Call StickMan",
    },
}
不应具有额外的
(这表示您将在中拥有另一个属性):

如果您使用的是,那么您有这些错误的事实是显而易见的:

但是,即使您运行的是Firefox 47.0.1,并且只使用了(键盘快捷键:Ctrl-Shift-J),您也会看到错误:

A promise chain failed to handle a rejection. Did you forget to '.catch', or did you forget to 'return'?
See https://developer.mozilla.org/Mozilla/JavaScript_code_modules/Promise.jsm/Promise

Date: Sun Jul 17 2016 11:11:22 GMT-0700 (Pacific Standard Time)
Full Message: SyntaxError: JSON.parse: expected double-quoted property name at line 33 column 2 of the JSON data
Full Stack: readJSON/</<@resource://gre/modules/Extension.jsm:628:19
NetUtil_asyncFetch/<.onStopRequest@resource://gre/modules/NetUtil.jsm:128:17
Firefox Developer Edition浏览器控制台中产生的错误更容易分析问题的原因:

SyntaxError: JSON.parse: expected double-quoted property name at line 33 column 2 of the JSON data
Stack trace:
readJSON/</<@resource://gre/modules/Extension.jsm:859:19
NetUtil_asyncFetch/<.onStopRequest@resource://gre/modules/NetUtil.jsm:128:17
这里有多个问题。请看地图。缺少必需的
tabId
参数。此外,您似乎混淆了将参数作为包含传递给方法的属性的参数传递与将其他本机类型的参数列表传递给方法之间的区别。注意:存在各种本机或非本机类型的参数列表以及包含传递给方法的属性的对象的情况并不少见

假设定义了
browserAction

您可以在多个位置使用
browser.browserAction
方法<代码>浏览操作本身未定义。或者,您可以将
browserAction
定义为:
var browserAction=browser.browserAction

在实际上是异步的情况下,将其当作同步使用:
调用
browserAction.getTitle()
获取标题的值。标题的值仅在回调函数中可用,您不提供回调函数。这意味着缺乏对异步编程的理解。您可能想回顾一些关于该主题的问题,如:

提供给的参数类型错误:
这似乎再次混淆了其他本机类型的参数与作为对象(可能是对象文字)的参数之间的区别,该对象包含传递给方法的信息属性。诚然,WebExtensions在将信息传递给方法时,几乎可以任意混合使用实际参数和属性作为参数的对象。似乎需要注意在特定方法中使用哪种方法

没有各种功能,请为选项卡指定ID:
在对各种方法的多次调用中,您不会在应该传递的时候传递
tabId
。每次鼠标单击,您都要将您的
StickMan
canvas
添加到单个选项卡。您应该为调用多个方法传递选项卡ID

分配给stickman.js中的
document.body.innerHTML

一般来说,如果可能,应避免在任何时候分配给。在大多数情况下,这是个坏主意。在大多数情况下,它可能会导致重新评估整个DOM。为了满足您的需求,在元素的HTML末尾向DOM添加文本格式的HTML,有一个特定的函数更好/更快:。您的代码:

document.body.innerHTML+= '<canvas id="StickManCanvas0000000" width="100" height="200"></canvas>';
StickManUpdate.js:

browser.browserAction.onClicked.addListener(函数(选项卡){
browser.browserAction.getTitle({tabId:tab.id},函数(标题){
如果(标题==='Call StickMan'){
chrome.tabs.executeScript(tab.id{
文件:“/content\u scripts/stickman.js”
});
browser.browserAction.setTitle({title:'Recall StickMan',tabId:tab.id});
}else if(title==“再次呼叫StickMan”){
browser.tabs.sendMessage(tab.id,“Draw”);
browser.browserAction.setTitle({title:'Recall StickMan',tabId:tab.id});
}否则{
browser.tabs.sendMessage(tab.id,“End”);
browser.browserAction.setTitle({title:'Call StickMan',tabId:tab.id});
}
});
});
stickman.js:

var running=true;
//document.body.insertAdjacentHTML(“beforeed”和“”);
var canvas=document.createElement(“canvas”);
canvas.setAttribute(“宽度”,100);
canvas.setAttribute(“高度”,200);
//var canvas=document.getElementById('StickManCanvas0000000');
canvas.style.position='fixed';
canvas.style.left='0px';
canvas.style.top=(window.innerHeight-200)+'px';
canvas.style.backgroundColor='rgba(0,0,0,0)';
canvas.style.border='1px红色虚线';
var ctx=canvas.getContext('2d');
var pos={
x:0,,
人头X:50,
赫迪:20,
bodyX:50,
博迪:150,
左臂X:25,
左翼军队:90,
rightArmX:75,
右翼军队:90,
leftLegX:30,
左撇子:200,
rightLegX:70,
对:200,,
};
var setPos=功能(x,y){
canvas.style.left=x+'px';
canvas.style.top=(window.innerHeight-y-200)+'px';
};
var drawMan=函数(时间){
设置位置(位置x,0);
ctx.strokeStyle='#000000';
ctx.lineWidth=5;
ctx.beginPath();
ctx.arc(位置headX,位置headY,20,0,数学PI*2,假);
ctx.moveTo(位置headX,位置headY);
ctx.lineTo(位置bodyX,位置bodyY);
ctx.lineTo(位置rightLegX,位置rightLegY);
ctx.移动到(位置bodyX,位置bodyY);
ctx.lineTo(位置leftLegX,位置leftLegY);
ctx.移动到((位置bodyX+位置headX)/2,((位置bodyY+位置headY)/5)*2;
ctx.lineTo(右臂位置、右陆军位置);
ctx.移动到((位置bodyX+位置headX)/2,((位置bodyY+位置headY)/5)*2;
ctx。
Full Message: SyntaxError: JSON.parse: expected double-quoted property name at line 33 column 2 of the JSON data
SyntaxError: JSON.parse: expected double-quoted property name at line 33 column 2 of the JSON data
Stack trace:
readJSON/</<@resource://gre/modules/Extension.jsm:859:19
NetUtil_asyncFetch/<.onStopRequest@resource://gre/modules/NetUtil.jsm:128:17
browser.tabs.sendMessage(
    message: "End";
);
document.body.innerHTML+= '<canvas id="StickManCanvas0000000" width="100" height="200"></canvas>';
document.body.insertAdjacentHTML("beforeend", '<canvas id="StickManCanvas0000000" width="100" height="200"></canvas>');