※ ChatGPTを利用し、要約された質問です(原文:子ウィンドウを閉じる)
子ウィンドウを閉じる方法とファイルのダウンロード
このQ&Aのポイント
javascriptを使用してチェックボックスにチェックを入れると、子ウィンドウが開き、PDFファイルをダウンロードすることができます。
しかし、子ウィンドウを閉じるためのjavascriptコードが機能しない場合、親ウィンドウから子ウィンドウに閉じるボタンを追加することはできません。
また、親ウィンドウの方から子ウィンドウに文字を出させることもできません。
今、チェックボックスにチェックを入れると
javascriptで子ウィンドウを開き
pdfファイルをダウンロードできるようにしています。
*********************************
check.html でのjavascript
function down() {
if (document.f1.file001.checked == true) {
newwin = window.open( "down.php?date=data1" ,"_blank","width=100,height=100");
}
if (document.f1.file002.checked == true) {
newwin = window.open( "down.php?date=data2" ,"_blank","width=100,height=100");
}
if (document.f1.file003.checked == true) {
newwin = window.open( "down.php?date=data3" ,"_blank","width=100,height=100");
}
if (document.f1.file004.checked == true) {
newwin = window.open( "down.php?date=data4 ,"_blank","width=100,height=100");
}
}
************************************
子ウィンドウで開く down.php
<?php
//ダウンロードするファイル
$files = $_GET[date];
//ディレクトリ名
$datedir = "file/";
//拡張子
$filetype = ".pdf";
// ダウンロードさせる元ファイル
$filepath = "{$datedir}{$files}{$filetype}";
// 保存時のファイル名(デフォルト)
$filename = "{$files}{$filetype}";
// HTTPヘッダ送信
header("Content-length: " . filesize($filepath));
header("Content-type: application/pdf");
header("Content-Disposition: attachment; filename=\"{$filename}\"");
// ファイルを読み込んで出力
readfile($filepath);
fclose($filepath);
?>
***************************
これだとファイルのダウンロードはできるのですが
子ウィンドウが残ってしまいます。
javascript で
setTimeout("newwin.close()", 8000);
と子ウィンドウを閉じるようにしていても
閉じてくれません。
どうすれば、子ウィンドウを閉じることができるでしょうか?
また閉じれない場合は、子ウィンドウに閉じるボタンを
つけたいのですが down.php には
header関数でファイル出力をしている為
その後にhtmlを書いても無効になります。
親ウィンドウの方から子ウィンドウに文字を出させることは
できるでしょうか?
お礼
回答ありがとうございます。 1つ目は試してみます。 2つ目、setTimeout("newwin.close()", 8000);は newwin = window.open( "down.php?date=data1" ,"_blank","width=100,height=100"); の後に書いていました。 down()の後に書いてみます。 3つ目の試してみます。