file://和文件名中的空格

时间:2010-01-19 14:39:04

标签: jquery internet-explorer

我一直在调试我的应用程序中嵌入的IE实例中文件路径的一个奇怪问题。

我有以下JavaScript / jQuery:

<script type="text/javascript">
function foobar(src) {
  $("img").attr("src", src);
}
</script>

我的DOM包含一个img标记:

<img src="loading.jpg" />

我有以下三个链接,在激活时调用foobar

<a href="javascript:foobar('file:///C:/nospaces/someimage.bmp');">without spaces</a>
<a href="javascript:foobar('file:///C:/path spaces/someotherimage.bmp');">with spaces</a>
<a href="javascript:foobar('file:///C:/path%20spaces/someotherimage.bmp');">with spaces</a>

所有这些链接在IE / FF / Chrome中运行良好,但只有第一个链接适用于我正在使用嵌入式IE实例的应用程序。

如果我在点击第二个链接后右键单击图像(其中一个不起作用,第三个链接给出完全相同的结果),我可以看到图像URL是这样的:

file://C:\path%20spaces\someotherimage.bmp

如果我将该地址粘贴到Start-&gt; Run。

,则无法加载

更改地址以在/之后添加第三个file:,如下所示:

file:///C:\path%20spaces\someotherimage.bmp

允许开始 - >运行以打开图像。

有趣的是,非嵌入式IE保留所有3个斜杠(file:///),因此所有三个链接都有效。

有没有人遇到过这类问题?任何想法如何解决它?

2 个答案:

答案 0 :(得分:1)

原来这是由于HTML被指定为URI Scheme(专有的),而图像是在另一个(File URI Scheme)中指定的。

更改它们以使用file:///解决问题。

那就是说,我仍然不知道为什么没有空间的路径有效,而带空格的路径却没有。如果有人知道为什么(最好有一个权威来源,如果有的话) - 随意发布它作为答案,我会给你接受。

答案 1 :(得分:0)

为了测试或许尝试:

foobar('file:///C:/path+spaces/someotherimage.bmp');