chrome.downloads.erase funktioniert nicht Beim Start über das Inhaltsskript

Ich versuche, eine Chrome-Erweiterung zu erstellen, die beim Aufrufen einer bestimmten Website angezeigt wird. Ich lösche den Download-Verlauf. Ich benutze dies von der Hintergrundseite:

chrome.downloads.erase({},
function(item)
{
    console.log("Erased item");
    console.log(item);
});

Das Problem ist, dass es nicht funktioniert, wenn ich eine Nachricht aus dem Kontaktskript sende, nachdem ich die gewünschte URL eingegeben habe.

Ich benutze send Message im Inhaltsskript

chrome.runtime.sendMessage

und erhalte die Nachricht auf der Hintergrundseite

chrome.runtime.onMessage.addListener

Dies ist die Ausgabe, die ich erhalte, obwohl sich einige Dateien im Download-Verlauf befinden:

Erased item
Array[0]

Wenn ich erase () über die Hintergrundseitenkonsole ausführe, funktioniert es einwandfrei

it scheint, dass es passiert, weil es keine Benutzerinteraktion gibt. Wenn ich einen leeren Knopf drücke und darauf klicke, funktioniert die Löschung. Wenn ich jedoch eine Zeitüberschreitung verwende, weiß ich nicht, warum das passiert?

Ich habe gesehen, dass es etwas mit dem setTimeout zu tun hat. Dies funktioniert auf der Hintergrundseite:

setTimeout(function(){
console.log('erasing downloads');
chrome.downloads.erase({});
}
, 0);

Aber das tut nicht:

setTimeout(function(){
console.log('erasing downloads');
chrome.downloads.erase({});
}
, 1000);

Antworten auf die Frage(1)

Ihre Antwort auf die Frage