不能在Chrome扩展程序内部使用xhr文件

时间:2013-09-24 20:55:12

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

我正在构建一个扩展,我正在努力保持它的结构良好。部分内容将使用某种类型的模板系统(Mustache,Handlebars等)。请注意,我已经知道必须使用我所使用的库的特定非eval版本。

问题在于,从app.js脚本(核心逻辑)中我无法通过XHR加载/ templates中的文件内容(见下文)。

load事件永远不会触发,当我用onreadystatechange检查时,它会立即跳转到状态码为0的状态4.(状态4和状态200是我们想要的)。

获取该文件的Chrome网址,例如

chrome.extension.getURL('templates/view1.html')
//chrome-extension://hdhpjlpbepobcdgnkklnakdpoojaahjg/templates/view1.html 

我怀疑我的manifest.json中有一些东西配置不正确。我已经阅读了CSP文档,但没有任何内容可以告诉我为什么应该拒绝访问扩展本地的文件。请注意,XHR请求不会抛出错误,它们只是永远不会返回数据。

应用程序的结构如下:

/manifest.json
/src
    app.js
    style.css
/libs
    jquery.js
    mustache.js

/templates
    view1.html
    view2.html

的manifest.json

{
  "name": "Test Extension",
  "version": "0.0.1",
  "manifest_version": 2,
  "icons": {
//    "16": "",
//    "48": ""
//    "128": ""
  },
//  "default_locale": "en",
  "permissions": [
    "contentSettings",
    "http://*/*",
    "https://*/*"
  ],
  "content_scripts": [
    {
      "matches": [
        "https://www.google.com/search*"
      ],
      "css": [
        "src/style.css"
      ],
      "js": [
        "src/app.js",
        "libs/jquery.js",
        "libs/mustache.js"
      ],
      "run_at": "document_start"
    }
  ]
}

1 个答案:

答案 0 :(得分:1)

您需要在清单的web_accessible_resources部分列出要加载的文件。