WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:サブウィンドウの操作

0:[投稿] ひとみ [2003/12/17 16:33 ][環境:IE わからない]

いつもいろいろと教えていただいてありがとうございます。
また教えてください。

親ウィンドウからリンクをクリックして子ウィンドウを開き、その子ウィンドウを背面にして、親ウィンドウの同じ場所をクリックすると子ウィンドウが前面にくるというものを考えてます。
子ウィンドウは前面にくるときは再読み込みしないようにしたいのですがどうしてもできません。

どなたか教えていただけないでしょうか。よろしくお願いします。


1:[回答] see [2003/12/18 12:02 ]

http://allabout.co.jp/computer/javascript/closeup/CU20020808/
に、子ウィンドウの有無を確認するサンプルがあります。
子ウィンドウがなければ開き、親ウインドウにフォーカスを与える。
子ウィンドウがあれば、子ウィンドウにフォーカスを与える。
で、できると思います。


2:[質問] ひとみ [2003/12/18 13:39 ]

上のサンプルで試しましたが、
ボタンを押して子ウィンドウを開き、もう一度同じボタンを押しても子ウィンドウにフォーカスがあたりませんでした。
ソースのどの部分を変更すればいいのでしょうか?
よろしくお願いします。


3:[回答] see [2003/12/18 14:01 ]

上のサンプルは、「有無を確認し、あれば何もしない」というものです。
>>1にあるように、親または子にフォーカスを与える部分は組み込んでください。

子を開く
newWin = window.open( url, name, option );
子にフォーカスをあてる
newWin.focus();


4:[質問] ひとみ [2003/12/18 16:08 ]

seeサン
ありがとうございます。
もしよろしければどこに組み込めばいいかも教えて
いただけたらうれしいです。

よろしくお願いします。


5:[回答] see [2003/12/18 17:58 ]

サンプルとは少し違いますが、作ってみました。
IE6SP1で動作確認をしてあります。

<html>
<head>
<script language='JavaScript'>
<!--
var nw="";
function loadTosubwin(url){
   if( sbwin_closed(nw) ) {
       nw = window.open(url, 'win',"width=550,height=360");
    self.window.focus();
   } else {
       nw.window.focus();
   }
}

//子ウインドウ有無確認関数
function sbwin_closed(winVar) {
   var ua = navigator.userAgent;
   if( !!winVar )
       if( ( ua.indexOf('Gecko')!=-1 || ua.indexOf('MSIE 4')!=-1 )
            && ua.indexOf('Win')!=-1 )
           return winVar.closed
       else return typeof winVar.document != 'object'
   else return true
}

//-->
</script>
</head>
<body>
<a href="javascript:loadTosubwin('子.html')">クリックすると開くよ</a>
<br><br>
サブウインドウwin1が閉じていれば開き親にフォーカス、開いていれば子にフォーカス。
</body>
</html>


6:[回答] うみ [2003/12/18 18:58 ]

>>5 訂正
サブウインドウwin1が→サブウインドウnwが


7:[関連] ひとみ [2003/12/19 14:55 ]

ありがとうございます。
できました。
もうひとつ質問なんですが、
子ウィンドウから、親ウィンドウを操作して親に違うhtmlをよみこませて、そこからまた子にフォーカスを与えようとすると
再読み込みしてしまいます。
再読み込みさせない方法はないですか?



8:[関連] ひとみ [2003/12/19 14:56 ]

ありがとうございます。
できました。
もうひとつ質問なんですが、
子ウィンドウから、親ウィンドウを操作して親に違うhtmlをよみこませて、そこからまた子にフォーカスを与えようとすると
再読み込みしてしまいます。
再読み込みさせない方法はないですか?



9:[回答] うみ [2003/12/22 13:39 ]

親をフレームにしてはいかがですか。
子ウインドウから親ウインドウのスクリプトを呼び出し、孫?ウインドウを開いたりフォーカスを与えたりという具合です。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World