在隐身模式下使用 chrome.browsingData.remove()

Using chrome.browsingData.remove() in incognito mode

我有一个扩展删除 Google Chrome 中的下载,在我的后台页面中使用这行代码:

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

在正常下载时 window 它可以工作,但是在隐身 Chrome window 中下载时它不会被删除。我的扩展程序在隐身模式下激活,后台页面能够检测隐身页面中的下载何时完成,使用:

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
    }
}

有没有办法从后台页面中删除隐身浏览数据windows?

您遇到的问题是您的分机号是 spanning incognito mode 中的 运行。这意味着扩展在附加到安装扩展的配置文件的单个进程下运行(即不是隐身 window)。在这种情况下,chrome.downloads API 触发 onChanged 事件以在隐身和普通配置文件中下载,但 chrome.browsingData API 仅适用于普通配置文件.

相反,您想使用 split 隐身模式。这意味着扩展在使用它的每个配置文件中单独运行(即隐身 window 获得自己的 运行 扩展副本)。这意味着当您调用 chrome.browsingData API 时,它适用于触发事件的 window。