JavaScript           
 サブウィンドウのオープンと操作(2)


 
 
 
 
 
 


1. 内容

 

 

  実行結果  実際のソース(親)  実際のソース(子)

1]子ウィンドウをオープンする。

2]子ウインドウから親ウィンドウに『子ウインドウ読み込み完了』を知らせる。

3]親ウインドウから子ウィンドウに値を書き込む。

 

2.目的

 

 

「子ウィンドウのロード完了前に親から書き込むとエラーになる」 ← を防ぐ。

 

3. ソース(親ウィンドウ)

 

 

<script language="JavaScript">
<!--
var w, id, kaisu;

function open_sub() {
w = open("window02S_b.htm","sub_window");
document.myFORM_a.open_b_check.value = "ただいまOPEN中";
kaisu=0;
check_load();
}

function check_load() {
++kaisu;
focus();

if (document.myFORM_a.open_b_check.value == "OPEN完了" ) {
w.document.myFORM_b.text1.value = "UP-BEAT";
document.myFORM_a.open_b_check.value = kaisu + "mm秒";
clearTimeout(id);
}
else{
id = setTimeout("check_load()", 1);
}

}

// -->
</script>

 

1.「myFORM_a.open_b_check」をチェックする。
2."OPEN完了" でなかったら,タイマーで1mm秒待って,もう一度チェック。
3. "OPEN完了" だったら,子ウィンドウに「UP−BEAT」を書き込む。ついでに何mm秒待ったかを表示。ただし,命令実行時間があるため,正確な時間じゃない。

 

4. ソース(子ウィンドウ)

 

 

<script language="JavaScript">
<!--
function open_finished() {
opener.document.myFORM_a.open_b_check.value = "OPEN完了";
}
// -->
</script>


<body bgcolor="#FFFFFF" onload="open_finished()">

 

 

 子ウィンドウが「ロード完了」したら,親ウィンドウの「myFORM_a.open_b_check」に"OPEN完了"を書き込み,お知らせしま〜す!

 

 

5. 解説 (1)


 

 

 要するに,親ウィンドウ側から,子ウィンドウの状態を確認しに行くのじゃなく,子側から「終わったよ」と言ってくるまで,親が連絡を待つ方式。連絡用には親側のFORMのエレメントを使う。ここでは「myFORM_a.open_b_check」。通常はhiddenで非表示。また,渡すパラメーターも,もちろん"OPEN完了"なんかじゃなくて「OK」でもなんでも良いのは言うまでもないこと。

 





Copyright (C) 2000 UP-BEAT. All Rights Reserved.