要想使用大部分 chrome.* API 和 扩展程序 功能, 扩展程序必须在 清单文件 中声明它的意图,通常在 “permission” 属性中。
其中一些声明会使用户在安装扩展程序时看到一个警告对话框。
当浏览器尝试自动更新我们的扩展程序时,如果扩展程序请求新的权限,用户可能会看到另一个警告对话框。
这些新的权限可能是因为我们的扩展程序使用了新的API,也可能是因为扩展程序需要访问新的网站。
如下是用户在安装扩展程序时可能会看到的典型对话框:
"permissions": [
"http://api.flickr.com/"
],
注意: 当载入未打包的扩展程序时不会看到权限警告,只有当我们从.crx文件安装扩展程序时才会看到。
如果在自动更新时向扩展程序添加新的权限,用户可能看到新的权限警告。 例如,假设在前一个例子中添加了一个新的站点以及 “tabs” 权限:
"permissions": [
"http://api.flickr.com/",
"http://*.flickr.com/",
"tabs"
],
当扩展程序自动更新时,增加的权限将使扩展程序被禁用,直到用户重新启用。 如下是用户看到的警告:
单击重新启用按钮将显示如下警告
当添加某些权限,例如 “tabs” 后, 将显示看上去不相关的警告,比如,说扩展程序可以访问您的浏览器活动,这可能令人惊讶。
这一警告的原因是尽管 chrome.tabs
API可能只用来打开新标签页,它也能够用来查看每一个新打开的标签页相关联的URL (使用它们的 Tab 对象)
下表列出了用户可能看到的警告消息,以及导致这些警告的清单文件条目。
警告消息 | 导致这一警告的清单文件条目 | 备注 |
---|---|---|
访问您计算机上的所有数据以及您在所有网站上的数据 | “plugins“权限 | NPAPI插件 要求 “plugins” 权限 |
读取和修改您的书签 | “bookmarks“权限 | chrome.bookmarks 要求 “bookmarks” 权限 |
读取和修改您的浏览历史记录 | “history“权限 | chrome.history 要求 “history” 权限 |
访问您的标签页和浏览活动 | 如下的任何一个权限:
|
chrome.tabs 和 chrome.windows 模块要求”tabs“权限。 chrome.webNavigation模块 要求”webNavigation“权限。 |
修改用于指定网站是否可以使用Cookie、JavaScript和插件等功能的设置 | “contentSettings“权限 | :ref:`chrome.contentSettings <api4contentSettings>`_ 要求”contentSettings“权限 |
访问您在所有网站上的数据 | 如下的任何一个权限:
|
实验性的 调试器模块 要求”debugger“权限。 chrome.proxy模块 要求”proxy“权限。 如下任何一个URL匹配所有主机:
|
访问您在{列出的网站}上的数据 | 在”permissions“字段中的匹配表达式,指定了一个或多个,但不是所有主机 | 最多会列出3个站点的名称。子域名不会特别对待。例如,a.com 和 b.a.com 将作为不同站点列出。在自动更新时,如果扩展程序添加或更改了站点,用户将会看到权限警告。例如,从 a.com,b.com 到 a.com,b.com,c.com 导致一个警告。从b.a.com到a.com或者反过来也都会导致警告。 |
访问您打开的页面内容 | “pageCapture“权限 | chrome.pageCapture 模块要求”pageCapture“权限 |
管理您的应用程序、扩展程序和主题 | “management“权限 | chrome.management 模块要求”management“权限 |
检测您的实际位置 | “geolocation“权限 | 允许扩展程序使用提出的HTML5 地理位置API 而不用提示用户就允许访问 |
访问您复制和粘贴的数据 | “clipboardRead“权限 | 允许扩展程序通过 document.execCommand() 使用以下编辑命令:
|
修改隐私相关的设置 | “privacy“权限 | chrome.privacy 模块要求”privacy“权限 |
访问所有使用语音合成朗读的文字 | “ttsEngine“权限 | chrome.ttsEngine 模块要求”ttsEngine“权限 |
警告消息 | 导致这一警告的清单文件条目 | 备注 |
如下权限不会导致警告:
如果想看到用户会得到怎样的警告,将扩展程序 打包 为.crx文件并安装。
如果想看到在扩展程序自动更新时用户会看到的警告,这要稍微麻烦一些,可以设置自动更新服务器。
您可以使用 chrome.management.getPermissionWarnings() 获得任意清单文件的权限警告列表