Google chrome extension 如何获取已下载文件的下载ID?

Google chrome extension 如何获取已下载文件的下载ID?,google-chrome-extension,Google Chrome Extension,我希望能够使用扩展名下载文件,并记住下载ID以备将来使用。我最初尝试这样做是通过使用回调函数并将downloadId指定为如下变量: chrome.downloads.download({ url: downloadURL }, function getDownloadId(downloadId) { var thisDownloadId = downloadId; } ); 但这导致了我的Chromebook崩溃,所以我认为这不会起作用 我试图使用来自

我希望能够使用扩展名下载文件,并记住下载ID以备将来使用。我最初尝试这样做是通过使用回调函数并将downloadId指定为如下变量:

chrome.downloads.download({
    url: downloadURL
},
    function getDownloadId(downloadId) {
        var thisDownloadId = downloadId;
    }
);
但这导致了我的Chromebook崩溃,所以我认为这不会起作用

我试图使用来自的解决方案。然而,当我尝试使用上述解决方案时,结果是出现以下错误:

TypeError: Cannot read property 'current' of undefined.
这是我下载文件(popup.js)的脚本片段

以及等待文件下载的代码段,当前仅显示用于测试的downloadId(popup.js)


downloadId变量由于位于回调函数中而被销毁。我需要使用chrome.storage api将其发布出来

下载功能(已修改)

downloadId警报功能:

chrome.storage.local.get(['downloadId'], function(result) {
    var downloadId = result.downloadId;
    alert(downloadId);
});

当前,您正在回调函数中创建变量,因此当函数完成时,它会立即被销毁。根据您以后使用id的具体方式,您可以将其保存在chrome.storage.local或localStorage(作为字符串)中,并查看示例。谢谢您,wOxxOm!这个评论对我帮助很大。我从未想过使用chrome.storage API。
chrome.downloads.onChanged.addListener(function (
    if(detail.state.current == "complete") { // This is where the error occurs
        var downloadId = detail.id;

        alert("downloadId: " + downloadId);
    }
});
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});
        })
    }
);
chrome.storage.local.get(['downloadId'], function(result) {
    var downloadId = result.downloadId;
    alert(downloadId);
});