Iframe.readyState does not work in chrome
You can use the onload
to signaling the load of the iframe
here is a simple example that working
var iframe = document.createElement("iframe");iframe.style.display = "none";// this function will called when the iframe loadediframe.onload = function (){ iframe.style.display = "block"; alert("loaded");};// set the src last.iframe.src ='http://www.test.com';// add it to the page.document.getElementById("one").appendChild(iframe);
Tested here:
http://jsfiddle.net/48MQW/5/
With src
loaded last.
http://jsfiddle.net/48MQW/24/
The downloadable file content doesn't trigger the readystatechange event handler or the onload event handler. This couse you can set a cookie in server side together the file content, and client side check this cookie periodically. For example:
server
response.cookie('fileDownloaded','true');response.header('attachment','your-file-name.any');//...write bytes to response...
client
var checker = setInterval(()=>{ if(document.cookie.indexOf('fileDownloaded')>-1){ alert('done'); clearInterval(checker); }},100);
Of course, you can use your framework to check the cookie value correctly, this is just a poc, not a safe cookie parser.
Please try this - you are really mixing dom and jQuery from line to line
var tId;function stopAnim() { // I stop the animation and show the page animation.hide(); progressBar.hide(); $('#page').show(); clearInterval(tId);}var iframe = $("<iframe />");iframe.css("visibility","hidden");iframe.on("readystatechange",function() { if (this.readyState == "complete" || this.readyState == "interactive") { stopAnim(); }});iframe.on("load",function() { // can possibly be deleted if (tId) { stopAnim(); }});iframe.attr("src","GetFile.aspx?file=" + fileName);$("body").append(iframe);tId = setInterval(function() { // update progress here}, 1000); //