2013-07-06 38 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没有任何其他垃圾,它会将它发送到可能会混淆它的浏览器。