別ウィンドウを制御するには??

[上に] [前に] [次に]
RYO [E-Mail] 2000/01/14(金) 20:16:50
先程、質問したRYOと、いいます。
またまた、おじゃまします。
え〜と、下のようなことを一つのボタンでやりたいのですが・・・。
1.自分のウィンドウを閉じる。
2.自分のウィンドウを開いたウィンドウを閉じる。
3.一番上のウィンドウの一つのフレームのページを変更する。
以上のことがしたいのですが、何かよい方法はないでしょうか??
順番は問いません。
こんな、変な質問ですが、よろしくお願いします。

Mugi [E-Mail] [HomePage] 2000/01/14(金) 21:20:05
1.window.close()
2.opener.close() - 閉じる確認が出ます。
3.parent.frames["フレーム名"].location.href="〜" のことでしょうか?
 「一番上のウィンドウ」というのが気になりますが。

これを実行する関数を作って、ボタンのonclickで呼べばいいだけ。

RYO [E-Mail] 2000/01/17(月) 09:02:15
レス、ありがとうございます。
まだ、実行はしていませんが、ちょっとやってみます。
お礼だけでもと思いまして・・・。
また、分からなかったら教えてくださいね。

RYO [E-Mail] 2000/01/17(月) 10:59:56
レス、ありがとうございます。
まだ、実行はしていませんが、ちょっとやってみます。
お礼だけでもと思いまして・・・。
また、分からなかったら教えてくださいね。

RYO [E-Mail] 2000/01/17(月) 11:04:28
実行してみましたが、opener.close()がうまく実行できません。
実行すると、「'opener'はオブジェクトではありません。」というエラーが出てしまいます。
どうしてか、よく分からないのですが、新しいウィンドウで開くときに、タグ(<A HREF・・・>)でやっているからなのでしょうか??
その辺、ご説明して頂けたらと思います。
よろしくお願いします。

ミナ 2000/01/17(月) 12:45:45
スクリプトで制御する場合
<a href="http://WWW.xxxxx/" target="_blank">
で、target指定して開いたウインドウは親子関係にならないため
制御できません。。。スクリプトで制御する場合は
<script language="javascript"><!--
function openWindow()   {
        window.open("xxxx.html","ウインドウ名","width=xxx,height=xxx")
}
// -->
</script>
</head>
<a href="javascript:openWindow()">
他にも方法はありますけど・・このような感じでウインドウを開いて下さい。。
サイズ指定は無くても構いません。これで開かれたウインドウは子ウインドウになります。
開いた側が親にあたります。で、この親に対してopenerが使えます。
とりあえず、ここだけね・・・(^^;;;

RYO [E-Mail] 2000/01/17(月) 13:58:08
レスありがとうございます。
早速、試してみたのですが、window.open("aaa.htm","_blank")という文を実行すると、別ウィンドウに開くのはいいのですが、元のウィンドウもページが変わってしまって、[object]と書いてあるページが表示されてしまうのですが、どうしてなのか分かりません。
ご存知でしたら、教えてください。

2000/01/17(月) 14:27:19
<a href="javascript:openWindow()">

<a href="javascript:openWindow();return false;">
にしてみてください。

RYO 2000/01/17(月) 14:39:48
@さん、レスありがとうございました。
return false;入れたらできるようになりました。
ところで、Mugiさんミナさんから教えてもらったようにwindow.open()で開いているのですが、今度は、parent.frames["フレーム名"].location.hrefがうまくいきません。
エラーの文は同じ「'parent.frames["フレーム名"].location'はオブジェクトではありません。」です。
ここで言うparentというウィンドウはどういう意味なのか、ちょっとわからないので、その辺も教えてください。

かえる 2000/01/17(月) 14:48:14
<a href="javascript:void window.open('xxxx.html','ウインドウ名','width=xxx,height=xxx')">
でも可です。window.open()関数からの戻り値を hrefプロパティーに代入してしまう為に、元のウィンドウも変わってしまいます。
void演算子をつけることで呼び出した関数が戻り値を返さなくなるので元のウィンドウは変わらないはずです。

2000/01/17(月) 15:04:12
parent は【親ウィンドウ】を挿します。
(特定の名称ではなく自分の直の親ですね)

で、フレームの構成が変らないなら たぶん上から参照したほうが楽なんじゃないかと思うんで、
(一番上のウィンドウって気になるんで←Mugiさんのマネ)
window.top.frames['フレーム名'].location='http://www.tohoho-web.com/www.htm'
とかではいかがでしょう?
(ついでに一言、フレームを使ってる場合は質問する時にフレームの構成を書いておくと話しが早いですよ^^;)


とほほのJavaScript入門(ドキュメント関連)
http://www.tohoho-web.com/js/document.htm#Document

英和辞書より
parent:親  元  親の  根源の

RYO 2000/01/17(月) 15:37:01
かえるさん、@さん、レスありがとうございます。
かえるさん、戻り値がhrefプロパティーに入ってしまうとは知りませんでした。
なるほどって感じです。ありがとうございました。
@さん、説明が足りなくて申し訳ありません。
え〜と、このボタンを押す時点で、開いているウィンドウは3つです。
一番親:フレームで4つに別れていて、最後に変えるフレームの名前は「main」です。
2番目:ボタンがあるページを開く為のウィンドウです。ボタンが押されると閉じるようになります。
3番目:ここにボタンがあります。このボタンを押すと2番目が閉じ、1番目の「main」フレームのページが変わり、自分(3番目)が閉じます。
以上がやりたいことの概要です。
すみません、長くなってしまって・・・。
あと、@さんのようにやってみたのですが、依然としてエラーメッセージも同じ・・・。
う〜〜〜ん、どうしてでしょう・・・。

2000/01/17(月) 16:00:02
各ウインドウの親子関係は、
1→2→3ですよね?!
なおかつ1から2を開いて 2から3を開いてますよね?

 1  2   3
opener.opener.window.top.frames['main'].location='http://hogehoge'
こんなことできるのかな・・・

>void演算子をつけることで呼び出した関数が戻り値を返さなくなるので元のウィンドウは変わらないはずです。
なるほど!!そういうことだったんですね!!voidの方が短くていいですね ^^;

RYO 2000/01/17(月) 16:31:36
[[解決]]
@さんありがとうございました。
私もこんな事できたらすごいな、(なんて@さんには申し訳ないですが)できるのかなと思い、半信半疑でやってみたところ、なんとできました!!
本当にありがとうございました!!
ま、また、来てもいいですか・・・(^^;

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