session.js

/*http://stackoverflow.com/questions/23766086/detect-when-an-iframe-is-loaded/*/

by guest271314

JavaScript

$(function () {
            var session = function (url, filename) {
                var iframe = $("<iframe>", {
                    "class": "dl-frame",
                        "width": "150px",
                        "height": "150px",
                        "target": "_top"
                }).one("load", function (e) {
                    $(e.target)
                        .contents()
                        .find("html")
                        .html("<html><body><div>" 
                              + $(e.target)[0].nodeName 
                              + " loaded" + "</div><br /></body></html>");
                    alert($(e.target)[0].nodeName 
                            + " loaded" + "\nClick link to download file");
                    return false
                });
        
                var _session = $.when($(iframe).appendTo("body"));
                _session.then(function (data) {
                    var link = $("<a>", {
                        "id": "file",
                            "target": "_top",
                            "tabindex": "1",
                            "href": url,
                            "download": url,
                            "html": "Click to start {filename} download"
                    });
                    $(data)
                        .contents()
                        .find("body")
                        .append($(link))
                        .addBack()
                        .find("#file")
                        .attr("download", function (_, o) {
                        return (filename || o)
                    })
                        .html(function (_, o) {
                        return o.replace(/{filename}/, 
                          (filename || $(this).attr("download")))
                    })
        
                });
                _session.always(function (data) {
                    $(data)
                        .contents()
                        .find("a#file")
...