親画面から、子画面を呼び出し二つのウィンドウが立ち上がっている状態です。
ちなみに、『親画面は一覧表示画面』、『子画面は登録画面』となっています。
親画面がなんらかの形で消されてしまった場合、
子画面も、同時に消すように制御しています。
そこで、子画面において、登録処理を行った場合に限り、
親画面を最新の状態を表示するため再表示(リロード)をさせています。
そのため、上にある制御のために
親画面を再表示すると子画面が消えてしまうのです。
登録処理後の場合は、親画面を再表示させたあとも子画面を表示させたままに
したいのですが・・・。

それは可能なのでしょうか?
やはり、フラグか何かを持たせて、親画面の「OnUload」のところで、
フラグで判断し、
「更新されて再表示する場合は、子画面をそのまま」
「そうでない場合は、子画面を消す」のようにするしかないのでしょうか?

何かいい方法がありましたら、御教授くださいませ。
よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

1.フレームを使う


「一覧部分」と「それ以外」に分け、一覧部分だけを読み込みなおす。
onunloadは「それ以外」に記述する。
見た目をかえたく無いのであればサイズ0のフレームにする。

2.再表示しない
再表示せずに登録した行を挿入する。
リアルタイムじゃなくなりますね。

3.フラグ判別
更新時に、親画面の隠し項目の値を設定。
onunload時にその値で判断。
注意点は、判断後に値を戻す。

私の思いつくものはこれだけです。
既存のものがある程度出来上がっているのであれば1は却下。面倒そう。
複数ユーザの更新頻度が多ければ2は却下。
残るは3。フラグではダメなのでしょうか?

を!ひらめいた!

4.モーダルにする
子画面を表示している時は親画面を触らせない。
そうする事で、子画面が表示されている時は親画面を消される心配が無い。
子画面に「登録して閉じる」ボタンと「登録後、閉じない」ボタンを用意する。

出来るかどうかは分かりませんが。
思いつきで記述して申し訳ありません。
    • good
    • 0
この回答へのお礼

丁寧なご説明をありがとうございました!
3番目を参考にさせて頂きました!
単なる画面の表示なのか、それとも更新後の画面の表示なのか・・・
をフラグで判断する事になりました。

本当にありがとうございました。

お礼日時:2001/06/27 14:10

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Q子画面の表示と親画面の表示方法

別ウィンドウ(子画面)を表示すると同時に、親画面のURLを変更して、
そのHTMLを表示させたいのですが、両方同時に表示することが出来ません。
ご存知の方は、教えて頂けないでしょうか?
よろしくお願い致します。

Aベストアンサー

ページのURL変更は location で指定できます
なので、同時にそれを行えば可能です

自動リンクを防ぐためにURL初めの h は全て大文字にしています(各例に2箇所)

■記述例1

<script type="text/javascript">
<!--
function pJump(){
window.location = "http://google.co.jp";
window.open("http://google.co.jp","_blank","width=400,height=400toolbar=no");

}
-->
</script>
<a href="javascript:pJump();">同時に移動</a>


■記述例2 アンカータグ内に全てを記述

<a href='javascript:window.location = "http://google.co.jp";window.open("http://google.co.jp","_blank","width=400,height=400toolbar=no");'>同時に移動</a>

ページのURL変更は location で指定できます
なので、同時にそれを行えば可能です

自動リンクを防ぐためにURL初めの h は全て大文字にしています(各例に2箇所)

■記述例1

<script type="text/javascript">
<!--
function pJump(){
window.location = "http://google.co.jp";
window.open("http://google.co.jp","_blank","width=400,height=400toolbar=no");

}
-->
</script>
<a href="javascript:pJump();">同時に移動</a>


■記述例2 アンカータグ内に全てを記述

<a href='javasc...続きを読む

Q子画面を自動で閉じた後、親画面を再描画するJavaScriptが・・・・

IEだと動くんですけど、Netscapeだと動かないんです。なんかsecurityErrorが出まして・・・。子画面を閉じるまでは動いてるんですが、親の再描画の部分でエラーが出てるようです。どこが原因かお分かりになる方いらっしゃいますか?よろしくお願いします。


