2

我一直在学习编写 HTML 和 javascript 代码,并且在使用 IP 地址访问页面时使用相对路径加载脚本和 css 时遇到了一个稍微令人困惑(并且非常令人沮丧的问题)。Chrome 30.0.1599.69 和 IE10 似乎都没有问题,但 Firefox 24 可以,而且只有在使用 IP 地址而不是名称时。

文件夹结构为:

Dashboard/index.html
Dashboard/css/dashboard.css
Dashboard/js/dashboard.css
Dashboard/leaflet/
etc

HTML 看起来像:

<!DOCTYPE html>
  <html>
  <head>
    <title>Dashboard</title>
    <meta charset="utf-8" />
    <!-- css loading -->
    <link rel="stylesheet" href="leaflet/leaflet.css" />
    <link rel="stylesheet" href="css/dashboard.css" /> 
    <!-- script loading -->
    <script src="leaflet/leaflet.js"></script>
    <script src="js/dashboard.js"></script>
    <script src="d3.v3/d3.v3.js"></script>
  </head>
  <body>
     etc...

http://localhost:8888/Dashboard/在所有浏览器中(在浏览器栏中)通过 localhost(使用 python simpleHTTPServer)打开上述内容时效果很好。当我将 Dashboard 文件夹和子文件夹移动到C:\Inetpub\wwwroot\Windows Server 2003/IIS 6.0 中的默认网页区域 ( ) 并尝试访问该页面时,它也可以正常工作 - 直到我使用 Firefox 使用 IP 地址尝试它。

例如,http://mywebpage/Dashboard/index.html调出页面并正确加载所有 css、js 文件等。使用控制台我可以看到:

[10:57:32.081] GET http://mywebpage/Dashboard/css/dashboard.css [HTTP/1.1 200 OK 10ms]

当我尝试使用 IP 时(因为名称仅在我们的网络上解析,并且我想在外面显示页面)我在 Firefox 中收到以下错误:

[10:57:25.135] GET http://XXX.XXX.XXX.XXX/css/Dashboard.css [HTTP/1.1 404 Not Found 7ms]

不仅如此,Firefox 地址栏中的 URL 看起来也不同: XXX.XXX.XXX.XXX/Dashboard\index.html#< 注意反斜杠并#出现。

我在 Chrome 或 IE10 中没有这个问题。因此,当使用 IP 地址访问时,Firefox 看起来并不相对于 html 文档的路径,而是相对于服务器,而 Chrome 和 IE10 看起来确实相对于页面,无论使用名称或 IP。Firefox 还决定显示一个反斜杠并#在末尾添加一个。

我发现使用文件夹名称对链接进行编码似乎确实可以解决 Firefox IP 地址问题,<link rel="stylesheet" href="Dashboard/leaflet/leaflet.css" />但是它会弄乱 Chrome,因为文件夹名称无论如何都会添加到网络路径中(在控制台中看到) http://XXX.XXX.XXX.XXX/Dashboard/Dashboard/leaflet/leaflet.css:。为什么 Firefox 会有这样的行为,为什么只在使用 IP 时?

-更新-

我已经在同事的机器上对此进行了测试,但令人沮丧的是,这种行为没有被复制,所以我开始认为我的 Firefox 安装有问题。

-更新2-

重新安装后,Firefox 的行为与 localhost、服务器名和对网页的 IP 访问一样。所以希望这将不再是一个问题!我仍在使用相对路径,前导“/”使其在服务器的根文件夹中查找并影响使用 localhost 进行调试。

4

2 回答 2

0

以您现在拥有代码的方式,它将始终leaflet在当前文件夹(而不是根/基本文件夹)内寻找一个名为等的文件夹。尝试将其更改为:

<!DOCTYPE html>
  <html>
  <head>
    <title>Dashboard</title>
    <meta charset="utf-8" />
    <!-- css loading -->
    <link rel="stylesheet" href="/leaflet/leaflet.css" />
    <link rel="stylesheet" href="/css/dashboard.css" /> 
    <!-- script loading -->
    <script src="/leaflet/leaflet.js"></script>
    <script src="/js/dashboard.js"></script>
    <script src="/d3.v3/d3.v3.js"></script>
  </head>
  <body>
于 2013-10-14T18:27:10.690 回答
0

重新安装后,Firefox 的行为与 localhost、服务器名和对网页的 IP 访问一样。所以希望这将不再是一个问题!我仍在使用相对路径,前导“/”使其在服务器的根文件夹中查找并影响使用 localhost 进行调试。

于 2013-10-14T20:41:36.157 回答