JavaScript Maniax

■子画面制御■

子画面の制御は、自画面のオブジェクトとして子画面を開くことで可能になります。

//---Sample---
<SCRIPT language="javascript">
var obj;    //←関数内ではなくグローバル変数として宣言します。
obj = open(URL, Name, Option);
</SCRIPT>
//---Sample---
まだ一度画面が開かれていない(=上記コマンドが実行されていない)場合はオブジェクトobjが作成されておりませんので、
if(obj){
という条件分岐にはfalseを返します。
また、一度でもopen関数でオブジェクトとしてウインドウを開い場合は上記分岐ではtrueを返しますが、その後ウインドウを閉じた場合は、
if(!obj.closed){
という条件分岐にfalseを返します。


if(obj){
if(!obj.closed){
一度も子画面を開いていない false ---
一度は子画面を開いた 現在子画面が閉じている true false
現在子画面が開いている true true



ただし、既にobjウインドウが開いている状態で、再度
obj = open(URL, Name, Option);
を行ってしまうと、先に作成されたobjは後に作成されたobjで上書きされてしまいますので、最初に開いた子画面が制御できなくなってしまいます。
この現象は、open関数を使用する際には既にウインドウが開いているかどうかを確認することで回避できます。
//---Sample---
function win_open(){
    if (obj) {
        if (!obj.closed){
            alert("すでに子画面がひらいています。");
            obj.focus();
            return;
        }
    }
    obj = open(URL, Name, Option);
}
//---Sample---

応用編

上記方法で開いた子画面内で、さらにobjを宣言し孫画面をopenすることで、
親画面から
obj.obj
の形で孫画面のwindowを参照することもできます。
同様に
if(obj.obj){
や
if(!obj.obj.closed){
の条件分岐文で、画面の状態をチェックすることが出来ます。

[
sample] [DL]
[top] [index]
トップメニュー 基礎編 実践編 外部リンク