Firefox WebExtension API"下载"无法正常工作

Chr*_*ris 1 javascript firefox json firefox-addon-webextensions

我想创建自己的扩展,自动从某些网站下载文件并将其保存在默认下载文件夹中.我从"你的第一个扩展"示例开始,在页面周围创建一个红色边框.这有效!

然后我尝试使用这个解释下载功能的示例,从谷歌服务器下载图像,它将无法正常工作.我还在manifest.json中添加了"downloads"API的权限,但它没有帮助.代码中断,之后的所有内容browser.downloads.download都不会执行.

我也试过console.log(browser);console.log(browser.downloads);.的browser对象被定义,但browser.downloads未定义.

这是代码:

manifest.json的:

{

"manifest_version": 2,
"name": "Permission Test",
"version": "1.0",

"description": "Downloads an image",

"applications": {
    "gecko": {
        "id": "permission@example.com"
    }
},

"icons": {
    "48": "icons/border-48.png"
},

"permissions": [
    "activeTab",
    "downloads"
],

"content_scripts": [
    {
    "matches": ["*://www.google.de/logos/doodles/2018/*"],
    "js": ["script.js"]
    }
]

}
Run Code Online (Sandbox Code Playgroud)

的script.js:

document.body.style.border = "10px solid red";
console.log('Extension started.');


function onStartedDownload(id) {
    console.log('Started downloading: ${id}');
}

function onFailed(error) {
    console.log('Download failed: ${error}');
}

var downloadUrl = "https://www.google.de/logos/doodles/2018/virginia-woolfs-136th-birthday-5857012284915712.6-l.png";

console.log(browser.downloads);

var downloading = browser.downloads.download({
    url: downloadUrl
    //filename: 'my-image-again.gif',
    conflictAction: 'uniquify'
});

downloading.then(onStartedDownload, onFailed);

console.log('Extension execution finished.');
Run Code Online (Sandbox Code Playgroud)

我使用的是Firefox 58和Windows 7.

小智 6

downloadsAPI是不是在内容脚本中使用,你可能想代码移动到背景页.我首先阅读本页以熟悉WebExtensions的整体结构:https: //developer.mozilla.org/en-US/Add-ons/WebExtensions/Anatomy_of_a_WebExtension