2

这个问题不是关于jQuery.fn.ready().

我打开一个window.open()用于文件下载的新窗口,并希望在下载开始后关闭该窗口。大多数浏览器会继续下载文件,所以我不需要等到下载完成。

问题是当我关闭窗口时jQuery.fn.ready(),文件下载被立即跳过。

这是我尝试但失败的方法:

var w = window.open(...);

$(w).load(); // failed
$(w.document).load(); // failed
$(w.document).contents().load(); // failed
$(w.document).contents().find('body').load(); // failed

编辑:

添加 jsFiddle 以方便演示:http: //jsfiddle.net/vicary/Yjkt8/1

编辑2:

根据 Jonny Sooter 的回答,使用工作版本http://jsfiddle.net/vicary/Yjkt8/4更新了 jsFiddle 。

4

2 回答 2

1

如果你知道下载时间,你可以试试这个。

jQuery(window).load(function () {
    alert('page is loaded');

    setTimeout(function () {
        alert('page is loaded and 1 minute has passed');   
    }, 60000);

});
于 2013-02-26T10:00:37.293 回答
1
$(function() {
    $('button').click(function() {
        var w = window.open(),
            d = w.document,
            s = d.createElement("script");

        s.type = "text/javascript";
        s.innerHTML = ";(function(){window.close();})();";

        d.getElementsByTagName("head")[0].appendChild(s);
    });
});

更新:

对于 chrome,您可以尝试:

window.open('', '_self', ''); //bug fix
window.close();

或尝试:

window.self.close();
于 2013-02-26T17:24:06.820 回答