从选项页面更新chrome扩展清单权限

Update chrome extension manifest permissions from options page

本文关键字:单权限 权限 扩展 选项 更新 chrome      更新时间:2023-09-26

我正在尝试从选项页面更新chrome扩展清单文件中的权限。基本上,用户应该能够输入要运行的扩展的url,并且该url将在扩展清单文件中更新。我目前正在使用chrome.storage.sync存储我的所有选项,以便在多个文件中使用。我正在寻找一个安全的解决方案,只给选择的网址访问。有什么建议吗?

这是不可能的(更新清单)。

然而,您解释的特定用例是:

  1. 列出"允许"的网站
  2. 当按下按钮调用扩展时,如果允许网站,则注入一个执行某些操作的内容脚本

在这种情况下,"activeTab"权限和编程注入应该可以解决您的问题。

  • 您没有在清单中声明任何内容脚本。这样可以确保代码只在需要的时候运行
  • 您没有在清单中声明任何主机权限。在按"浏览器操作"时,您的扩展将仅在当前选项卡上工作
  • 您向用户询问允许的URL,并将其存储在chrome.storage
  • 当使用浏览器操作调用扩展时,您可以查询当前活动的选项卡,并将获得其URL(因为具有"activeTab"权限)。
    • 然后,您的逻辑将其与存储的白名单URL进行比较
    • 如果匹配,则使用chrome.tabs.executeScript注入内容脚本
    • 如果没有匹配-什么都不做,或者以某种方式要求用户确认将新域列入白名单

以下是一些示例代码:

chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
  var currentTab = tabs[0];
  // Pseudocode
  if (whitelisted(currentTab.url)) {
    chrome.tabs.executeScript(currentTab.id, {file: "content.js"});
  } else {
    // Do nothing or show some warning
  }
});

或者,您可以查看可选权限API。