我正在尝试创建进入某个网站时的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);
答案 0 :(得分:1)
我想我终于找到了问题的原因。 下载后,我已使用taskkill / f关闭Chrome,如下所示:
taskKill / im" chrome.exe" / F
重新打开Chrome后,我在下载页面中找到了这一行:
thefilenamedownloaded.exe浏览器在下载完成之前崩溃了。
如果我使用了taskKill / im" chrome.exe" (没有/ f)比没有发生的问题。 这个bug实际上可能比这更复杂,因为当我进行用户交互时它也有效。但是现在它解决了我的问题。希望这有助于其他任何人