activeTab
权限允许扩展程序在
用户调用相应扩展程序,例如点击浏览器操作即可。访问该标签页
有效期在用户位于相应页面时有效,在用户离开页面或关闭标签页时失效。
这是 <all_urls>
的多种用法,但会显示无警告消息。
:
注意:从 M72 开始,系统会授予 activeTab
权限,直到用户转到
不同来源。也就是说,如果用户在 https://example.com 上调用扩展程序,然后
转到 https://example.com/foo,该扩展程序仍能继续访问该网页。如果
当用户前往 https://chromium.org 时,相关访问权限会被撤消。
不使用 activeTab
时:
以及 activeTab
:
示例
请参阅 Page Redder 扩展程序示例:
{
"name": "Page Redder",
"version": "2.0",
"permissions": [
"activeTab"
],
"background": {
"scripts": ["background.js"],
"persistent": false
},
"browser_action": {
"default_title": "Make this page red"
},
"manifest_version": 2
}
// Called when the user clicks on the browser action.
chrome.browserAction.onClicked.addListener(function(tab) {
// No tabs or host permissions needed!
console.log('Turning ' + tab.url + ' red!');
chrome.tabs.executeScript({
code: 'document.body.style.backgroundColor="red"'
});
});
设计初衷
假设有一个包含浏览器操作和上下文菜单项的网页剪辑扩展程序。这个 可能只需要在用户点击其浏览器操作或 。
如果没有 activeTab
,此扩展程序将需要请求对每个网站的完整、永久访问权限,
这样,在用户调用它时,它就可以正常运行。这里有很多
如果扩展程序遭到入侵,攻击者
获取该扩展程序拥有的所有内容
相比之下,具有 activeTab
权限的扩展程序仅在响应时获取对标签页的访问权限
显式用户手势。如果扩展程序遭到入侵,攻击者将需要等待
用户在获得访问权限之前调用该扩展程序。并且该访问权限仅在相应标签页
已导航或已关闭。
activityTab 允许的功能
为标签页启用 activeTab
权限后,扩展程序可以:
- 调用该标签页上的
tabs.executeScript
或tabs.insertCSS
。 - 通过会返回
tabs.Tab
对象的 API 获取相应标签页的网址、标题和网站图标 (实际上,activeTab
会临时授予tabs
权限)。 - 使用 webRequest 拦截标签页中发送到标签页主框架源的网络请求 API。该扩展程序会暂时获取标签页主框架源的主机权限。
调用 activityTab
以下用户手势可启用 activeTab
:
- 执行浏览器操作
- 执行网页操作
- 执行上下文菜单项
- 通过 commands API 执行键盘快捷键
- 通过多功能框 API 接受建议