0

下面是来自 google chrome 的 fancybox iframe 的输出

这是来自 IE 的 fancybox ifrom 的输出 在此处输入图像描述

这是标记页面代码:

   <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背后的代码

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

为什么chrome只加载字节数组而不加载图像而IE可以显示图像以及如何修复此错误?

4

1 回答 1

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

于 2013-07-06T16:19:28.567 回答