2010-01-19 55 views
1

我一直在調試嵌入在我的應用程序中的IE實例中的文件路徑的奇怪問題。file://和文件名中的空格

我有以下的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:///),所以三個鏈接都可以工作。

有沒有人遇到過這類問題?任何想法如何解決它?

+0

您是否嘗試過編碼原始URL中的空格?或者使用onclick而不是href =「javascript:...」來觸發這個動作?當涉及到處理稍微不正常的URL時,IE有很長的古怪歷史,並且由於該服務是由系統DLL提供的,所以它並不意外我認爲嵌入式系統可能會使用舊版/替代版本 – Shog9 2010-01-19 14:44:15

+0

@ Shog9 - 感謝您的建議 - 我已經嘗試過'%20',現在我嘗試了'onclick' - 沒有運氣。最後5小時 – 2010-01-19 14:48:15

+0

@ Shog9 - pinging你以防萬一你好奇 - 我解決了下面的問題 – 2010-01-19 15:38:42

回答

1

原來這是由於HTML被指定一個URI Scheme(專有的),而在另一個被指定的圖像(File URI Scheme)。

更改它們都使用file:///修復了這個問題。

這就是說,我仍然不知道爲什麼沒有空格的路徑工作,而空間路徑沒有。如果有人知道爲什麼(最好有權威來源,如果有的話) - 隨意發佈它作爲答案,我會給你接受。

+0

Hrm ... IE很奇怪。方案是作爲一個可插入的處理程序來實現的,那麼我想它可能在執行例程時遇到了一個錯誤,這些處理程序提供瞭解析相對URL;否則,我懷疑係統例程具有相同的URL。 – Shog9 2010-01-20 20:45:01

0

出於測試的目的或許嘗試:

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

謝謝,但是我也試過這個,也沒有運氣! – 2010-01-19 15:35:57