クリック順にサブウィンドウを重ねる


動作ブラウザ 【 IE:4.0   NN:4.0
Internet Explorer Netscape Navigator Opera iCab Safari
3.0x 4.0x 4.5 5.0x 5.5 6.0 2.0x 3.0x 4.0x 4.x 6.0 7.0 7.x 2.x 1.x
Windows - -
Macintosh × - ×
UNIX - - - - - -

ポイント swNum.unshift(sID); for (i=swNum.length-1; i>=0; i--) { if ( isFinite(swNum[i]) && subWin[swNum[i]]) subWin[swNum[i]].focus(); }
説  明 クリック順にサブウィンドウを重ねるには、クリックされた順番を配列に格納するようにします。配列を操作するunshiftを使ってクリックされたサブウィンドウのID等を配列の先頭に入れておきます。これがクリックされた順番になるので、配列の末尾または先頭からIDを読み出せばクリックされた順番(または逆順)にサブウィンドウを重ね合わせることができます。
サンプル <html> <head> <title>クリック順にサブウィンドウを重ねる</title> <script Language="JavaScript"><!-- subWin = new Array(); swNum = new Array(); function openSW(sURL,sID) { if (subWin[sID]) return; // すでに開いている場合は無視 swName = "subwindow"+sID; // ウィンドウ名(ID) subWin[sID] = window.open(sURL,swName,"width=320,height=240"); swNum.unshift(sID); for (i=swNum.length-1; i>=0; i--) { if ( isFinite(swNum[i]) && subWin[swNum[i]]) subWin[swNum[i]].focus(); } } // --></script> </head> <body> クリック順にサブウィンドウを重ねます。<br> <a href="javascript:openSW('sub1.html',0)">その1</a><br> <a href="javascript:openSW('sub2.html',1)">その2</a><br> <a href="javascript:openSW('sub3.html',2)">その3</a><br> <a href="javascript:openSW('sub4.html',3)">その4</a><br> </body> </html>
補足説明 Mac版IE5では正常に動作しません。Mac版Opera 7.5では正常に動作しません。Windows XP SP2ではサブウィンドウを開く際にはユーザーの許可が必要になります。常に最前面に表示させるためにsetTimeroutやsetIntervalを使用すると親ウィンドウや背面のウィンドウなど最前面のウィンドウが操作できなくなるブラウザが多くあります。また、このサンプルではサブウィンドウを閉じた場合の処理は行っていません。

■サンプルスクリプトを実行する >>実行
■各ブラウザでの動作結果を見る >>View!

写真素材 PIXTA