Iframe.readyState does not work in chrome Iframe.readyState does not work in chrome asp.net asp.net

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); //