#javascript引用路径中的字符

时间:2009-12-01 20:24:15

标签: html encoding

我有一个网页,可以在HEAD部分中输入几个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 个答案:

答案 0 :(得分:3)

除了散列和空格(分别应该分别编码为%23%20)的问题之外,你还有反斜杠。反斜杠不是URL中的目录分隔符。 URL与文件名不同,你所拥有的甚至没有文件名,它是UNC路径,用于本地区域的Windows网络。

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

如果必须尝试:

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

(两者都不适用于Safari。)

答案 1 :(得分:1)

您需要使用网址编码:

<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>

答案 2 :(得分:1)

尝试将#替换为%23。当你在这里时,我会用%20替换你的空格