我一直在调试我的应用程序中嵌入的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:///
),因此所有三个链接都有效。
有没有人遇到过这类问题?任何想法如何解决它?
答案 0 :(得分:1)
原来这是由于HTML被指定为URI Scheme(专有的),而图像是在另一个(File URI Scheme)中指定的。
更改它们以使用file:///
解决问题。
那就是说,我仍然不知道为什么没有空间的路径有效,而带空格的路径却没有。如果有人知道为什么(最好有一个权威来源,如果有的话) - 随意发布它作为答案,我会给你接受。
答案 1 :(得分:0)
为了测试或许尝试:
foobar('file:///C:/path+spaces/someotherimage.bmp');