【问题标题】:iframe in IE going blankIE中的iframe变为空白
【发布时间】:2011-12-20 22:27:00
【问题描述】:

我有一个包含显示 pdf 的 iframe 的 aspx 页面(我有在 iframe 中显示 pdf 的 ashx 处理程序),我还有一个下载按钮,它的 onclick 流与浏览器不同的 pdf 作为附件。 下载到浏览器代码:(这是在 ashx 处理程序中)

    byte[] bytes =  // get byte array from table
    Response.Buffer = false;
    Response.Clear();
    Response.ClearContent();
    Response.ClearHeaders();
    Response.ContentType = "application/pdf";
    // [optional]
    Response.AddHeader(
           "Content-Disposition",
           string.Format("attachment; filename={0}", attachmentName)
     );
    Response.OutputStream.Write(bytes, 0, bytes.Length);
    Response.End();

此代码工作正常,但是在将此响应发送到浏览器后,我的 iframe 变为空白,我必须刷新页面才能再次看到它。我尝试了大多数解决方案

  1. http://adamyoung.net/IE-Blocking-iFrame-Cookies
  2. http://forums.asp.net/p/1036628/1433536.aspx

但它们都不起作用。 iframe 在 chrome 和 FF 中表现良好。 注意:如果我使用 asp:hyperlink 下载东西到我的 ashx 并设置 target="_blank" 它在 IE 中工作正常,但我需要一些服务器端处理,因此我不能使用这种方法。

【问题讨论】:

  • 你用的是什么版本的IE?你试过什么版本?
  • 我用的是 IE9,我试过 IE 7,8。

标签: c# asp.net pdf iframe


【解决方案1】:

虽然 Chrome 和 FF 将页面留在那里,但这确实是有道理的。

您正在回发到服务器,然后清除整个输出,将文件放入流中并发送。从技术上讲,我会说 IE 在空白页面方面是正确的。

这是假设您的下载按钮在 iframe 中?

我会尝试的解决方案是将下载链接放在另一个 iFrame 中,或者有另一个下载它的页面,当你按下一个链接时,它会打开一个只输出文件的新页面。所以窗口闪烁,但随后消失,并出现一个保存对话框按钮。但是,弹出窗口拦截器可能会尝试阻止此操作。

【讨论】:

  • 下载按钮不在 iframe 中,按钮在 aspx 页面上。下载按钮调用 ashx 处理程序,该处理程序对浏览器作出响应。我不能有链接而不是按钮,因为我必须进行一些服务器端处理(以确定必须将哪个 pdf 文件发送到客户端)并将查询字符串参数传递给处理程序以获得正确的 pdf。
  • 那么为什么不按照我的建议将按钮放在 iframe 中呢?
  • 感谢您的回答,现在我正在使用另一个窗口进行下载。由于滚动,在 iframe 中放置一个按钮会使用户变得复杂..
猜你喜欢
  • 2011-05-25
  • 1970-01-01
  • 1970-01-01
  • 2014-08-01
  • 2018-01-23
  • 2012-03-02
  • 2017-01-18
  • 1970-01-01
  • 2021-09-15
相关资源
最近更新 更多