ここから本文です

phpからウインドウをクローズする方法について

kas********さん

2012/11/2915:08:57

phpからウインドウをクローズする方法について

質問
①phpにはウインドウをクローズする方法が無いらしいので、phpの記述の中で、
javascriptの window.close(); を実行できないでしょうか?
②仮に①のようなことができたとして、「更新処理」⇒「ウインドウのクローズ」の
ながれて実行されている場合、更新処理が終了していないのにウインドウがク
ローズされてしまう可能性があるのでしょうか?

【①の補足】
(1)因みに、htmlの記述の中でphpを利用したいときは、<?php ~ ?>で括れば
いいのと同じような理屈でできないものか。
(2)phpからhtmlを呼出、phpからクローズ目的で呼び出されたとき、javascriptの
window.close(); を実行するようにはできます。←これはできればやりたくない
また、②の問題は残る。
【利用している言語等】
(1)php/html/css/smarty/javascript/postgresql
(2)htmlとphpは別々に構築。phpから「echo $this->fetch(xxxxx.tpl);」にて
htmlを呼び出しています。(smarty利用)

補足目的:ある情報を一覧表示しているメイン画面から、メール配信したい行を必要に応
じて複数選択(チェックボックス利用)し、OKボタン押下で別プログラムの確認画面(メイン画
面で選択した行のみ一覧表示、送信条件など変更可)呼出され、OKボタンを押すと
実配信します。また確認画面では【キャンセル】ボタンもあり押すと、html中のwindow
.close(); が実行。行いたいのは、確認画面でメール送信後、この確認画面をクロ
ーズさせたい。

閲覧数:
4,698
回答数:
2
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

nic********さん

2012/11/3000:10:05

> 更新処理が終了していないのにウインドウがクローズされてしまう可能性があるのでしょうか?
> ②の問題は残る
そんな可能性はないので問題は残らない。ユーザーにHTMLが届いているということは、PHPの処理は全て完了している。
処理が終わっていない段階で途中段階のHTMLを先にユーザーに送りつける方法も存在するが、専用の関数を呼び出す必要がある。
だいたい、あなたは「echo $this->fetch(xxxxx.tpl);」で画面に出力しているんだろうが。ユーザーが1文字でも画面を受け取っていると言う事は、当然これ以前に書かれた処理は全て完了しているに決まっている。

質問した人からのコメント

2012/11/30 11:44:37

nicolish_nicolishさん、shimix703さんありがとうございます。
①メール配信後に配信画面をクローズしたいについては結局、php
側からhtml内に記述したjavascript(window.close());を メール配信
後で実行(フラグを設置)するようにしました。
②更新処理と画面クローズの流れについては、micolish_nicolishさん
のおっしゃる通りでした。

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

shi********さん

編集あり2012/11/2917:35:01

kasiwara_booさん

phpが動作するのはサーバ側だし、JavaScriptはブラウザ側に(phpの動作が全部終わって)htmlソースが返ってからの話です。混同してはいけません。

phpがブラウザに返すhtmlソース内にJavaScriptを書くことは出来ます。当然、phpでの処理が終わってからhtmlソースを返しますから、このタイミングでは必要な処理は終わっています。


ただし、その記述で閉じるかどうかは別の話です。基本的にスクリプトで閉じられるのはスクリプトで開いたウィンドウだけです。

なぜcloseしたいのか(どういう状況でcloseするのか)を書いていただくといいんですが・・・



>OKボタン押下で別プログラムの確認画面

これってJavaScriptで(window.openで)開いていますか?それともanchor要素やform要素のtargetとして別ウィンドウを指定していますか?上記のとおり前者なら何とかなる可能性はあります(後者なら無理)。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる