This page was saved using WebZIP 7.0.3.1030 offline browser on 12/24/13 11:31:36.
Address: https://crxdoc-zh.appspot.com/extensions/privacy.html
Title: chrome.privacy - Google Chrome 扩展程序开发文档(非官方中文版)  •  Size: 34549

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 示例

chrome.privacy 参考

属性

network

chrome.privacy.network
network ( object )
总体上影响 Chrome 浏览器对网络连接的处理的设置。

network 的属性

networkPredictionEnabled ( types.ChromeSetting )

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

services

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

services 的属性

alternateErrorPagesEnabled ( types.ChromeSetting )

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

autofillEnabled ( types.ChromeSetting )

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

safeBrowsingEnabled ( types.ChromeSetting )

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

searchSuggestEnabled ( types.ChromeSetting )

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

spellingServiceEnabled ( types.ChromeSetting )

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

translationServiceEnabled ( types.ChromeSetting )

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

websites

chrome.privacy.websites
websites ( object )
决定 Chrome 浏览器使哪些信息对网站可用。

websites 的属性

thirdPartyCookiesAllowed ( types.ChromeSetting )

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

hyperlinkAuditingEnabled ( types.ChromeSetting )

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

referrersEnabled ( types.ChromeSetting )

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

protectedContentEnabled ( types.ChromeSetting )

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