为什么 <script> src 中的路径以单斜杠开头会导致错误?

3 html javascript path src filepath

我有这个项目结构:

\n\n
/root\n  /static\n    script.js\n  page.html\n
Run Code Online (Sandbox Code Playgroud)\n\n

此代码:\n

\n\n
<html>\n    <head>\n        <script src="/static/script.js"></script>\n    </head>\n    <body>\n        ...\n    </body>\n</html>\n
Run Code Online (Sandbox Code Playgroud)\n\n

结果是:

\n\n
Loading failed for the <script> with source \xe2\x80\x9cfile:///static/script.js\xe2\x80\x9d.\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是为什么?static我希望它在当前目录(即)中搜索文件夹root

\n

小智 5

在这种特殊情况下,会产生错误,因为我刚刚page.html在我的计算机上的浏览器中打开(即我没有通过服务器提供服务),因此/被解释为本地计算机的 root。如果我已经为该项目提供服务,那么/将被解释为项目的根,并且不会有错误。

\n\n
\n\n

更详细的解释/插图。\n
给出以下结构:

\n\n
/root\n  /static\n    script.js\n  page.html\n
Run Code Online (Sandbox Code Playgroud)\n\n

以下是不同路径(在 中page.html)所指的内容:

\n\n
    \n
  • /\xe2\x80\x94 根目录,它可能意味着/root,但也可能意味着当前环境的根目录(请参阅本答案开头的解释)
  • \n
  • ./\xe2\x80\x94 当前(所在目录page.html )目录,正好是/root这种情况\n\n
      \n
    • 值得一提的是,当引用当前目录中的某个文件时,./ 可以完全省略;所以./static/script.js相当于static/script.js
    • \n
  • \n
\n\n
\n\n

我从以下来源获得了这个答案所需的理解:

\n\n\n