Javascript Chrome扩展:我需要什么权限来避免执行内联事件处理程序错误
我正在使用,我想知道是否有人知道为什么会发生这种情况 我现在只把它作为我的return“data:image/gif;base64,R0lGODlhOw=” 这是我的密码Javascript Chrome扩展:我需要什么权限来避免执行内联事件处理程序错误,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我正在使用,我想知道是否有人知道为什么会发生这种情况 我现在只把它作为我的return“data:image/gif;base64,R0lGODlhOw=” 这是我的密码 var GetCanvas = document.getElementById("GifHere"); var contextOfCanvas = GetCanvas.getContext("2d"); var encoder = new GIFE
var GetCanvas = document.getElementById("GifHere");
var contextOfCanvas = GetCanvas.getContext("2d");
var encoder = new GIFEncoder();
encoder.setRepeat(0);
encoder.setDelay(1000);
GetCanvas.width = 1600;
GetCanvas.height = 800;
encoder.setSize(1600,800);
contextOfCanvas.fillStyle = "rgb(255,255,255)";
contextOfCanvas.fillRect(0,0,GetCanvas.width, GetCanvas.height);
encoder.start();
console.log(encoder.start());
var GifLength = $(".LayerImages").length + 1;
StartingLength = GifLength;
StartPosition = 1;
loadGifImages(encoder,GifLength);
var imageOf = GetCanvas.toDataURL("image/"+SelectedValue);
var FileType = SelectedValue;
var imageData = imageOf;
var RemoveLength = "data:image/png;base64,";
var stringLength = parseInt(imageData.length) - parseInt(RemoveLength.length);
var sizeInBytes = 4 * Math.ceil((stringLength / 3))*0.5624896334383812;
var FileSize = sizeInBytes / 1024;
这是我的loadGifImages函数
function loadGifImages(encoder,length){
var GetCanvas = document.getElementById("GifHere");
var contextOfCanvas = GetCanvas.getContext("2d");
var Canvas = document.getElementById("Can"+StartPosition);
console.log(Canvas);
var CanvasContext = Canvas.getContext("2d");
var image0 = new Image();
var imageData = CanvasContext.getImageData(0,0,1600,800);
encoder.addFrame(imageData,true);
console.log(imageData);
StartPosition++;
length--;
if(length == 1 && StartPosition == StartingLength){
isGifDone = true;
encoder.finish();
var gif = encoder.stream().getData();
var url = 'data:image/gif;base64,'+encode64(gif);
console.log(url);
/* document.getElementById("ImageSaved").src = 'data:image/gif;base64,'+encode64(encoder.stream().getData());
*/ }else{
loadGifImages(encoder,length);
}
一切似乎都正常,但该库中的某些东西似乎给了chrome扩展一个错误。我尝试将content\u security\u策略添加到manifest.json中,但它似乎不起作用。这是我的manifest.json文件
{
"name": "Better Photo Editor",
"version": "0.0.0.1",
"content_security_policy":"script-src 'self' https://apis.google.com; object-src 'self'",
"description": "Better Photo Editor",
"content_scripts": [
{
"matches": ["<all_urls>"],
"css": ["CSS/style.css"]
}
],
"browser_action": {
"default_icon": "Images/Drawing.png",
"default_title": "",
"default_popup": "Home.html"
},
"permissions": ["<all_urls>","http://*/","https://*/","activeTab","unlimitedStorage"],
"manifest_version": 2
}
{
“名称”:“更好的照片编辑器”,
“版本”:“0.0.0.1”,
“内容安全策略”:“脚本src'self”https://apis.google.com;对象src“self”,
“说明”:“更好的照片编辑器”,
“内容脚本”:[
{
“匹配项”:[“”],
“css”:[“css/style.css”]
}
],
“浏览器操作”:{
“默认图标”:“Images/Drawing.png”,
“默认标题”:“,
“默认弹出窗口”:“Home.html”
},
“权限”:[“”、“http://*/”、“https://*/”、“activeTab”、“unlimitedStorage”],
“清单版本”:2
}
编辑:我认为这与GIFEncoder.js中的writebyte有关,但我不确定。虽然我还在努力,但我什么都查不到。如果有人能帮忙,我将不胜感激!!
我在任何html页面中都没有任何内联javascript。我知道这可能会被问到,现在我清楚地表明这不是问题。请参阅。这个gif库使用内联脚本。我不认为是这样,我认为它与我正在使用的库有关。让我看看我有什么错误,因为我试图写入图像数据,但我认为我没有正确设置。库演示没有显示这样的示例,因此我必须检查并查看当前形式的库需要您放松CSP。理想情况下,您应该重新配置甚至重写库,使其不在html中使用内联js处理程序。我修复了一些代码,但它返回的唯一url是“data:image/gif;base64,R0lGODlhOw==”,而不是图像的其余代码。我将用新代码更新问题注意,我假设错误消息中的
Image.html
属于库。