Javascript Chrome扩展-请求新权限

Javascript Chrome扩展-请求新权限,javascript,google-chrome,google-chrome-extension,permissions,Javascript,Google Chrome,Google Chrome Extension,Permissions,我有一个chrome扩展已经在商店里,我需要添加更多的权限,因为我想把它应用到更多的网站。但是将它们放入permissions数组会禁用扩展,并且它需要新权限的唯一指示是在hamburger菜单下,这是完全无用的 这是原件,由于它位于content\u scripts对象中,因此它似乎具有隐含的“”权限: { “清单版本”:2, “名称”:“我的分机”, “短名称”:“扩展名”, “版本”:“1.5.16”, “说明”:“此处说明”, “主页地址”:https://test.com/", “图

我有一个chrome扩展已经在商店里,我需要添加更多的权限,因为我想把它应用到更多的网站。但是将它们放入permissions数组会禁用扩展,并且它需要新权限的唯一指示是在hamburger菜单下,这是完全无用的

这是原件,由于它位于content\u scripts对象中,因此它似乎具有隐含的“”权限:

{
“清单版本”:2,
“名称”:“我的分机”,
“短名称”:“扩展名”,
“版本”:“1.5.16”,
“说明”:“此处说明”,
“主页地址”:https://test.com/",
“图标”:{
“16”:“icon16.png”,
“48”:“icon48.png”,
“128”:“icon128.png”
},
“内容脚本”:[
{
“匹配项”:[
"https://mail.google.com/*"
],
“js”:[
“injector.js”
],
“css”:[
“style.css”
]
}
],
“网络可访问资源”:[
“app.js”,
“libs.js”
]

}
抛开内容脚本的问题不谈,在大多数情况下,将权限列表从一个固定列表修补到另一个固定列表时,可选权限是不值得的

您将使现有用户和新用户都通过运行时权限对话框,这让新用户感到困惑

可选权限的真正目的是允许用户在运行时未知的域中进行选择

最好咬紧牙关,冒着分机失效的风险

如果愿意,您可以发布具有新权限的第二个扩展,使第一个扩展未列出,并发布一个更新,敦促用户安装新扩展

有些用户可能更喜欢这种方式,而有些用户可能更恼火——从一开始就是两败俱伤,你不会留住所有用户。但是,使用迁移路径,您将丢失存储中的累积评级


添加内容脚本实际上是对主机权限的隐式授予。以及用于在运行时更改内容脚本配置的声明式API


因此,如果您完全决定采用可选权限路径,您需要(效率低下,有限制)这样做。

撇开内容脚本问题不谈,在大多数情况下,将一个固定列表中的权限列表修补到另一个列表中,不值得使用可选权限

您将使现有用户和新用户都通过运行时权限对话框,这让新用户感到困惑

可选权限的真正目的是允许用户在运行时未知的域中进行选择

最好咬紧牙关,冒着分机失效的风险

如果愿意,您可以发布具有新权限的第二个扩展,使第一个扩展未列出,并发布一个更新,敦促用户安装新扩展

有些用户可能更喜欢这种方式,而有些用户可能更恼火——从一开始就是两败俱伤,你不会留住所有用户。但是,使用迁移路径,您将丢失存储中的累积评级


添加内容脚本实际上是对主机权限的隐式授予。以及用于在运行时更改内容脚本配置的声明式API


因此,如果您决定选择可选权限路径,您需要(效率低下,有限制)这样做。

除了现有答案(完全有效)之外,我将建议如何处理可选权限,以防您决定避免在
manifest.json中添加新权限

程序脚本注入 在获得权限后,您可以使用一个新的域在新域上高效地注册脚本

browser.contentScripts.register({
匹配:['https://your-dynamic-domain.example.com/*'],
js:[{file:'content.js'}]
});
此API仅在Firefox中可用,但有一个可供使用的API

获取新权限 您可以使用
chrome.permissions.request
让用户按需添加新域,也可以安装我最近编写的模块(),以提供一个简单的UI来切换任何域的权限


使用时,您可以添加任何域,模块将自动在其上注册您现有的
内容\u脚本。

除了现有答案(完全有效),我将建议如何处理可选权限,以防您决定避免在
manifest.json中添加新权限

程序脚本注入 在获得权限后,您可以使用一个新的域在新域上高效地注册脚本

browser.contentScripts.register({
匹配:['https://your-dynamic-domain.example.com/*'],
js:[{file:'content.js'}]
});
此API仅在Firefox中可用,但有一个可供使用的API

获取新权限 您可以使用
chrome.permissions.request
让用户按需添加新域,也可以安装我最近编写的模块(),以提供一个简单的UI来切换任何域的权限


使用时,您可以添加任何域,模块将自动在其中注册您现有的
内容\u脚本。

其他可选权限不会禁用它。而且没有默示许可,大多数chrome.tabs也不需要任何许可。添加背景页面不是问题。但是在“内容脚本”中添加新域会禁用它。也许我把莱德埋在这里了,但它和我表演这个简单而明显的动作时说的一模一样。“可选_权限”的使用是为了解决这个问题。是的,新内容脚本确实会禁用。除非使用可选权限和程序注入,否则无法真正停止。其他可选权限不会禁用它。而且没有默示许可,大多数chrome.tabs也不需要任何许可。添加背景页不是问题,但是