代码之家  ›  专栏  ›  技术社区  ›  Dominic Rodger

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

  •  1
  • Dominic Rodger  · 技术社区  · 14 年前

    我在应用程序中嵌入的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
    

    如果将该地址粘贴到“开始”->运行中,则不会加载。

    更改地址以添加第三个 / 之后 file: ,像这样:

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

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

    有趣的是,非嵌入式IE保留了所有3个斜线( file:/// ,所以这三个链接都有效。

    有人遇到过这种问题吗?有什么解决办法吗?

    2 回复  |  直到 14 年前
        1
  •  1
  •   Dominic Rodger    14 年前

    原来是因为HTML被指定了一个 URI Scheme (一个专有的),以及在另一个图像中指定的图像 File URI Scheme )

    将两者都更改为使用 file:/// 解决了问题。

    也就是说,我仍然不知道为什么没有空间的路径有效,而有空间的路径无效。如果有人知道原因(如果有权威来源,最好是权威来源),请随意发布作为答案,我会给你接受。

        2
  •  0
  •   Fini    14 年前

    为了测试,也许可以尝试:

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