2014-10-01 48 views
0

我正在嘗試創建一個Chrome擴展程序,以便在進入某個網站時使用。我正在刪除下載歷史記錄。我用這從後臺頁面:chrome.downloads.erase不起作用從內容腳本啓動

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

的問題是,當我進入我想要的網址發送後從接觸劇本的消息它無法正常工作。

我使用的內容腳本

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

要澄清,你想要覈實整個下載歷史? – Xan 2014-10-01 13:52:05

+0

是的。清除整個下載歷史 – 2014-10-01 20:58:25

+1

考慮到您上次的編輯:可能是有意的,但沒有記錄。嘗試在後臺控制檯中運行代碼,但在'setTimeout(func,0)'中包裝。 – Xan 2014-10-02 13:01:46

回答

1

我想我終於找到了問題的原因。 下載我已經關閉了瀏覽器與之後的taskkill/F,是這樣的:

TASKKILL/IM 「的chrome.exe」/ F

打開Chrome瀏覽器後,我在這條線在下載頁面有:

thefilenamedownloaded.exe在下載完成之前,瀏覽器崩潰。

如果我使用taskKill/im「chrome.exe」(沒有/ f)比問題沒有發生。 這個錯誤實際上可能比這更復雜,因爲當我有用戶交互時它也起作用。但現在它解決了我的問題。希望這可以幫助其他人