说明
使用 chrome.browsingData API 从用户的本地个人资料中移除浏览数据。
权限
browsingData您必须在扩展程序清单中声明 "browsingData" 权限,才能使用此 API。
{
"name": "My extension",
...
"permissions": [
"browsingData",
],
...
}
概念和用法
此 API 最简单的应用场景是基于时间的机制,用于清除用户的浏览数据。
您的代码应提供一个时间戳,用于指明应移除用户在此历史日期之后的浏览数据。此时间戳的格式为自 Unix 纪元以来的毫秒数(可以使用 getTime() 方法从 JavaScript Date 对象中检索)。
例如,如需清除用户上周的所有浏览数据,您可以编写如下代码:
var callback = function () {
// Do something clever here once data has been removed.
};
var millisecondsPerWeek = 1000 * 60 * 60 * 24 * 7;
var oneWeekAgo = (new Date()).getTime() - millisecondsPerWeek;
browser.browsingData.remove({
"since": oneWeekAgo
}, {
"appcache": true,
"cache": true,
"cacheStorage": true,
"cookies": true,
"downloads": true,
"fileSystems": true,
"formData": true,
"history": true,
"indexedDB": true,
"localStorage": true,
"passwords": true,
"serviceWorkers": true,
"webSQL": true
}, callback);
browser.browsingData.remove() 方法可让您通过一次调用移除各种类型的浏览数据,并且比调用多个更具体的方法要快得多。但是,如果您只想清除一种特定类型的浏览数据(例如 Cookie),则更精细的方法可以提供一种可读的替代方法,而不是填充 JSON 的调用。
var callback = function () {
// Do something clever here once data has been removed.
};
var millisecondsPerWeek = 1000 * 60 * 60 * 24 * 7;
var oneWeekAgo = (new Date()).getTime() - millisecondsPerWeek;
browser.browsingData.removeCookies({
"since": oneWeekAgo
}, callback);
如果用户正在同步其数据,browser.browsingData.remove() 可能会在清除 Cookie 后自动为同步账号重新构建 Cookie。这是为了确保同步功能可以继续运行,以便最终删除服务器上的数据。不过,更具体的 browser.browsingData.removeCookies() 可用于清除同步账号的 Cookie,在这种情况下,同步将会暂停。
特定源站
如需移除特定来源的数据或从删除操作中排除一组来源,您可以使用 RemovalOptions.origins 和 RemovalOptions.excludeOrigins 参数。它们只能应用于 Cookie、缓存和存储空间(CacheStorage、FileSystems、IndexedDB、LocalStorage、ServiceWorkers 和 WebSQL)。
browser.browsingData.remove({
"origins": ["https://www.example.com"]
}, {
"cacheStorage": true,
"cookies": true,
"fileSystems": true,
"indexedDB": true,
"localStorage": true,
"serviceWorkers": true,
"webSQL": true
}, callback);
来源类型
向 API 选项对象添加 originTypes 属性后,您便可以指定应影响哪些类型的来源。来源分为三类:
unprotectedWeb涵盖用户访问网站时未采取任何特殊操作的一般情况。如果您未指定originTypes,则 API 默认会从不受保护的网站源中移除数据。protectedWeb涵盖已作为托管应用安装的网站源。 例如,安装 Angry Birds 会保护源https://chrome.angrybirds.com,并将其从unprotectedWeb类别中移除。触发删除这些来源的数据时请务必小心:请确保您的用户知道他们会得到什么,因为这会不可撤销地移除他们的游戏数据。谁也不想无缘无故地频繁推倒小猪的房子。extension涵盖chrome-extensions:架构下的源。同样,您应该非常谨慎地移除扩展程序数据。
我们可以调整上一个示例,以便仅移除受保护网站中的数据,如下所示:
var callback = function () {
// Do something clever here once data has been removed.
};
var millisecondsPerWeek = 1000 * 60 * 60 * 24 * 7;
var oneWeekAgo = (new Date()).getTime() - millisecondsPerWeek;
browser.browsingData.remove({
"since": oneWeekAgo,
"originTypes": {
"protectedWeb": true
}
}, {
"appcache": true,
"cache": true,
"cacheStorage": true,
"cookies": true,
"downloads": true,
"fileSystems": true,
"formData": true,
"history": true,
"indexedDB": true,
"localStorage": true,
"passwords": true,
"serviceWorkers": true,
"webSQL": true
}, callback);
示例
如需试用此 API,请从 chrome-extension-samples 代码库中安装 browsingData API 示例。
类型
DataTypeSet
一组数据类型。缺失的数据类型会被解读为 false。
属性
-
appcache
布尔值 (可选)
自 Chrome 152 起已废弃移除了对 appcache 的支持。系统会忽略此数据类型。
网站的应用缓存。
-
缓存
布尔值 (可选)
浏览器的缓存。
-
cacheStorage
布尔值 (可选)
Chrome 72 及更高版本 browser.*(自 Chrome 148 起)缓存空间
-
饼干
布尔值 (可选)
浏览器的 Cookie。
-
下载内容
布尔值 (可选)
浏览器的下载列表。
-
fileSystems
布尔值 (可选)
网站的文件系统。
-
formData
布尔值 (可选)
浏览器存储的表单数据。
-
历史记录
布尔值 (可选)
浏览器的历史记录。
-
indexedDB
布尔值 (可选)
网站的 IndexedDB 数据。
-
localStorage
布尔值 (可选)
网站的本地存储数据。
-
密码
布尔值 (可选)
自 Chrome 144 起已弃用移除了对通过扩展程序删除密码的支持。系统会忽略此数据类型。
存储的密码。
-
pluginData
布尔值 (可选)
自 Chrome 88 起已弃用已移除对 Flash 的支持。系统会忽略此数据类型。
插件的数据。
-
serverBoundCertificates
布尔值 (可选)
自 Chrome 76 起已弃用对服务器绑定证书的支持已被移除。系统会忽略此数据类型。
服务器绑定证书。
-
serviceWorkers
布尔值 (可选)
Service Worker。
-
webSQL
布尔值 (可选)
自 Chrome 152 起已废弃移除了对 WebSQL 的支持。系统会忽略此数据类型。
网站的 WebSQL 数据。
RemovalOptions
用于确定要移除哪些数据的选项。
属性
-
excludeOrigins
string[] 可选
Chrome 74 及更高版本 browser.*(自 Chrome 148 起)如果存在此列表,则系统不会删除此列表中来源的数据。无法与
origins一起使用。仅支持 Cookie、存储空间和缓存。整个可注册网域的 Cookie 都会被排除。 -
originTypes
对象(可选)
一个对象,其属性指定应清除哪些来源类型。如果未指定此对象,则默认仅清除“不受保护”的来源。在添加“protectedWeb”或“extensions”之前,请确保您确实要移除应用数据。
-
扩展程序
布尔值 (可选)
用户已安装的扩展程序和打包应用(请务必小心!)。
-
protectedWeb
布尔值 (可选)
已作为托管应用安装的网站(请谨慎操作!)。
-
unprotectedWeb
布尔值 (可选)
普通网站。
-
-
来源
[string, …string[]] 可选
Chrome 74 及更高版本 browser.*(自 Chrome 148 起)如果存在此列表,则系统只会删除此列表中来源的数据。仅支持 Cookie、存储空间和缓存。系统会清除整个可注册网域的 Cookie。
-
开始于
number 可选
移除在此日期当天或之后累积的数据,以自新纪元开始算起的毫秒数表示(可通过 JavaScript
Date对象的getTime方法访问)。如果未指定,则默认值为 0(这会移除所有浏览数据)。
方法
remove()
browser.browsingData.remove(
options: RemovalOptions,
dataToRemove: DataTypeSet,
): Promise<void>
清除用户个人资料中存储的各种类型的浏览数据。
参数
-
dataToRemove
要移除的数据类型集。
返回
-
承诺<void>
Chrome 96 及更高版本 browser.*(自 Chrome 148 起)在删除完成后解析。
removeAppcache()
browser.browsingData.removeAppcache(
options: RemovalOptions,
): Promise<void>
移除了对 appcache 的支持。此函数没有任何作用。
清除网站的 appcache 数据。
参数
返回
-
承诺<void>
Chrome 96 及更高版本 browser.*(自 Chrome 148 起)在网站的 appcache 数据被清除后解析。
参数
返回
-
承诺<void>
Chrome 96 及更高版本 browser.*(自 Chrome 148 起)在浏览器的缓存清除后解析。
removeCacheStorage()
browser.browsingData.removeCacheStorage(
options: RemovalOptions,
): Promise<void>
清除网站的缓存存储空间数据。
参数
返回
-
承诺<void>
Chrome 96 及更高版本 browser.*(自 Chrome 148 起)在网站的缓存存储空间被清除后解析。
removeCookies()
browser.browsingData.removeCookies(
options: RemovalOptions,
): Promise<void>
清除在特定时间范围内修改过的浏览器 Cookie 和服务器绑定证书。
参数
返回
-
承诺<void>
Chrome 96 及更高版本 browser.*(自 Chrome 148 起)在浏览器的 Cookie 和服务器绑定证书被清除后解析。
removeDownloads()
browser.browsingData.removeDownloads(
options: RemovalOptions,
): Promise<void>
清除浏览器的已下载文件列表(而非已下载的文件本身)。
参数
返回
-
承诺<void>
Chrome 96 及更高版本 browser.*(自 Chrome 148 起)在浏览器的已下载文件列表被清除后解析。
removeFileSystems()
browser.browsingData.removeFileSystems(
options: RemovalOptions,
): Promise<void>
清除网站的文件系统数据。
参数
返回
-
承诺<void>
Chrome 96 及更高版本 browser.*(自 Chrome 148 起)在网站的文件系统被清除后解析。
removeFormData()
browser.browsingData.removeFormData(
options: RemovalOptions,
): Promise<void>
清除浏览器中存储的表单数据(自动填充)。
参数
返回
-
承诺<void>
Chrome 96 及更高版本 browser.*(自 Chrome 148 起)在浏览器的表单数据清除后解析。
removeHistory()
browser.browsingData.removeHistory(
options: RemovalOptions,
): Promise<void>
清除浏览器的历史记录。
参数
返回
-
承诺<void>
Chrome 96 及更高版本 browser.*(自 Chrome 148 起)在浏览器的历史记录清除后解析。
removeIndexedDB()
browser.browsingData.removeIndexedDB(
options: RemovalOptions,
): Promise<void>
清除网站的 IndexedDB 数据。
参数
返回
-
承诺<void>
Chrome 96 及更高版本 browser.*(自 Chrome 148 起)在网站的 IndexedDB 数据被清除后解析。
removeLocalStorage()
browser.browsingData.removeLocalStorage(
options: RemovalOptions,
): Promise<void>
清除网站的本地存储数据。
参数
返回
-
承诺<void>
Chrome 96 及更高版本 browser.*(自 Chrome 148 起)在网站的本地存储空间被清除后解析。
removePasswords()
browser.browsingData.removePasswords(
options: RemovalOptions,
): Promise<void>
移除了对通过扩展程序删除密码的支持。此函数没有任何作用。
清除浏览器中存储的密码。
参数
返回
-
承诺<void>
Chrome 96 及更高版本 browser.*(自 Chrome 148 起)在浏览器的密码清除后解析。
removePluginData()
browser.browsingData.removePluginData(
options: RemovalOptions,
): Promise<void>
已移除对 Flash 的支持。此函数没有任何作用。
清除插件的数据。
参数
返回
-
承诺<void>
Chrome 96 及更高版本 browser.*(自 Chrome 148 起)在插件的数据被清除后解析。
removeServiceWorkers()
browser.browsingData.removeServiceWorkers(
options: RemovalOptions,
): Promise<void>
清除网站的 Service Worker。
参数
返回
-
承诺<void>
Chrome 96 及更高版本 browser.*(自 Chrome 148 起)在网站的 Service Worker 被清除后解析。
removeWebSQL()
browser.browsingData.removeWebSQL(
options: RemovalOptions,
): Promise<void>
移除了对 WebSQL 的支持。此函数没有任何作用。
清除网站的 WebSQL 数据。
参数
返回
-
承诺<void>
Chrome 96 及更高版本 browser.*(自 Chrome 148 起)在网站的 WebSQL 数据库被清除后解析。
settings()
browser.browsingData.settings(): Promise<object>
报告“清除浏览数据”设置界面中当前选择的数据类型。注意:此 API 中包含的部分数据类型在设置界面中不可用,并且某些界面设置会控制此处列出的多种数据类型。
返回
-
Promise<object>
Chrome 96 及更高版本 browser.*(自 Chrome 148 起)