最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

jquery - Can you use JavaScript to detect a file download window created server side? - Stack Overflow

programmeradmin1浏览0评论

I have a jQuery plugin I use to dynamically create and render a form on a default.aspx asp page, then submit it. The page it gets submitted to is a pdf.aspx page. The page builds a PDF then uses Response.Write to write the file (application/pdf) to the browser. I use the same method to render XLSX files to the browser as well. It works really great, but I need a callback or some event to tell the button when to stop spinning. This prevents the user from continuously clicking the Excel or PDF buttons. Does anyone know a way to detect the file dialog window when it was not created using JavaScript? I am also open to other methods of callback from the server side as well.

I have a jQuery plugin I use to dynamically create and render a form on a default.aspx asp page, then submit it. The page it gets submitted to is a pdf.aspx page. The page builds a PDF then uses Response.Write to write the file (application/pdf) to the browser. I use the same method to render XLSX files to the browser as well. It works really great, but I need a callback or some event to tell the button when to stop spinning. This prevents the user from continuously clicking the Excel or PDF buttons. Does anyone know a way to detect the file dialog window when it was not created using JavaScript? I am also open to other methods of callback from the server side as well.

Share Improve this question edited Apr 29, 2022 at 8:26 Brian Tompsett - 汤莱恩 5,89372 gold badges61 silver badges133 bronze badges asked Jun 16, 2010 at 16:12 ZachoZacho 86112 silver badges20 bronze badges 3
  • See stackoverflow./questions/666468/… – Crescent Fresh Commented Jun 16, 2010 at 17:00
  • That solution sounds great, but I am unclear as to the onload piece. Whether the iframe is loaded on page load, or dynamically created in JS, the onload happens before the form is even submitted. What am I missing? – Zacho Commented Jun 16, 2010 at 19:58
  • possible duplicate of Detect when browser receives file download – Liam Commented Apr 24, 2014 at 9:05
Add a ment  | 

1 Answer 1

Reset to default 5

The way I do that was suggested in response to a question I asked here a while ago by T.J. Crowder. I can't find the response from the last time I wrote this up because the Stackoverflow "search" facility is so incredibly lame, so I'll probably type in a blog post. The basic idea is that your client code (Javascript) should append an extra parameter when it submits the request for the download. The parameter should contain some generated random string (probably just the current timestamp is good enough). The server then looks for that parameter, and when it's preparing the response with the download file it also sets a cookie and gives it that random value.

Right after the submit (or right before; it doesn't really matter), the Javascript code should start an interval timer with a routine to look at the value of document.cookie and see if it contains that random string. As soon as the cookie does contain that string, then you know that the server has sent back its response and that the file download dialog has been presented.

发布评论

评论列表(0)

  1. 暂无评论