如何在jQuery中完成加载后正确关闭窗口?

时间:2013-02-26 09:38:51

标签: javascript jquery window

这个问题不是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。

2 个答案:

答案 0 :(得分:1)

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

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

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

});

答案 1 :(得分: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();