【问题标题】:Using chrome.browsingData.remove() in incognito mode在隐身模式下使用 chrome.browsingData.remove()
【发布时间】:2015-08-21 21:33:27
【问题描述】:

我有一个扩展程序使用我的后台页面中的这行代码删除在谷歌浏览器中进行的下载:

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

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

【问题讨论】:

  • 这可能与您是否使用spanning or split incognito mode 进行扩展有关。我想如果您使用spanning 模式,在隐身模式下收到的下载会触发该事件,但清除下载的调用会在主 chrome 配置文件中触发 - 毕竟它们是单独的 API。如果您还没有尝试过split 模式!
  • 也可以尝试使用chrome.downloads.erase。仅依赖于单个 API 意味着当某些东西被弃用时更改更少!
  • @JimO'Brien 您可以在答案中转换您的第一条评论,它是这个问题的完美解决方案和解释!
  • 认为它已经完成 - 将不胜感激赞成/接受!

标签: javascript google-chrome google-chrome-extension


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2019-04-15
    • 2017-12-05
    • 2021-09-05
    • 2021-03-29
    • 1970-01-01
    • 2021-08-07
    • 2012-08-05
    • 2021-03-18
    • 1970-01-01
    相关资源
    最近更新 更多