从选项页面

时间:2016-05-17 15:07:57

标签: javascript google-chrome google-chrome-extension

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

1 个答案:

答案 0 :(得分:1)

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

但是,您解释的特定用例是:

  1. 列出"允许"网站。
  2. 当按下按钮调用扩展名时,如果允许网站 - 注入一个可以执行某些操作的内容脚本。
  3. 在这种情况下,"activeTab" permissionProgrammatic Injection可以解决您的问题。

    • 您不在清单中声明任何内容脚本。这可确保代码仅在您需要时运行。
    • 您不会在清单中声明任何主机权限。您的扩展程序仅在浏览器操作按下时才会在当前选项卡上运行。
    • 您要求用户提供允许的网址,并将其存储在chrome.storage
    • 使用“浏览器操作”调用扩展程序时,您可以查询当前活动的选项卡,并获取其URL(由于"activeTab"权限)。
      • 然后,您的逻辑会将其与存储的列入白名单的网址进行比较。
      • 如果匹配 - 您使用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
      }
    });
    

    或者,您可以查看Optional Permissions API