<%//処理を何秒後に行うか 時間をset%>
function setTimer(){
timer1=setTimeout("clo()",3000);
timer2=setTimeout("location()",3000);
}

<%//windowをclose%>
function clo(){
window.close();
}

<%//親画面を再描画する%>
function location(){
var url='<html:rewrite page="/hogehoge/hoge.do" />';
window.opener.location.href = url+'?member_id='+変数;
}

Aベストアンサー

あれ?
でも一字一句同じurlを読み込めば再検索されると思いましたが・・・
↑これは余計でした。
えー、親画面の再描画を先にすると動かないそうですね。
でしたら、親画面のほうで子画面を閉じて渡された引数をurlに組み込んで再描画するようにしましょう。
子画面の処理は子画面で、親画面の処理は親画面で行うわけです。
まず、親画面となるhtmlに以下を足します。
<script type="text/javascript">
<!--
function redraw(num){
location.href='<html:rewrite page="/hogehoge/hoge.do" />?member_id='+num;
}

function location(number){
timer2=setTimeout("redraw("+number+")",3000);
}
//-->
</script>
そして、あなたの子画面のsetTimer()を
setTimer(){
timer1=setTimeout("clo()",3000);
opener.location(変数);
}
にします。
これで、子画面は自分を閉じるためだけにタイマーを持っているので、タイムラグが生じても問題なく動作するはずです。

