2015-06-07 4 views
5

У меня есть расширение удаляющего загрузки, сделанные в Google Chrome, используя эту строку кода в моем фоне страницы:Использование chrome.browsingData.remove() в режиме инкогнито

chrome.browsingData.remove({ "since": 0 }, { "downloads": true }); 

Когда загрузка в обычном окне он работает, однако, когда загрузка была сделана в окне инкогнито Chrome, она не удаляется. Мое расширение активируется в режиме инкогнито и фон страницы в состоянии обнаружить, когда загрузить на странице инкогнито было завершено с помощью:

chrome.downloads.onChanged.addListener(function(download) { 
    if (download.state && download.state.current == "complete") { 
     // The code here is fired even if the download has been completed in incognito mode 
    } 
} 

Есть ли способ, чтобы удалить данные о просмотренных в режиме инкогнито от фона страницы ?

+1

Это может быть связано с использованием ['spanning' или' split' incognito mode] (https://developer.chrome.com/extensions/manifest/incognito) для вашего расширения. Я бы предположил, что если бы вы использовали режим «spanning», загрузка, полученная в режиме инкогнито, запускала бы событие, но вызов, чтобы очистить загрузку, срабатывает в основном хромовом профиле - в конце концов, это отдельные API. Попробуйте режим «split», если вы еще этого не сделали! –

+0

Также попробуйте использовать ['chrome.downloads.erase'] (https://developer.chrome.com/extensions/downloads#method-erase). Только наличие зависимости от одного API означает меньшее изменение, если что-то устаревает! –

+0

@ JimO'Brien Вы можете преобразовать свой первый комментарий в ответ, это идеальное решение и объяснение этой проблемы! –

ответ

4

Проблема, с которой вы сталкиваетесь, заключается в том, что ваше расширение работает в spanning incognito mode. Это означает, что расширение выполняется под одним процессом, прикрепленным к профилю, который установил расширение (то есть не окно инкогнито). В этой ситуации API chrome.downloads запускает событие onChanged для загрузки как в инкогнито, так и в нормальных профилях, но API chrome.browsingData применим только к нормальному профилю.

Вместо этого вы хотите использовать режим инкогнито split. Это означает, что расширение выполняется отдельно в каждом профиле, который его использует (то есть окно инкогнито получает свою собственную текущую копию расширения). Это означает, что при вызове API chrome.browsingData он применяется к окну, в котором было запущено событие.

Смежные вопросы