<html>
<head>
<script>
var w;
var timer;
function win(obj) {
obj.disabled=true;
w = window.open('xjpwb五笔.zip',"","toolbar=no, location=no, directories=no, status=no, menubar=no");
timer = window.setInterval('ifWinClosed()',800);
}
function ifWinClosed(){
if(w.closed == true){
document.getElementById("click").disabled = false;
window.clearInterval(timer);
}
}
</script>
</head>
<body>
<input type="button" name="click" value="click" id="click" οnclick="win(this);" />
</body>
</html>
2. 另外的较好方案请看下面链接,大概原理是:在服务器端生成cookie发给client,浏览器设置定时器一直检测是否收到此特定的cookie,收到了说明server下载完毕,响应完成。此时解除遮罩。
http://geekswithblogs.net/GruffCode/archive/2010/10/28/detecting-the-file-download-dialog-in-the-browser.aspx
key code:
$(document).ready(function () {
$('#create_pdf_form').submit(function () {
blockUIForDownload();
});
});
var fileDownloadCheckTimer;
function blockUIForDownload() {
var token = new Date().getTime(); //use the current timestamp as the token value
$('#download_token_value_id').val(token);
$.blockUI();
fileDownloadCheckTimer = window.setInterval(function () {
var cookieValue = $.cookie('fileDownloadToken');
if (cookieValue == token)
finishDownload();
}, 1000);
}
function finishDownload() {
window.clearInterval(fileDownloadCheckTimer);
$.removeCookie('fileDownloadToken'); //clears this cookie value
$.unblockUI();
}
var response = HttpContext.Current.Response;
response.Clear();
response.AppendCookie(new HttpCookie("fileDownloadToken", downloadTokenValue); //downloadTokenValue will have been provided in the form submit via the hidden input field
response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", desiredFileName)); //desiredFileName will be whatever the resutling file name should be when downloaded
//Code to generate file and write file contents to response
response.Flush();