javascript - 如何从 background.js 访问内部资源

标签 javascript google-chrome-app

在 Google Chrome 应用程序中,是否可以从 background.js 脚本中访问捆绑的数据文件?

例如如果我有一个包含在应用程序中的名为 data.json 的文件,我可以在 background.js 脚本中使用 JavaScript API 来获取文件内容?

使用示例包目录结构:

/app/manfifest.json
/app/backround.js
/app/data.json

我想做这样的事情:

chrome.app.runtime.onLaunched.addListener(function() {
  data = unknown.api.loadFileSync("data.json");
  // do stuff with data
  // ...
});

最佳答案

后台脚本可以使用XHR 访问资源。要获取包含资源的 URL,请使用 chrome.extension.getURL(),它会返回资源的完全限定 URL。

function loadData (file, fn) {
  var dataUrl = chrome.extension.getURL(file),
      xhr = new XMLHttpRequest();

  xhr.responseType = 'json';
  xhr.onload = function () {
    fn(null, this.response);
  };
  xhr.onerror = function () { fn(this.status); };
  xhr.send();
}


chrome.app.runtime.onLaunched.addListener(function() {
  loadData('data.json', function (err, data) {
    // 
  });
});

另一种方法是将 data.json 文件转换为 data.js 文件,并将其作为后台脚本包含在 manifest.json。这将允许您访问由 data.js 设置的任何变量。

list .json:

"background": {
  "scripts": ["data.js", "background.js"]
}

关于javascript - 如何从 background.js 访问内部资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26838004/

相关文章:

javascript - D3 Tree Layout - 当 child 超过一定数量时自定义垂直布局

javascript - 如何在弹出窗口中添加关闭按钮

javascript - 谷歌浏览器应用 : Webview behavior

javascript - 有没有办法从 chrome 的存储图像中获取 url?

google-chrome - 从 URL 打开 Chrome VNC 查看器

javascript - jQuery:嵌套框架集中的访问框架

javascript - 带 for 循环的 Fizzbuzz 游戏

javascript - MTurk : Posting experimental conditions simultaneously, 但只允许每个 worker 看到其中一个条件

javascript - 在 Chrome 扩展程序中,如何从用户的 Chrome 浏览器中准确检索用户的地区/地区/国家?