2013-07-06 43 views
0

下面是的fancybox iframe的從谷歌瀏覽器 asp.net的fancybox負載圖像錯誤

輸出,這裏是從IE enter image description here

這裏的fancybox I來自的輸出是標記頁代碼:

<script type="text/javascript"> 
    $(document).ready(function() { 
     /* 
     * Examples - images 
     */ 

     $("[id*=img]").fancybox(); 

     $('.fancyframe').fancybox({ 
      'titlePosition': 'inside', 
      'type': 'iframe', 
      'width': 1024, 
      'height': 768 
     }); 
    }); 
</script> 
<a class="fancyframe" href="/imgLoader.aspx"><img src="/imgLoader.aspx"></a> 

這裏是背後imgLoader.aspx

的 代碼

爲什麼chrome只加載字節數組而不是圖像,而IE可以顯示圖像以及如何修復這個bug?

+0

文件'imgLoader.aspx'是否會返回除圖像外的其他內容? – JFK

+0

JFK:不,它只是返回該圖像的字節數組。 – User2012384

+0

通過添加Response.ContentType =「image/jpeg」;解決了問題。到響應頁 – User2012384

回答

1

因爲你只是發送一個字節數組,並沒有告訴瀏覽器它是什麼。

protected void Page_Load(object sender, EventArgs e) 
     { 
       byte[] a = Common.GetImage(); 
       Response.BinaryWrite(a); 
     } 

嘗試增加:

Response.ContentType = "image/jpeg"; 

在打電話前Response.BinaryWrite

編輯:僅供參考,我平時也寫出來的圖像之前調用Response.Clear(),然後Response.End後。

所以:

protected void Page_Load(object sender, EventArgs e) 
     { 
       Response.Clear(); 
       byte[] a = Common.GetImage(); 
       Response.BinaryWrite(a); 
       Response.End(); 
     } 

爲什麼?只是爲了確保ASP.NET沒有任何其他垃圾,它會將它發送到可能會混淆它的瀏覽器。