- 締切済み
ウィンドウが開いてる、閉じてるのステータスを確認したい。
ウィンドウが起動されていない時は新規にウィンドウを起動をします。 ウィンドウが起動されている時は2重起動のメッセージを出力させて、 フォーカスを遷移したいのですが、ウィンドウを認識できません。 targetを可変にしてウィンドウを起動しています。 <FORM name="HOST" method="POST" action="http://www."+ hensu1 +" target="newwin"+ hensu2 +">" たとえば、「hensu2」に2つ(A,B)の値があった場合、 親画面にAボタンとBボタンがあります。 Aボタン押下でnewwinAウィンドウが開き、 newwinAウィンドウにフォーカスが遷移します。 Bボタン押下でnewwinBウィンドウが開き、 newwinBウィンドウにフォーカスが遷移します。 再度、Aボタン押下すると何も反応がなく、 フォーカスも親画面のままです。 Aボタンを押すと、newwinAウィンドウの生き死に、 Bボタンを押すと、newwinBウィンドウの生き死にを 認識し、2重起動のメッセージを出力させ、 フォーカスを遷移させるにはどうすればよいでしょうか? まとまってない質問ですが、回答お願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- akanekor
- ベストアンサー率52% (102/194)
正直、可変対応とかすると、ドロドロなコードになるので 、あんま書きたくないのよね(==; そちらの仕様、分からないので、 多少(仕様を)予想しながら書いている部分あります。 全然目的と違うようなら、その件追加してくださいな。 (サンプル) <html> <head> <script type="text/javascript"> <!-- // ウィンドウオブジェクト管理用 var m_win_Obj = new Array(); var m_winObjName = new Array(); // ウインドウカウント用 var iWinCnt = 0; // windows open用 // (引数)hensu1 URLの前半部分抜いた文字列 // (引数)ウィンドウ名に用いる、文字列 function openWindow(hensu1, hensu2) { var strUrl; var strTarget; strUrl = "http://www."+ hensu1; strTarget = "newwin" + hensu2; var iFindWindow; iFindWindow = FindName(strTarget); if (iFindWindow != -1) { if (m_win_Obj[iFindWindow].closed== false) { alert("開き中ですよお(=w=ノ"); m_win_Obj[iFindWindow].focus(); return; } } win_Obj = window.open(strUrl ,strTarget); SetNewWindow(win_Obj, strTarget); return; } // ウィンドウ名検索用 // 戻値 検索index 見つからない場合 -1 function FindName(strName) { var iCnt; for (iCnt =0; iCnt < iWinCnt; iCnt++) { if (m_winObjName[iCnt] == strName) { return iCnt; } } return -1; } // ウインドウ名を登録する function SetNewWindow(win_Obj, strTarget) { m_win_Obj.push(win_Obj); m_winObjName.push( strTarget); iWinCnt++; } --> </script> </head> <BODY> <input type="button" value= "a" onclick='openWindow("yahoo.co.jp", "1")'> <input type="button" value= "b" onclick='openWindow("google.co.jp", "2")'> </BODY> </html>
- akanekor
- ベストアンサー率52% (102/194)
色々やり方あると思うけど、 とりあえず、一例。 <html> <head> <script type="text/javascript"> <!-- var win_a = null; var win_b = null; function openWindowA() { if (win_a != null) { if (win_a.closed== false) { alert("a.html 開き中ですよお(=w=ノ"); win_a.focus(); return; } } win_a = window.open( "./a.html" ,'a'); return; } function openWindowB() { if (win_b != null) { if (win_b.closed== false) { alert("b.html ひらいてるやん(TーT"); win_b.focus(); return; } } win_b = window.open( "./b.html" ,'b'); return; } --> </script> </head> <BODY> <input type="button" value= "a" onclick='openWindowA()'> <input type="button" value= "b" onclick='openWindowB()'> </BODY> </html> 後の細かいところ(「targetを可変にして起動」とか「submit」とか)とかは、 自分で考えてくださいな(-w-ノ
お礼
回答ありがとうございます。 ただ、 > var win_a = null; や、 > function openWindowB() { のように固定宣言する必要があるなら、 可変に対応できなくなってしまい困っています。 akanekorさんに頂いた柄を可変にも対応できるよう にする部分で悩んでおり、お助けを。。。