我正在使用 Firefox 插件 SDK 创建一个 Firefox 插件。我想将页面中的所有图像保存到本地磁盘。我尝试将以下脚本附加到活动选项卡,然后将结果数组发送回 main.js,我将在其中将其保存到磁盘。以下代码给了我一个SecurityError: The operation is insecure错误,可能是因为我从跨源加载图像所以toDataURL被阻止。我知道我可以将图像下载到磁盘上的某个位置,但我不想重新下载所有图像,因为我的浏览器已经这样做了。是否有另一种方法可以将已加载的图像保存到本地磁盘?
function getImage(img) {
// Create an empty canvas element
var canvas = document.createElement("canvas");
canvas.width = img.width;
canvas.height = img.height;
// Copy the image contents to the canvas
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0);
// Get the data-URL formatted image
//var dataURL = canvas.toDataURL("image/png").replace("image/png", "image/octet-stream");
var dataURL = canvas.toDataURL("image/png");
return dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
}
function getImages(outputDir){
var coded_images = new Array();
var images = document.getElementsByTagName('img');
for (var i=0; i<images.length; i++){
coded_images[i] = getImage(images[i]);
}
//send coded_images back to main.js
}
谢谢您的帮助!
更新: 我得到的上述代码的例外是:
SecurityError: The operation is insecure.
Traceback (most recent call last):
...
File "resource://myaddon/data/addon.js", line 18, in getImage
var dataURL = canvas.toDataURL("image/png");