あれ?
でも一字一句同じurlを読み込めば再検索されると思いましたが・・・
↑これは余計でした。
えー、親画面の再描画を先にすると動かないそうですね。
でしたら、親画面のほうで子画面を閉じて渡された引数をurlに組み込んで再描画するようにしましょう。
子画面の処理は子画面で、親画面の処理は親画面で行うわけです。
まず、親画面となるhtmlに以下を足します。
<script type="text/javascript">
<!--
function redraw(num){
location.href='<html:rewrite page="/hogehoge/hoge.do" />?member_id...続きを読む

Q子画面から親画面のデータを操作するには?

4つのフレームから成る画面より子画面を開き、
(2番目のフレームに子画面を呼び出すボタンが有ります)
子画面から親画面の2番目と3番目のフレームのデータを
操作したいのですが、上手くいきません。

window.top.opener.frames[1].formxxx.xxxx.value=xxxxx;
window.top.opener.frames[2].formxxx.xxxx.value=xxxxx;
で良いと思ったのですが。。。

どなたか分かる方いらっしゃったら教えて下さい。

Aベストアンサー

2番目のフレームのHTML構成を
 <FORM name="f1">
  <INPUT type="text" name="t1">
 </FORM>
とします。
このとき
 window.opener.parent.frames[1].document.f1.t1.value = 値;
でOKです。
(IE5.0、NN4.7で動作確認済み)

 window.opener.parentで、4つのフレーム分けをしているHTMLへアクセスし、配列framesで各フレームにアクセスします。
 そこから下は、各HTML内でのオブジェクトへのアクセスと同じです。

 HIROYOさんの言うように2番目は実親なのでopnerでもアクセスできますが、他のフレームからサブウィンドウが開かれた時に対応できないので、このようにフレーム群の親までアクセスした方が良いでしょう。
(例えこのサブウィンドウが他のフレームから開かれなくても、別のサブウィンドウを開くことになった時に流用できますので、やはりこのようにします。)

Q親画面に処理を渡して子画面を閉じるには?

ある作品集の作品リストページで、作品の画像をクリックすると子画面が出るようにjavascriptで設定したのですが、子画面で「この作品について書き込む」というボタンをクリックするとフォームのCGIにデータを受け渡して書き込みができるようにしようとして困っています。

実は、親画面であるリストページにも「書き込む」ボタンがあるので、子画面で「書き込む」ボタンを押して子画面内でCGIに飛んでしまうと、サイト内を回り回って再度何か書き込みをする場合はその度に小画面の子画面が開くのでウインドウが増えてしまうことになるのです。

これを避けるために、子画面で「書き込む」ボタンをクリックすると親ウインドウの内容がCGIに飛んで、同時に小画面が閉じるようにしたいのですが、できないでしょうか?

現在、その小画面でのソースは、ヘッダに

<script language="JavaScript">
<!--
function openWi12(shiryou,botan,w,h) {
window.open(shiryou,botan,"width="+w+",height="+h+",left=10,top=10,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,favorites=no,resizable=yes");
}
// End -->
</script>

と入れて、ボタン部分が

<A HREF="cgi-bin/kakikomi.cgi" TARGET="_blank"><IMG SRC="sakuhin_new120.jpg"
ALT="" height="120" width="120" border="0" hspace="7" vspace="7" naturalsizeflag="0" align="BOTTOM" onClick='openWi12("cgi-bin/kakikomi.cgi","Request",740,450);return false'></a>

となっています。
ここに何かを書き足すことで実現できるようでしたらお教え頂きたく、どうかよろしくお願いします。

ある作品集の作品リストページで、作品の画像をクリックすると子画面が出るようにjavascriptで設定したのですが、子画面で「この作品について書き込む」というボタンをクリックするとフォームのCGIにデータを受け渡して書き込みができるようにしようとして困っています。

実は、親画面であるリストページにも「書き込む」ボタンがあるので、子画面で「書き込む」ボタンを押して子画面内でCGIに飛んでしまうと、サイト内を回り回って再度何か書き込みをする場合はその度に小画面の子画面が開くのでウインドウが...続きを読む

Aベストアンサー

書き足すのではなく、書き換えるのが正解ではないかと思います。

子画面のAリンクは廃止して、JavaScriptの関数を呼び出しだけで対応するよう修正してください。
おそらくAリンクは、JavaScript非対応ユーザー対策と思うのですが、非対応のユーザーでは、そもそもの子画面自体が開きませんよね?
(あと、IMGエレメントのonClickイベントは、IE独自仕様だった気がするのですが・・・)

そして親画面側に、子画面を閉じて自画面の「書き込む」ボタンが押された場合と同等の処理をする関数を用意します。
子画面側では、window.opener.親画面の関数名() で呼び出しが出来ます。



これで一応問題は解決しますが、親画面子画面でさらに共通化を図るなら・・・

function windoeSubmit(winObj,trgUrl){
if(winObj) winObj.close();
openWi12(trgUrl,",740,450);
}

として、
子画面側では、window.opener.windoeSubmit(window,'cgi-bin/kakikomi.cgi');

親画面側では、windoeSubmit(false,'cgi-bin/kakikomi.cgi');

と記述すれば、同じ関数で処理が賄えます。

書き足すのではなく、書き換えるのが正解ではないかと思います。

子画面のAリンクは廃止して、JavaScriptの関数を呼び出しだけで対応するよう修正してください。
おそらくAリンクは、JavaScript非対応ユーザー対策と思うのですが、非対応のユーザーでは、そもそもの子画面自体が開きませんよね?
(あと、IMGエレメントのonClickイベントは、IE独自仕様だった気がするのですが・・・)

そして親画面側に、子画面を閉じて自画面の「書き込む」ボタンが押された場合と同等の処理をする関数を用意します。
...続きを読む

Q別のサーバURLの子ウィンドウから親ウィンドウを制御したい。

親ウィンドウから、別のサーバURLの子ウィンドウを開き、開いた子ウィンドウから親ウィンドウの制御を行ないたいと考えています。どのようにすればできるでしょうか?
同一サーバ内であれば、子ウィンドウのスクリプトで、
opener.name.value="Nakai";
というように記述すればよいですが、別のサーバ上のスクリプトから実行すると。
「書き込みできません」
と表示されます。(ブラウザIE6,サーバTomcat3)
openerが使えないようであれば、ウィンドウ名を使用する方法などが無いか考えましたが、windowの取得方法ももわかりません。
よろしくお願いします。

Aベストアンサー

こんばんわぁ、Blackwinglsです。

JavaScriptではセキュリティーの関係で他サーバーを制御できません。

ではでは(@^^)/~~~


人気Q&Aランキング

おすすめ情報