chrome.downloads.erase不起作用从内容脚本启动时

时间:2014-10-01 13:28:24

标签: google-chrome-extension

我正在尝试创建进入某个网站时的Chrome扩展程序。我正在删除下载历史记录。我在后台页面中使用它:

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

问题是,在输入我想要的网址后,当我从联系人脚本发送消息时,它无法正常工作。

我在内容脚本中使用send Message

chrome.runtime.sendMessage

并在后台页面中接收消息

chrome.runtime.onMessage.addListener

虽然下载历史记录中有一些文件,但这是我得到的输出:

Erased item
Array[0]

如果我从后台页面控制台中运行erase(),它可以正常工作

似乎发生这种情况是因为没有用户交互。 如果我按下一个清除按钮并单击它,删除确实有效 但如果我使用超时则不会 任何想法为什么会发生?

我已经看到它与setTimeout有关 这适用于后台页面:

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

但这不是:

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

1 个答案:

答案 0 :(得分:1)

我想我终于找到了问题的原因。 下载后,我已使用taskkill / f关闭Chrome,如下所示:

taskKill / im" chrome.exe" / F

重新打开Chrome后,我在下载页面中找到了这一行:

thefilenamedownloaded.exe浏览器在下载完成之前崩溃了。

如果我使用了taskKill / im" chrome.exe" (没有/ f)比没有发生的问题。 这个bug实际上可能比这更复杂,因为当我进行用户交互时它也有效。但是现在它解决了我的问题。希望这有助于其他任何人