代码之家  ›  专栏  ›  技术社区  ›  Odrade

#javascript引用路径中的字符

  •  1
  • Odrade  · 技术社区  · 16 年前

    我有一个网页,它在头部分插入了几个javascript文件。其中一个文件的路径是动态生成的,我发现一些包含字符的路径存在问题。例如,以下路径解析不正确,因此不会加载.js文件(即使我已经验证它存在):

    <script src="\\remote_machine\share\test\this is #3 test\test.js"></script>
    

    我想知道在这种情况下,“3”的特殊含义是什么。我尝试用等价的HTML实体替换字符,比如:

    <script src="\\remote_machine\share\test\this is &#35;3 test\test.js"></script>
    

    但这并不能解决问题。此外,我注意到以下路径 正确解析(假设文件存在):

    <script src="\\remote_machine\share\test\this is # test\test.js"></script>
    

    有人能解释一下在HTML上下文中“3”的含义吗?建议的修复方法是什么?

    编辑:在上面的三个示例中,我都尝试将“”替换为“%23”。前两个仍然是坏的,第三个不再有效。如果我另外用%20替换所有空格,我会得到相同的结果。

    3 回复  |  直到 16 年前
        1
  •  3
  •   bobince    16 年前

    除了散列和空格的问题(实际上应该编码为 %23 %20 分别),你也有反斜杠。反斜杠不是URL中的目录分隔符。URL与文件名不同,您得到的文件甚至没有文件名,它是本地Windows网络的UNC路径。

    在URL中嵌入UNC路径没有标准方法;Windows网络在Web上没有位置,您不应该在网页中包含对Windows网络上资源的引用。JS需要在一个适当的Web服务器上,您可以使用普通的HTTP URL引用该服务器。

    如果你 必须 尝试:

    file://remote_machine/share/test/this%20is%20%23%20test/test.js     # works on IE, Chrome, Opera
    file://///remote_machine/share/test/this%20is%20%23%20test/test.js  # works on IE, Firefox
    

    (两者都不适用于野生动物。)

        2
  •  1
  •   David Hedlund    16 年前

    尝试替换您的 # 具有 %23 .当你在那里的时候,我会用 %20

        3
  •  1
  •   Gumbo    16 年前

    您需要使用URL编码:

    <script src="\\remote_machine\share\test\this%20is%20%23%20test\test.js"></script>
    

    并尝试 file URI scheme :

    <script src="file:////remote_machine/share/test/this%20is%20%23%20test/test.js"></script>