2つの子ウィンドウを上手くコントロールしたい。

[上に] [前に] [次に]
蓮子 [E-Mail] 1999/12/10(金) 16:48:15
質問のタイトルが曖昧ですみません。
下に、色々書きましたが、やりたいことさえできればいいので、
他に上手いやり方があったら教えて下さい。

>やりたいこと
親ウィンドウA,子ウィンドウB,Cとします。
親ウィンドウには2個のボタン(ボタンB,ボタンCがあります。

(1).親ウィンドウの2個のボタンB,ボタンCを押すとそれぞれB,Cを開く。
(2).子ウィンドウは同じウィンドウを使用(B,Cは同時に表示できない)
(3).子ウィンドウを開いた時には、Aの前面に来るようにする。
(4).できれば、Bが開いている時ボタンBを押したら、
  url読み込みをせずにAの前面に来るだけにする。
(5).B,Cのウィンドウはサイズ指定して表示する
---------------------------------------

>トライ1
(3)(4)を実現するためにfocus()を使用して作ったところ、
2度目に開く場合に「アクセスできない」エラーとなりました。
(以前のスレッドによるとこれは上手く回避できないとのことでした。)
また、IEでは表示中のサイズを引き継いでしまい(5)もダメでした。

>トライ2
そこで(4)をあきらめ、(2)を、
(2-2).(1)の時、Bが開いていたらCを閉じる,Cが開いていたらBを閉じる。
と変更しました。常に新しいウィンドウを開けば(3),(5)ができますよよね。

子ウィンドウBを開くスクリプトを↓↓のように書きました。

function wingo1(){
if(win1){if(!win1.closed){win1.close()}} //Bが開いていれば閉じる
if(win2){if(!win2.closed){win2.close()}} //Cが開いていれば閉じる
win1=window.open('http://www.tohoho-web.com/','MWIN','width=300','height=100')
}

ボタンからwingo1()をスタートすると、既に子が開いている時には
子を閉じてファンクションが処理が終了してしまいます。
もう一度ボタンを押すと子が開きます。
開いているものを閉じ、同時に新たな子ウィンドウを開くことができるでしょうか?

みんこ [E-Mail] 1999/12/10(金) 17:31:27
../199911/99110187.htm
で書いたスクリプトをちょっちいじって

<SCRIPT LANGUAGE="JavaScript">
<!-- Code hiding from here
function iWinOpen(n,ww,hh) {
window.open(n,"photo","status=0,resizable=yes,scrollbars=no,width=" +ww+" ,height=" +hh)
w.focus();
}
//-->
</script>

ってやったらダメですか。ウィンドウ前に出るかなあ。
>蓮子さん
........私の知ってる人ですか?(多分違うと思うけど)

蓮子 1999/12/10(金) 17:31:35
長長書いた後で自己レスです。

(2-2)ではなく(2)の方法で、子ウィンドウ側に
<BODY onLoad="focus()">を書いたら前に出てきました。
あとは(5)をなんとかすれば良さそうですね(^^;)
いい方法があったらおしえてください。

蓮子 1999/12/10(金) 17:40:00
みんこさんありがとうございます。
(多分知らないと思いますが、同じ名前でした?(^-^;)

親ウィンドウ側でfocus()を使用したかったのですが、
>「アクセスが拒否されました」とは?
>../199911/99110130.htm
のようにエラーが出ちゃうのです。

みんこ 1999/12/10(金) 17:49:07
>のようにエラーが出ちゃうのです。
これの回避策を試してもダメということですね。
(この場合focus()は関係ない気もしますが)
で、まあ
><BODY onLoad="focus()">を書いたら前に出てきました。
とのことですので、あとは単に上記のスクリプト流用したらできるのでは。

#いいけどいきなりw.focus();って何だ...私...。
#window.focus();ですね。

蓮子 1999/12/13(月) 16:48:57
[[解決]]
(5)はひとまず妥協しました。
親ウィンドウでは素直に下のファンクションで呼び出し、
子の方に<BODY onLoad="focus()">を書くことで
やりたいことはできましたので解決をつけます。
ありがとうございました。

function MstOpen(Flug){
 if(Flug==1){SubWin=window.open('http://〜','Master','width=35,height=40')}
 else{SubWin=window.open('http://〜','Master','width=20,height=20')}
}

[上に] [前に] [次に]