这是我的困境。 我正在为Google Chrome写一个扩展程序。它工作正常。这是Google+的主题。
够了。为了在地址栏中显示图标,我需要将“标签”作为我的权限的一部分。我相信这也会导致网上商店说我的扩展程序可以访问浏览器的历史记录。有什么方法可以解决这个问题吗?
答案 0 :(得分:3)
您无需tabs
权限即可显示浏览器操作图标,但在后台页面中需要chrome.tabs.onUpdated.addListener()
。
tabs
权限不应触发“您的浏览历史记录”警告,这是图库中的错误。根据{{3}},它应该说“你的标签和浏览活动”。我建议提交specs。
答案 1 :(得分:3)
有趣的是,现在需要 "tabs"
权限的事情很少。
引用文档本身(强调我的):
大多数
chrome.tabs
API都可以在不声明任何权限的情况下使用。但是,要获得{strong>填充Tab的"tabs"
,url
和title
属性,才需要favIconUrl
权限。
因此,您可以轻松操作标签(例如创建标签),而无需获得许可。
还有什么,当"activeTab"
权限处于活动状态时(为当前标签调用了扩展程序),如果您查询限制字段将,则会填充 。 / p>
似乎需要"tabs"
权限的一项常见任务是找到具有给定地址的选项卡。如果没有这个许可,这往往是不可能的,特别是在query()
之前是一件事 - 人们只需要获取所有标签并手动过滤它们。
但是,即使您没有"tabs"
权限,也可以按网址格式进行查询。 您确实需要此网址格式的主机权限。
因此,假设您想知道某些标签中是否打开了www.example.com
:
chrome.tabs.query({url: "*://www.example.com/*"}, function(tabs) {
// Look, ma, no "tabs"!
});
概念证明:GitHub
重要提示:最后一个技巧在Firefox WebExtensions中不起作用。如果没有"tabs"
权限的URL查询标签,他们会无条件地抛出异常。是的,这与Chrome的文档直接矛盾,因此可能会在某些时候停止工作。
现在假设您仍然想知道确切的URL(使用上述方法,您只能猜测)和某些标签的标题/ favicon。您还需要"tabs"
权限吗?
取决于。如果您只需要几个网站,请为它们声明主机权限并注入一个内容脚本(在查询之后),以收集此信息。
这将导致不同的警告:
阅读并修改{list of website}
上的数据
与"tabs"
的对比:
阅读您的浏览记录
如果您正在制作仅在这些网站的上下文中有意义的扩展,那么这是一个合理的妥协。相反,如果您正在制作一个通用扩展程序,需要提前获知您不知道的网站的此信息 - 那么是的,"tabs"
非常有意义。
答案 2 :(得分:-1)
编辑:这实际上不是一个好习惯(有关评论的更多信息)。我不会删除这个答案只是为了让别人知道不该做什么。
我遇到了同样的问题,只需在权限中添加"http://*/*"
和"https://*/*"
即可解决问题。
像这样:
"permissions": [
"tabs",
"http://*/*",
"https://*/*"
]
我不确切知道为什么,它没有多大意义(是吗?),但现在"阅读并修改您的浏览历史记录"许可消息消失了。
希望这有帮助。