子ウィンドウを閉じる方法とファイルのダウンロード

この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を書いても無効になります。 親ウィンドウの方から子ウィンドウに文字を出させることは できるでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • auty
  • ベストアンサー率58% (284/486)
回答No.1

次の3つを確かめてみてください。 1. "_blank" ではなく、"_self"でやってみる。 2. setTimeout("newwin.close()", 8000);は、down()の最後に書いてあるのでしょうか。 3. 子ウィンドウではなく親ウィンドウに閉じるボタンを付けてみてください。 ------------------------------------------------------------ <script language="javascript"> <!-- function closeWin() { if( !newwin.closed ) { newwin.close(); } else { alert("すでに閉じられています。"); } } //--> </script> <input type="button" value="Close Window" onclick='closeWin();' /> ------------------------------------------------------------

shuna08
質問者

お礼

回答ありがとうございます。 1つ目は試してみます。 2つ目、setTimeout("newwin.close()", 8000);は newwin = window.open( "down.php?date=data1" ,"_blank","width=100,height=100"); の後に書いていました。 down()の後に書いてみます。 3つ目の試してみます。

関連するQ&A

  • 連続ダウンロードのエラー

    pdfファイルの連続ダウンロードを作っています。 複数ファイルをチェックボックスで指定して 指定した数のファイルをダウンロードさせるようにしているのですが 全部のファイルがダウンロードできません。 複数ファイルの選択 download.html チェックボックスでファイルの複数選択 それをJavaScriptでオンになっていたらダウンロードさせる。 window.open で呼び出す先は <iframe> ============================= <script language="JavaScript"> <!-- function down() { if (document.f1.file001.checked == true) { newwin = window.open("1.php","my1"); } if (document.f1.file002.checked == true) { newwin = window.open("2.php","my2"); } if (document.f1.file003.checked == true) { newwin = window.open("3.php","my3"); } if (document.f1.file004.checked == true) { newwin = window.open("4.php","my4"); } if (document.f1.file005.checked == true) { newwin = window.open("5.php","my5"); } } //--> </script> 中略 <form name="f1"> <input type="checkbox" value="on" name="file001"> <input type="checkbox" value="on" name="file002"> <input type="checkbox" value="on" name="file003"> <input type="checkbox" value="on" name="file004"> <input type="checkbox" value="on" name="file005"> <input type="button" value="ダウンロード" onclick="down()"> </form> 中略 <iframe src="index.html" name="my1" width="5" height="3" style="width:1px;height:1px;visibility:hidden;"> <iframe src="index.html" name="my2" width="5" height="3" style="width:1px;height:1px;visibility:hidden;"> <iframe src="index.html" name="my3" width="5" height="3" style="width:1px;height:1px;visibility:hidden;"> <iframe src="index.html" name="my4" width="5" height="3" style="width:1px;height:1px;visibility:hidden;"> <iframe src="index.html" name="my5" width="5" height="3" style="width:1px;height:1px;visibility:hidden;"> ====================================== ダウンロード用のファイル 1.php <?php // ダウンロードさせる元ファイル $filepath = "filepdf/file01.pdf"; // 保存時のファイル名(デフォルト) $filename = "ファイル1.pdf"; // HTTPヘッダ送信 header("Content-length: " . filesize($filepath)); header("Content-type: application/pdf"); header("Content-Disposition: attachment; filename=\"{$filename}\""); // ファイルを読み込んで出力 readfile($filepath); ?> ================================== 上記の用にソースを書いて複数ファイルのダウンロードを行っていますが、 1個ずつ選択した時はダウンロード成功 2個選択した時、2個目がダウンロードしない 3個以上選択した時、ダウンロードできないファイルが出てくる。 チェックを同じにして、数回試すと その度にダウンロードされないファイルが違っている。 なぜダウンロードされないファイルが出てくるのかがわかりません。 複数ファイルの連続ダウンロードでは、ダウンロードできるファイルの サイズに限りがあるとか、何かあるのでしょうか?

    • ベストアンサー
    • PHP
  • 子ウィンドウでウィンドウサイズ固定にしてtarget=

    HPを作っていて親ウィンドウに↓のように <script language="JavaScript"> <!-- function winopen(url){ win=window.open(url,"host","scrollbars=1,width=780,height=480"); } //--> </script> ~略~ <a href="dougu/keito.html" target="_blank" onClick="Javascript:winopen('dougu/keito.html');return false;"><img src="img/item-keito10.gif" width="50" height="38" border="0"> ウィンドウサイズを固定してtarget="_blank"で開いてさらにその子ウィンドウでも同じようにリンクを張って <script language="JavaScript"> <!-- function winopen(url){ win=window.open(url,"host","scrollbars=1,width=780,height=480"); } //--> </script> ~略~ <a href="../wash.html" target="_blank" class="style1" onClick="Javascript:winopen('../wash.html');return false;">こちら</a> とtarget="_blank"でウィンドウサイズを固定しして開きたいのですが同じウィンドウで開いてしまいます。 説明の仕方が分かりづらくてすみません。分からないようでしたら補足いたします。

  • 子ウィンドウから子ウィンドウ

    子ウィンドウから文字をクリックして、 同じ大きさの子ウィンドウを開かせたいのですが、 下記のJavaScriptでは子ウィンドウが開きません。 子ウィンドウから子ウィンドウを開かせるには どのようにしたらいいのでしょうか? ご回答宜しくお願い致します。 head内は、 <script type="text/javascript"><!-- function subwin(file){ window.open(file,"subwin","resizable=1, width=600, height=500, scrollbars=yes"); } //--></script> body内の呼び出し部分は、 <a href="ファイルのURL" onclick="subwin('ファイルのURL'); return false;">

  • window,open

    ★=window.open("▲","☆","■") で★と☆がウィンドウの名前と書いてあったのですが 区別がわかりません これは開いたウィンドウの名前なのでしょうか? それともこのスクリプトがあるウィンドウをさすのでしょうか? あとウィンドウの名前のつけ方も教えていただけたら うれしいです 具体的には newWin=window.open("control,html","newWIn","width =240.height=120"); と書いてありました

  • 画像にオンマウスで子ウインドウを開きマウスアウトで子を閉じるには

    是非教えてください。 indexにある画像にオンマウスすると、子ウインドウが開き、画像からマウスアウトすると、子ウインドウが閉じるというスクリプトを作りたいです。 <td height="110" width="110" colspan="2" align="center"> <A HREF="#" onmouseover="mywin=window.open('E_sakashita.htm','','width=250,height=400');" onmouseout="window.close();"> <IMG SRC="image/E_sakashita.jpg" WIDTH="142"HEIGHT="106" ALIGN="BOTTOM" BORDER="0" NATURALSIZEFLAG="3"> </A> </td> としたところ、画像からマウスアウトすると、「ウィンドウは、表示中のWebページによりとじられようとしています。このウィンドウを閉じますか?」のメッセージが出ます。 マウスアウトの時には、子ウインドウだけを閉じたいのですが、どのように記述したらいいですか?

  • サブウィンドウに変数を渡す方法・・・

    ブウィンドウを開く時に親ウィンドウからフォームの値を変数として渡し スプリクトを実行したいのですがやり方が解りません。 どなたか教えて頂けませんでしょうか? 下記のソースだとうまくいきません newWin = window.open("xxx.php3","SubWindow","left=400,top=100,width=300,height=400");

  • 指定サイズウィンドウが開かない

    ビルダーでサイトを作成しているのですが JAVAスクリプトを使用したサイズ指定ウィンドウが ビルダーのプレビューではちゃんと開くのにFTPツールで転送し、ネット上で開こうとすると開きません。 タグの書いてあったサイトのサンプルでもちゃんと開きます。 タグは <A href="javascript:void(0);" onClick="window.open('file:///○○.html', 'newwin', 'width=900,height=600')" ><IMG src="○○.gif" width="68" height="79" border="0"></A> です。これを<BODY></BODY>に埋め込んでいます。 ○○はファイル名です。一体何処が悪いのでしょうか? 教えてください。

  • 別ウィンドウをだしたいのですが、、、

    直接ウィンドウにリンクしたいのすが、、、 on (release) { getURL("http://www.●●●●.com/●●●●/●●●●/●●●●.html", "window.open('●●●●.html', '_blank', 'width=450,height=470')"); } 上にブラウザーのメニューの付いた別ウィンドウになってしまって、ウインドウのみになりません。 よろしくお願いします!!

    • ベストアンサー
    • Flash
  • ポップアップから親ウィンドウへリンクを飛ばす方法

    ポップアップしたページに、Flashが埋め込まれている状態で、そのFlash内のボタンをクリックしたら親Windowのページが切り替わるようにしたいのですが、可能でしょうか。 【親:index.html】 <SCRIPT language="JavaScript"> function popup_modeless(url){ var newWin = window.open(url,"pop","width=800, height=480"); newWin.focus(); } </SCRIPT> <a href="" onClick="popup_modeless('pop.html')">開く</a> 【子:pop.html内のFlash】 リンク用のMCを貼り付け、そこに以下のスクリプト on(release){ getURL("jump.html","pop"); } では子window内に表示してしまいました。 ヘルプを見ると、getURLのwindowオプションには任意の名前は認められていないようで、_self,_blank,_parent,_topしか記述されていませんでした。 _parentでも同様に子window内での表示になりました。 Flash内から親Windowに表示させるにはどうすればいいのでしょうか。 よろしくお願いいたします。 ※ActionScript2.0、CS3です。

    • ベストアンサー
    • Flash
  • PHPで複数ファイルのダウンロード

    はじめまして、PHPについて質問させていただきます。 PHPでファイルを複数ダウンロードできるようしたいと思っています。 色々調べ、header関数を使用し、以下のように記述すると ファイルのダウンロードは成功しました。 /*****************************************/ // ダウンロードさせる元ファイル(絶対パス) $filepath = 'test_01.pdf'; // 保存時のファイル名(デフォルト) $filename = 'download001.pdf'; // HTTPヘッダ送信 header("Content-length: " . filesize($filepath)); header("Content-type: application/pdf"); header("Content-Disposition: attachment; filename=\"{$filename}\""); // ファイルを読み込んで出力 readfile($filepath); /*****************************************/ 一つのファイルのダウンロードに成功したので、 次に複数のファイルを順番にダウンロードをさせる為にループ処理をしました。 /*****************************************/ //配列 複数ファイル $downfile = array("test_01","test_02","test_03"); //データ数 $max = count($downfile); // ダウンロードさせるディレクトリ(絶対パス) $filepath = "/home/sites/www.eshop-himawari.com/web/test_nihon/form_down/file/"; // 保存時のファイル名(デフォルト) $filename = "download"; $filetype = ".pdf"; $kazu = 1; //ループ処理 for( $i = 0; $i < count( $max ); $i++ ){ $downpath = $filepath.$downfile[$i].$filetype; $filename = $filename.$kazu.$filetype; $kazu = $kazu++; // HTTPヘッダ送信 header("Content-length: " . filesize($downpath)); header("Content-type: application/pdf"); header("Content-Disposition: attachment; filename=\"{$filename}\""); // ファイルを読み込んで出力 readfile($downpath); // $fp = fopen( "$downpath", "rb" ); // @fpassthru( $fp ); } /*****************************************/ しかし実行すると最初のファイルはダウンロードしますが 2つ目からのファイルはダウンロードされませんでした。 きちんとループ処理をされて、2つ目以降のファイルをダウンロード するには、どうすればいいのでしょうか?

    • 締切済み
    • PHP

専門家に質問してみよう