プロが教えるわが家の防犯対策術!

親ウインドウからリモコンウインドウを開き、リモコンウインドウのリンク先を親ウインドウに表示しようとしています。
親ウインドウは2つのインラインフレームが存在し、そのインラインフレーム内にリモコンウインドウを開くためのリンクがあります。
そのインラインフレームには以下の記述をしてリモコンを表示させています。
function navi_win() {
self.window.name="main"
w = window.open('', 'Remocon', 'width=150,height=300,scrollbars=yes');
if (w != null) {
if (w.opener == null) {w.opener = self;}
w.location.href = 'remocon.html';
}
}

<a href="javascript:navi_win()">リモコン</a>

これにより開いたリモコンでは以下の記述により親ウインドウに表示させようとしています。

function ctrl_wind(url) {
opener.location.href = url;
}

<a href="javascript:ctrl_wind('hoge.htm')">hoge</a>

この場合、hoge.htmlはインラインフレーム内に表示されてしまい、親ウインドウ全面にて表示はできませんでした。
この場合、どのように記述するのが良いでしょうか。

A 回答 (2件)

> しかしながら、リモコンウインドウ内の2個目のリンクをクリックすると、2個目は反応しませんでした。


> おそらく、1回目のリンククリックにより親ウインドウが変更されたため、openerでなくなったということではないかと思います。

原因はその通りだと思います。
リモコン側に変数を1つ作って、openerでたどれるうちに
親ウィンドウを取っておけばOKだと思います。

<script>
<!--
var wnd; // 親ウィンドウ
function ctrl_wnd(url) {
 wnd.location.href = url;
}
//-->
</script>

<body onLoad="wnd = opener.parent;">
    • good
    • 0
この回答へのお礼

できました。ありがとうございます。

お礼日時:2005/05/31 08:48

リモコンウィンドウからみるとオープナーはインラインフレームですので、その親を指定すればいいと思います。



function ctrl_wind(url) {
window.opener.parent.location.href = url;
}
    • good
    • 0
この回答へのお礼

ありがとうございます。
これにてインラインフレーム内ではなく親ウインドウに表示できました。
しかしながら、リモコンウインドウ内の2個目のリンクをクリックすると、2個目は反応しませんでした。
おそらく、1回目のリンククリックにより親ウインドウが変更されたため、openerでなくなったということではないかと思います。

この場合どうすればよいでしょうか。

お礼日時:2005/05/30 14:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!