google-chrome-extension - 如何获取下载文件的 downloadId?
问题描述
我希望能够使用扩展来下载文件并记住 downloadId 以供以后使用。我最初的尝试是使用回调函数并将 downloadId 分配为如下变量:
chrome.downloads.download({
url: downloadURL
},
function getDownloadId(downloadId) {
var thisDownloadId = downloadId;
}
);
但这导致我的 Chromebook 崩溃,所以我认为这不会奏效。
我试图使用这个问题的解决方案。但是,当我尝试使用所述解决方案时,最终出现此错误:
TypeError: Cannot read property 'current' of undefined.
这是我下载文件的脚本片段(popup.js)
chrome.downloads.download({
url: downloadURL
});
以及它等待文件下载的片段,目前仅显示用于测试的downloadId(popup.js)
chrome.downloads.onChanged.addListener(function (
if(detail.state.current == "complete") { // This is where the error occurs
var downloadId = detail.id;
alert("downloadId: " + downloadId);
}
});
解决方案
downloadId 变量由于在回调函数中而被破坏。我需要使用 chrome.storage api 将其取出。
下载功能(修改)
chrome.downloads.download({
url: downloadURL
},
function(downloadId) {
chrome.storage.local.set({'downloadId': downloadId}, function() {
console.log("Store Download ID.");
chrome.storage.local.set({'downloadId': downloadId});
})
}
);
downloadId 告警功能:
chrome.storage.local.get(['downloadId'], function(result) {
var downloadId = result.downloadId;
alert(downloadId);
});
推荐阅读
- python-3.x - 比较 Python 字典列表中键的元素,并根据一个键的最大值和另一个键的前缀返回一个键
- javascript - 单击时添加脚本
- c++ - 如何为包含头文件的目标编写makefile?
- elasticsearch - Elastic Beats - 更改 Beats 文档中默认字段的字段类型?
- c++ - 光线追踪:Ellipsoid Hit 函数
- c# - 在 asp net core 3.0 中返回文件正在泄漏内存
- android - 不能从静态上下文引用非静态方法 startActivity(intent)
- java - Spring JPA 无法将参数传递到引号中
- python - 垃圾收集器会在 .read() 之后删除引用吗?
- npm - 如何将 react 和 react-redux 安装到我的项目中?