WEB相談室

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

タイトル:開いた子ウィンドウから親ウィンドウを移動したい。

本須賀 [WriteDate : Fri May 11 02:46:29 2001]

初めて質問させて頂きます。
Flashで作ったボタンで開いたウィンドウにページが読み込まれた時に、元のFlashのウィンドウを移動させたいのですが、出来ますでしょうか?
御回答宜しくお願い致します。


ひよこ [MAIL] [URL] [WriteDate : Fri May 11 08:33:08 2001]

移動させるとはどの様な事でしょうか?
元のwindowが最大化されていたりしたら移動しようも無いと思いますが・・
ちなみに、誤って最大化されたWindowをタイトルバーが隠れるように
移動してしまうと、処理によっては最悪の場合元に戻すことが出来なくなります。


本須賀 [WriteDate : Fri May 11 08:55:56 2001]

本須賀です。
元のウインドウも読み込んだ時にリサイズしてまして、そこから開く新しいウインドウを
元のウインドウの上に重ねたいのです。重ねたいだけなので、元のウインドウの左端の座標が取れても良いのですが、

どうでしょうか?


ひよこ [MAIL] [URL] [WriteDate : Fri May 11 09:23:46 2001]

> 元のウインドウも読み込んだ時にリサイズしてまして、
元Windowの基点座標はわかるわけですね。
そのデーターはたぶん親Windowが持っているのでしょうから、
子Windowオープン後に、つづけて自分自身をmoveTo(x,y)で移動すれば
いいと思います。
ただ、子のWindowの座標がわからなければ同時に移動しないと合わないと思いますので、
子Windowも同じ座標で移動が必要と思います。


本須賀 [WriteDate : Fri May 11 09:55:21 2001]

ひよこ様。度々の御回答感謝致します。
>子Windowオープン後に、つづけて自分自身をmoveTo(x,y)で移動すれば
>いいと思います。

そうなんですが、ウインドウをFlashのscriptによって開く時にイベントを取得できるのですか?
普通にwindow.openなんてやれば、イベントが発生した時に親ウインドウが自身でmoveTo(x,y)すれば良いのですが、Flashでウインドウを開く時が解りません。
ですから子ウインドウから親ウインドウを動かす。もしくは、親ウインドウの座標を取得して子ウインドウを移動させる。
どちらでも良いのですが、出来ますでしょうか?


ひよこ [MAIL] [URL] [WriteDate : Fri May 11 11:56:27 2001]

FLASHからWindowのオープンしかたはどの様にされてますか?
オープンのやり方でFLASHは何もしなくても処理することも出来ます。
オープンの方法(スクリプト)とFLASHのバージョンを教えて下さい。


本須賀 [WriteDate : Fri May 11 12:20:41 2001]

getURL()で開けています。
getURL("url","_blank");って感じです。
この時に元のウインドウの上に開いたウインドウを重ねたいのです。


ひよこ [MAIL] [URL] [WriteDate : Fri May 11 13:13:02 2001]

> getURL("url","_blank");って感じです。
と言うことは子windowサイズはブラウザのデフォルト値で開かれると言うことですね。
一番簡単な方法は、FLASHから開かれた子Windowにonloadで関数を呼び出し方法。
開かれたWindowの外サイズはIEでは取得できない(メニューバー等を指定してしまえば
計算で出すことはできますが手間がかかる)ので子Windowもリサイズさせた方が
簡単です。


子window
<SCRIPT type="text/javascript" language="JavaScript">
<!--
var win_width = 500;
var win_height =400;
var screen_width  = eval(screen.width);
var screen_height = eval(screen.height);
// スクリーンより大きくしないための処理
if(screen_width < win_width+20)win_width = screen_width -20;
if(screen_height < win_height+130)win_height = screen_height -130;

function mov_win(){
 // ここは仮にセンターに表示する場合
 pos_x = (screen_width-win_width)/2;
 pos_y = (screen_height-win_height)/2;
 self.window..resizeTo(win_width,win_height);
 self.window.moveTo(pos_x,pos_y);
 window.opener.resizeTo(win_width,win_height);
 window.opener.moveTo(pos_x,pos_y);
}
//-->
</script>
<body onload="mov_win()">

FLASHからWindowをオープンする際に親Windowの関数を呼んで
子windowを指定値でopenする方法もありますが、FLASHからの
関数呼び出しはMac版IEでは動作しないので、上記方法がいいと思います。
また上記同様に子windowから親windowの関数をonloadで呼び出しても
windowのターゲットが変わるだけで同様に出来ます。


ひよこ [MAIL] [WriteDate : Fri May 11 13:18:12 2001]

あ、すみません。訂正です。
上記
if(screen_width < win_width+20)win_width = screen_width -20;
if(screen_height < win_height+130)win_height = screen_height -130;
の +20,+130,-20,-130はこの場合不要です。
開かれたwindowサイズを取得した場合のやりかたでした。すみません。
if(screen_width < win_width)win_width = screen_width;
if(screen_height < win_height)win_height = screen_height;


本須賀 [WriteDate : Fri May 11 13:25:58 2001]

子ウインドウをonLoadでresizeして、移動もさせているのですが、親のウインドウがユーザーによって移動されてしまった時に
子ウインドウの移動先が解らないのです。子ウインドウが開いた時に、親の位置が解ればそこへ移動するだけなんですがね。
どうしても解りません。

親のウインドウの中に子ウインドウを重ねるなんてあんまり意味は無いのですが.....


ひよこ [MAIL] [URL] [WriteDate : Fri May 11 14:11:08 2001]

windowの現在位置を調べる方法は私にもわかりません。
しかし、ユーザーが親windowを移動したとしても子windowから指定位置に
移動させることは出来るのでそれしか方法はないと思います。
ただし、最初に述べたように、最大化させた状態では決して移動しない方がよいので
rwsize後に実行するようにした方が良いです。


本須賀 [WriteDate : Fri May 11 15:43:00 2001]

IE5ではwindow.opener.resizeToでエラーを返されます。
「window.openerはオブジェクトではない」とでました。
NN4.73ですとなんとか動いている様です。

あっ。因に私はMacです。


ひよこ [MAIL] [URL] [WriteDate : Fri May 11 17:51:57 2001]

エラーでますね。(^^;
_blankで開いたwindowは親子の関係が無いようです。
window.open()で開けば問題ないのですが、FLASHからと言う問題があるので難しいですね。

他人のwindowと縁結びする方法はちょっと思いつきません。(どなたかフォローないかな)

後はちょっとややこしいですがFLASHでのMac+IE対策で用いるダミーフレーム式しか思いつきませんね。
やり方は親をそもそも0:100で切ったフレームの100の方にFLASHを置いておいて、
0(ダミー側)の方にwindow.open()だけを仕込んだファイルを読み込ませるんです。
そうすると新規にopenされたwindowとは親子の関係が出来るので制御が可能です。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]
ChaichanPAPA's World