我有一个网页,可以在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 #3 test\test.js"></script>
但这并不能解决问题。此外,我注意到以下路径 正确解析(假设文件存在):
<script src="\\remote_machine\share\test\this is # test\test.js"></script>
任何人都可以在html的上下文中解释'#3'的含义吗?什么是推荐的修复方法?
编辑:我已尝试在上面的三个示例中将“#”替换为“%23”。前两个仍然破碎,第三个不再有效。如果我另外用%20替换所有空格,我得到相同的结果。答案 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>
<script src="file:////remote_machine/share/test/this%20is%20%23%20test/test.js"></script>
答案 2 :(得分:1)
尝试将#
替换为%23
。当你在这里时,我会用%20
替换你的空格