chrome.privacy

描述 使用 chrome.privacy API 控制 Chrome 浏览器中可能会影响用户隐私的特性。这一模块依赖于类型 API 中的 ChromeSettings 原型,用于获取和设置 Chrome 浏览器的配置。
可用版本 从 Chrome 18 开始支持。
权限 "privacy"

Google Chrome 浏览器隐私权白皮书提供了与这一 API 可以控制的特性有关的背景资料。

清单文件

您必须在扩展程序的清单文件中声明 "privacy" 权限才能使用这一 API。例如:

      {
        "name": "我的扩展程序",
        ...
        "permissions": [
          "privacy"
        ],
        ...
      }
      

用法

读取某个 Chrome 浏览器设置的当前值是很直接的。您首先需要找到您感兴趣的属性,然后调用那个对象的 get() 方法,获得它当前的值以及您的扩展程序对它的控制级别。例如,要确定 Chrome 浏览器的自动填充功能是否已启用,您可以编写如下代码:

chrome.privacy.services.autofillEnabled.get({}, function(details) {
        if (details.value)
          console.log('自动填充已启用!');
        else
          console.log('自动填充已禁用!');
      });

更改设置的值稍微有点复杂,因为您必须首先确认您的扩展程序可以控制某一项设置。如果扩展程序调整了通过企业策略(levelOfControl 将设置为 "not_controllable")限制为特定值的设置,或者另外一个扩展程序正在控制设置值(levelOfControl 将设置为 "controlled_by_other_extensions"),用户将不能看见任何设置的更改。set() 调用将会成功,但是设置会立即被覆盖。这可能令人疑惑,如果用户选择的设置实际上无法应用,建议警告用户。

有关扩展程序控制 ChromeSetting 的能力的完整详情可以在 chrome.types.ChromeSetting 中找到。

这意味着您应该先使用 get() 方法确定您的访问级别,只有当您的扩展程序可以控制这一设置时才调用 set()(事实上,如果您的扩展程序不能控制这一设置,在用户界面中禁用相应功能可能会更好,减少用户的疑惑):

chrome.privacy.services.autofillEnabled.get({}, function(details) {
        if (details.levelOfControl === 'controllable_by_this_extension') {
          chrome.privacy.services.autofillEnabled.set({ value: true }, function() {
            if (chrome.runtime.lastError === undefined)
              console.log("哈哈,成功了!");
            else
              console.log("喔唷!", chrome.runtime.lastError);
          });
        }
      });

如果您对设置值的更改有兴趣,请向 onChange 事件添加监听器。除了其他用途外,如果最近安装的扩展程序拥有了某一项设置的控制权,或者企业策略覆盖了您的控制,这将允许您警告用户。例如,要监听自动填充状态的更改,如下所示代码就可以了:

chrome.privacy.services.autofillEnabled.onChange.addListener(
          function (details) {
            // 新的值存储在 `details.value` 中,新的控制级别在
            // `details.levelOfControl` 中。另外,如果设置值仅用于
            // 隐身模式,则 `details.incognitoSpecific` 将为 `true`。
          });

例子

有关示例代码,请参见隐私权 API 示例

摘要

属性
network
services
websites

属性

object chrome.privacy.network 总体上影响 Chrome 浏览器对网络连接的处理的设置。
属性
types.ChromeSetting networkPredictionEnabled

如果启用的话,Chrome 浏览器会尝试通过预取 DNS 项、预呈现站点(<link rel="prefetch" ...>),并提前打开向服务器的 TCP 和 SSL 连接。这一选项的值为布尔类型,默认为 true

object chrome.privacy.services 启用或禁用需要由 Google 以及您的默认搜索引擎提供的第三方网络服务。
属性
types.ChromeSetting alternateErrorPagesEnabled

如果启用的话,Chrome 浏览器将使用网络服务帮助解决导航错误。这一选项的值是布尔类型,默认为 true

types.ChromeSetting autofillEnabled

如果启用的话,Chrome 浏览器会自动填充表单。这一选项的值是布尔类型,默认为 true

types.ChromeSetting passwordSavingEnabled

从 Chrome 38 开始支持。警告:目前为 Dev 分支。了解更多内容

如果启用的话,密码管理器会询问是否要保存密码。这一选项的值是布尔类型,默认为 true

types.ChromeSetting safeBrowsingEnabled

如果启用的话,Chrome 浏览器会尽可能地保护您,以防网上诱骗和恶意软件。这一选项的值为布尔类型,默认为 true

types.ChromeSetting searchSuggestEnabled

如果启用的话,Chrome 浏览器将会把您在多功能框中输入的文字发送至您的默认搜索引擎,提供网站预测以及对您已输入内容的自动完成。这一选项的值为布尔类型,默认为 true

types.ChromeSetting spellingServiceEnabled

从 Chrome 20 开始支持。

如果启用的话,Chrome 浏览器将使用网络服务帮助您纠正拼写错误。这一选项的值为布尔类型,默认为 false

types.ChromeSetting translationServiceEnabled

如果启用的话,Chrome 会对不使用您所用语言撰写的页面进行翻译。这一选项的值为布尔类型,默认为 true

object chrome.privacy.websites 决定 Chrome 浏览器使哪些信息对网站可用。
属性
types.ChromeSetting thirdPartyCookiesAllowed

如果禁用的话,Chrome 浏览器会阻止第三方站点设置 Cookie。这一选项的值为布尔类型,默认为 true

types.ChromeSetting hyperlinkAuditingEnabled

如果启用的话,Chrome 浏览器在网站请求(<a ping>)时会自动发送审核信息。这一选项的值为布尔类型,默认为 true

types.ChromeSetting referrersEnabled

如果启用的话,Chrome 浏览器发送您的请求时会同时发送 referer 头信息。的确,这一选项的名称与拼写错误的头信息名称不匹配,然而我们不打算更改它。这一选项的值为布尔类型,默认值为 true

types.ChromeSetting protectedContentEnabled

从 Chrome 21 开始支持。

仅在 Windows 和 Chrome OS 上可用:如果启用的话,Chrome 浏览器将会向插件提供唯一标志符来运行受保护的内容。这一选项的值为布尔类型,默认为 true