Chrome扩展清单脚本的相对文件路径

时间:2014-02-26 17:14:04

标签: google-chrome google-chrome-extension

我有多个扩展程序使用的实用程序脚本文件。到目前为止,每当我进行更改时,我都会将这些实用程序脚本复制/粘贴到每个扩展的根文件夹中。这变得越来越不可行。我想从两个扩展的清单中引用相同的实用程序脚本文件。我试过这个:

{
    "background":
    {
        "scripts":
        [
            "../utils.js",
            "background.js"
        ]
    }
}

但是,当我重新加载扩展程序时,我收到一条扩展错误:

Could not load extension from 'C:\...'. Could not load background script '../../utils.js'.

如果我使用反斜杠(这似乎是一个更可能的解决方案,因为我正在使用Windows ...),我得到相同的错误(但使用反斜杠)。

甚至可以实现这种类型的相对文件路径吗?

2 个答案:

答案 0 :(得分:1)

如何创建托管所需JS文件的本地服务器,然后您的扩展可以通过localhost端口访问这些JS文件并使用它们的功能?一个简单的轻量级服务器可以解决这个问题(在Python中可能是bottle.py)。

Chrome v33加强了扩展程序安全性,因此我不确定您是否可以访问您在manifest.json中尝试过的文件

让我知道你是如何解决这个问题的!

答案 1 :(得分:1)

您是否考虑过使用Shared Modules?根据文档,您可以从一个扩展中导出常用功能,从而可以导入到另一个扩展中:

"导出字段表示扩展名是导出其资源的共享模块:

{
  "version": "1.0",
  "name": "My Shared Module",
  "export": {
    // Optional list of extension IDs explicitly allowed to
    // import this Shared Module's resources.  If no whitelist
    // is given, all extensions are allowed to import it.
    "whitelist": [
      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
      "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
    ]
  }
  // Note: no permissions are allowed in Shared Modules
}

扩展程序和应用程序使用导入字段来声明它们依赖于来自特定共享模块的资源:

{
  "version": "1.0",
  "name": "My Importing Extension",
  ...
  "import": [
    {"id": "cccccccccccccccccccccccccccccccc"},
    {"id": "dddddddddddddddddddddddddddddddd"
     "minimum_version": "0.5" // optional
    },
  ]
}

"