2012-04-15 100 views
20

爲了更方便地使用Javascript處理客戶端上的各種圖像,我在服務器端編寫了一個函數(在VB 2010中),將文件轉換爲發送給客戶端的base64字符串。Internet Explorer和Base64圖像顯示

當我在Internet Explorer 8.0中使用3種不同的圖像,1幅肖像和2幅風景嘗試它時,我意識到只有肖像圖像完全顯示,同時兩幅風景圖像都被截斷(我可以看到只是上部的圖片)。

我以爲我的轉換功能有一個錯誤,直到我嘗試使用Firefox的本地頁面:Firefox的每個圖像都完美顯示。

所以有我的問題:這是一個着名的Internet Explorer的bug嗎?如果答案是肯定的,那麼對於這個衆所周知的bug是否有一個衆所周知的補救措施?

+3

鏈接到您的測試頁面? – Marcel 2012-04-15 04:30:23

+3

這是一個衆所周知的錯誤,IE對所有URI都有一個字符限制,這意味着數據方案URI將會截斷一些內容。 – 2012-04-15 04:31:04

+0

除了Andrew Dunn的評論之外,您最好還是使用文件系統或數據庫(如SQL 2008專用於服務映像)。我不認爲你會接近壓縮的協議,如jpg,gif,png。另外我發現使用虛擬路徑提供程序來提供來自dB的圖像比文件系統慢得多,所以我建議重新考慮您的設計。 – 2012-04-15 05:19:48

回答

14

IE8只能執行最大32kb的Base64 URI映像。這是一個令人討厭的限制,但你仍然可以通過圖標/等。請記住,無論如何,Base64編碼圖像平均多出33%的數據,所以它是......呃,你知道,使用你的判斷。

任何有興趣,它也可能使在IE6/7,這些工作(不,我想補充的是32KB的限制...):http://venodesigns.net/2010/06/17/you-got-your-base64-in-my-css/