Я пытался найти решение, но не смог получить никакого соответствующего ответа.Я хочу закрыть текущее всплывающее окно, как только в браузере откроется всплывающее окно загрузки файла.Например, в приведенном ниже исходном коде, если я напишу «window.close ()» после ajax-запроса, всплывающее окно загрузки файла никогда не отображается.
Но как только я удалю эту строку, загрузка файла будет работать, но как мне закрыть текущее всплывающее окно?
Мой пример использования:
main.php
<script>
window.open('popup.php','redirect','width=500,height=500');
</script>
popup.php
<body>
<script type="text/javascript" src="jquery-1.8.3.min.js"></script>
<script>
var url = 'download.php';
var output_type = 'xls';
params = "function=execute_cache&output="+output_type;
$.ajax({
type: "POST",
url: url,
data: params,
success: function(response, status, request) {
var disp = request.getResponseHeader('Content-Disposition');
if (disp && disp.search('attachment') != -1) {
var form = $('<form method="POST" action="' + url + '">');
$.each(params, function(k, v) {
form.append($('<input type="hidden" name="' + k +
'" value="' + v + '">'));
});
$('body').append(form);
form.submit();
}
}
});
window.close();
</script>
</body>
download.php
<?php
$handle = fopen("file.txt", "w");
fwrite($handle, "text1.....");
fclose($handle);
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename('file.txt'));
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize('file.txt'));
readfile('file.txt');
exit;
Примечание: Я не могу использовать функцию setTimeout для автоматического закрытия всплывающего окна, потому что я не знаю, сколько времени будет загружаться файл.Поэтому я не могу дать максимальное время.Код, показанный в download.php, не является реальным кодом.На самом деле, я собирал огромные данные и генерировал XLS.
Я просто хочу автоматически закрыть текущее всплывающее окно, как только пользователю будет показано всплывающее окно загрузки файла.