我有一个简单的iframe
<iframe class="ifr" src="about:blank"></iframe>
附加了onload
处理程序。
$(".ifr").on('load',function (){
alert("iframe loaded")
});
还有2个按钮:
当我按下第一个按钮(设置为某个网站(没关注哪个)时 - 确实警告:
但是,当我将其设置为mypage(转储图片)时 - 图片 已下载但它不会触发onload
当我按下第二个按钮时,它会重定向到其代码为的页面:
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=/images/about_us_bkg.jpg");
Response.AddHeader("content-length", File.ReadAllBytes(Server.MapPath("~/images/about_us_bkg.jpg")).Length.ToString());
Response.TransmitFile(Server.MapPath("~/images/about_us_bkg.jpg"));
Response.End();
我认为它与Response.End();
有关。
问题:
为什么(如果有的话)受Response.End
的影响?我的意思是浏览器确实发送了回复(如图片所示)....所以?
如何解决这个问题,以便在图片加载(或iframe完成)时,它会触发onload事件?
p.s。我为什么需要它?
当用户按下“下载文件”时,在客户端 - 我显示加载动画,onload
假设删除“加载”动画。
答案 0 :(得分:1)
Why (if ever) it is affected by Response.End ? I mean the browser did send a response ( as a picture) , so the request is completed ....no?
我认为它与Response.End无关(除非它在删除Response.End时有效)
您可以使用Context.ApplicationInstance.CompleteRequest()
代替Response.End
(请参阅Correct usage of Asp.Net Response.TransmitFile and Response.End())
如何解决这个问题,以便在图片加载(或iframe完成)时, 它会触发onload事件吗?
我认为问题来自于iframe内容不是html文档或img元素。所以它不会触发任何加载事件。
您的aspx页面可能有两种不同的行为,这些行为在查询字符串参数上有所不同(或者只有两页):
src
的{{1}}属性。 document.aspx 构建一个包含img元素的整个html文档,iframe
将 img.aspx 希望这会有所帮助