【问题标题】:Javascript fetch from file locationJavascript 从文件位置获取
【发布时间】:2020-06-09 20:21:28
【问题描述】:

我有以下文件夹结构:

在我的 js 里面我有:

fetch("sdk-article.html").then(stream => stream.text()).then(text => define(text));

但是,当我尝试这样做时,它尝试的路径不是文件夹的完整路径。 (这意味着我找不到文件)

我也试过了:fetch("-/sdk-article.html").then(stream => stream.text()).then(text => define(text));

但是没有运气。

有没有一种简单的方法可以从与请求文件相同的文件夹中加载文件?

更新 ./sdk-article 方法

这似乎不是:

fetch("./sdk-article.html").then(stream => stream.text()).then(text => define(text));

【问题讨论】:

  • 相对路径使用./sdk-articles.html
  • @Keith 路径需要相对于公用文件夹的根目录。
  • “它尝试的不是文件夹的完整路径”,而是 “来自与请求它的文件相同的文件夹”。当它们在同一个文件夹中时,为什么要“完整路径”
  • 不幸的是,JS 不知道它是从哪里加载的,调用者是从哪里加载的。正如 cmets 中所指出的,您可以从遍历文档的加载脚本中提取工作目录,然后解析 URL,但是如果您有多个脚本,那么您当然需要找到正确的脚本,您可以在脚本标签上使用 id。

标签: javascript fetch


【解决方案1】:

您可以做的只是从根目录加载它,如下所示:

fetch("Components/sdk-article/sdk-article.html")

或者相对而言 ./sdk-article.html (点代表在当前文件夹中)

【讨论】:

  • 这确实有效,但似乎有点乏味:) 有没有更简单的方法?
  • 使用相对路径,我在更新后输入的:)
  • 是的,这不起作用:(由于某种原因它不包括 Components 文件夹
  • 您可以检查执行的javascript是否在正确的路径如下:var scripts = document.getElementsByTagName("script"), src = scripts[scripts.length-1].src; alert(src);
  • 一开始你需要另一个/,例如..fetch("/Component....
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-10
  • 2013-12-27
  • 2010-11-03
  • 1970-01-01
  • 1970-01-01
  • 2019-05-10
  • 1970-01-01
相关资源
最近更新 更多