• ベストアンサー

新しい子ウィンドウを開くと古い子ウィンドウのすぐ上に表示されるようにしたい。

Javascript初心者です。わかりやすく具体的に教えてください。 親ウィンドウから画像1、画像2にリンクを張り、それぞれ子ウィンドウとして開きます。 現在はつぎのようにしています。 <script type="type/javascript"> function wopen1{ window.open('画像1のURL','new1',scrollbars=no,resizable=no,width=420,height=280');} function wopen2{ window.open('画像2のURL','new2',scrollbars=no,resizable=no,width=300,height=450');} </script> <body> <a href="#" onClick="wopen1()">画像1</a> <a href="#" onClick="wopen2()">画像2</a> </body> これだと画像1を開いた後に画像2を開くと階層的(レイヤー的?)に上から順に「画像2の子ウィンドウ>親ウィンドウ>画像1の子ウィンドウ」と表示されます。 これを「画像2の子ウィンドウ>画像1の子ウィンドウ>親ウィンドウ」の順で表示されるようにしたい。 また、画像2を開いた後に画像1を開く場合は同様に「画像1の子ウィンドウ>画像2の子ウィンドウ>親ウィンドウ」となるようにしたい。 どうしたらよいでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • arexis
  • ベストアンサー率66% (66/99)
回答No.3

訂正: <script type="text/javascript"> function wopen1(){ wo1 = window.open('1.jpg','new1','scrollbars=no,resizable=no,width=420,height=280'); if(self.wo2 && !wo2.closed){ wo2.focus();} wo1.focus(); } function wopen2(){ wo2 = window.open('2.jpg','new2','scrollbars=no,resizable=no,width=300,height=450'); if(self.wo1 && !wo1.closed) { wo1.focus(); } wo2.focus(); } </script> <a href="#" onClick="wopen1()">画像1</a> <a href="#" onClick="wopen2()">画像2</a> この方がエラーが出にくいです。 #1もこれもsafariではうまく行きません。 原因調べていません。

brianpeace
質問者

お礼

教わったとおりやったところうまくいきました。 必ずしも常に同じ動作をするわけではないようですが実用範囲です。 ありがとうございました。

その他の回答 (2)

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.2
brianpeace
質問者

お礼

ご回答をありがとうございます。参考になりました。

  • arexis
  • ベストアンサー率66% (66/99)
回答No.1

クリックする時に親ウィンドウが前に出てしまうので、フォーカスで子ウィンドウ達を前に出すしかないかな?と思ったので <script type="text/javascript"> function wopen1(){ wo1 = window.open('1.jpg','new1','scrollbars=no,resizable=no,width=420,height=280'); if(self.wo2){ wo2.focus();} wo1.focus(); } function wopen2(){ wo2 = window.open('2.jpg','new2','scrollbars=no,resizable=no,width=300,height=450'); if(self.wo1){ wo1.focus(); } wo2.focus(); } </script> <a href="#" onClick="wopen1()">画像1</a> <a href="#" onClick="wopen2()">画像2</a> フォーカスをあてる為子ウィンドウは wo1、wo2 のグローバルオブジェクトにしておく。 開いたあとにもう一つ先に開いてる物があれば、先にフォーカスを当ててから、自分にフォーカスをあてる。

brianpeace
質問者

お礼

早速のご回答をありがとうございます。 教えていただいたとおりにやってみました。 すると画像1を開いた後に画像2を開く、あるいは画像2を開いた後に画像1を開くという動作の1回目はいずれもうまくいきました。ところがいずれの場合も開いた画像をいったん閉じて同じ動作をしようとすると画像そのものは開くものの画面下に「ページでエラーが発生しました」と表示されます。

関連するQ&A