• 締切済み

サブウィンドウを指定の位置に開く

こんにちは。検索しても同じような質問内容がなかったので質問させてくださいm(_ _*)m 親ウィンドウからサブウィンドウを開く時の位置指定なんですが、 親ウィンドウと少し重なるような感じで左下に開かせたいと思います。 まず、こういった動作は可能なんでしょうか? 親ウィンドウの情報をサブウィンドウが取得してから開けばいいのかなと思ったんですが、 その親ウィンドウの情報の取得方法がよく分からなくて。(親ウィンドウのtopから30px、leftから30pxという方法でいいんでしょうか?) もしサンプルなど載っているサイトがありましたら 教えてください。 なんだか要領得なくて申し訳ないんですが、宜しくお願いします。

みんなの回答

  • duckling
  • ベストアンサー率47% (88/185)
回答No.1

> 親ウィンドウの情報をサブウィンドウが取得してから開けばいいのかなと思ったんですが、 ↑微妙に違います。 親ウィンドウが自分の位置を確認してから子ウィンドウを開けば それで複雑な処理は不要になります。 IEなら left=x; top=y; NNなら screenX=x; screenY=y; で、自分の画面上での位置が確認出来ます。 その後、x,y共に +30px の位置に子windowを開けばOKです。

hiro_com
質問者

お礼

ありがとうございますm(_ _*)m まず自分の画面上での位置を取得してみようと思いまして、やってみたんですが上手くできませんでした。(^^; (あ、これは私の知識不足によるところが大きいんです) ここでのx,yは変数ってことですよね? お暇な時でいいので、また教えてもらえたらと思います。自分でも引き続きあれこれやってみます。

hiro_com
質問者

補足

こんばんは! 以下の感じで概ね意図通りに出させるようになりました!ducklingさんのおかげで難しく考えることなく出来たような気がします。ありがとうございました。 でも、その時々によって子ウィンドウの出る場所が微妙にズレてしまうんですけどね。(^^; function wOpen(url,targetName,offsetx,offsety,width,height){ var agt = navigator.userAgent.toLowerCase(); var win = (agt.indexOf('win') != -1); // Windows var mac = (agt.indexOf('mac') != -1); // Macintosh var mywinx = null; var mywiny = null; if(document.all){ mywinx = window.event.screenX; mywiny = window.event.screenY; } else if(document.layers || document.getElementById ){ mywinx = screenX; mywiny = screenY; } if (win) { // Windows if(document.all){ //e4,e5,e6 var setx = mywinx + offsetx; var sety = mywiny + offsety; } else if(document.layers || document.getElementById ){ //n4,n6,n7,m1,o6 var setx = mywinx + (offsetx+150); var sety = mywiny + (offsety+80); } } else if (mac) { // Macintosh if(document.all){ var setx = mywinx + (offsetx-70); var sety = mywiny + offsety; } else if(document.layers || document.getElementById ){ var setx = mywinx + (offsetx+150); var sety = mywiny + (offsety+60); } } //サブウインドウを開く var para ="" +" left=" +setx +",screenX=" +setx +",top=" +sety +",screenY=" +sety +",toolbar=" +0 +",location=" +0 +",directories=" +0 +",status=" +0 +",menubar=" +0 +",scrollbars=" +0 +",resizable=" +1 +",innerWidth=" +width +",innerHeight=" +height +",width=" +width +",height=" +height subWin=window.open(url,targetName,para); subWin.focus(); }

関連するQ&A

専門家に質問してみよう