一尘不染

在Chrome打包的应用中通过XHR加载本地内容

ajax

我正在尝试加载使用Backbone构建的Web应用程序,它会提取本地存储的JSON和HTML模板文件。我想知道Chrome打包的应用程序是否可以通过某种“获取”
/ ajax请求来加载这些文件?

目前我正在得到这个…

OPTIONS chrome-extension://fibpcbellfjkmapljkjdlpgencmekhco/templates/templates.html Cannot make any requests from null. jquery.min.js:2
XMLHttpRequest cannot load chrome-extension://fibpcbellfjkmapljkjdlpgencmekhco/templates/templates.html. Cannot make any requests from null.

我找不到有关如何执行此操作的任何真实信息,因此非常感谢您!


阅读 211

收藏
2020-07-26

共1个答案

一尘不染

是的,这是完全可能的,而且很容易。这是一个工作示例。尝试从此开始,确认它可以工作,然后重新添加您自己的代码。如果您遇到障碍,并且提出了比XHR是否在打包应用程序中工作更具体的问题,那么您可能想问一个新问题。

manifest.json:

{
  "name": "SO 15977151 for EggCup",
  "description": "Demonstrates local XHR",
  "manifest_version" : 2,
  "version" : "0.1",
  "app" : {
    "background" : {
      "scripts" : ["background.js"]
    }
  },
  "permissions" : []
}

background.js:

chrome.app.runtime.onLaunched.addListener(function() {
  chrome.app.window.create("window.html",
    { bounds: { width: 600, height: 400 }});
});

window.html:

<html>
<body>
  <div>The content is "<span id="content"/>"</div>
  <script src="main.js"></script>
</body>
</html>

main.js:

function requestListener() {
  document.querySelector("#content").innerHTML = this.responseText;
};

onload = function() {
  var request = new XMLHttpRequest();
  request.onload = requestListener;
  request.open("GET", "content.txt", true);
  request.send();
};

content.txt:

Hello, world!
2020-07-26