转储文件时,iframe onLoad不会触发?
我有一个简单的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事件?
ps为什么我需要它?
当用户按下“下载文件”时,在客户端-I显示加载动画,而onload
假设删除“加载”动画。
JSBIN
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
(请参阅Asp.Net Response.TransmitFile的正确用法)和Response.End() )
如何解决这个问题,以便在图片加载(或iframe完成)时,它会触发onload事件?
我认为问题来自于你的iframe内容不是html文档或img元素。 所以它不会触发任何加载事件。
您可能让您的aspx页面在查询字符串参数上有两种不同的行为(或者只有两页):
- 一个服务于图像的人(比如img.aspx ,你已经拥有的那个)
- 一个,比如document.aspx ,哪个url将用作你的
iframe
src
属性。 document.aspx构建一个包含img元素的整个html文档,其中src
将是img.aspx
希望这会有所帮助