- PR -

親ウィンドウから子ウィンドウのURLを変更したい

1
投稿者投稿内容
yuki
会議室デビュー日: 2005/06/08
投稿数: 11
投稿日時: 2005-11-09 17:05

お世話になっております。

今、親ウィンドウから子ウィンドウを呼び出し子ウィンドウの
URLを変える方法で困っています。

子ウィンドウは上下2つのフレームに分かれており、
2つのフレームとも別々のURLに変更したいと思っております。

ちなみにフレームページはJSPで作成しております。

親画面のJavaScriptで、

function OpenWin(){
//子ウィンドウを開く
var subWin = window.open('〜frame.jsp', 'sub');

//フレームのURL変更
subWin.top.frame1.location = '変更したいURL1〜.jsp'; //上のフレーム
subWin.top.frame2.location = '変更したいURL2〜.jsp';  //下のフレーム

}


このように書いているのですが、
「subWin.top.frame1」はオブジェクトではありません
というエラーが出てしまいます。

私の書き方が間違っているのだと思いますが、
WEBで調べて、うまくいったという人のやり方を参考に
してみたのですが、それもうまくいきませんでした。

私の知識不足で大変申し訳ないのですが、
もし解決方法をご存知の方がいらっしゃいましたら
ご教授よろしくお願い致します。
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2005-11-09 18:17
これは、続けて書いているんでしょうか?
そうだとすると、子がしっかりフレームセットをロードしない(フレームができてない)うちに、
親がフレームに対してURLを変えろ、と言い出しているような気がするんですが。
でっち6号
大ベテラン
会議室デビュー日: 2005/01/31
投稿数: 176
お住まい・勤務地: Kawasaki
投稿日時: 2005-11-09 18:30
こんにちは、でっちです。

ちょっと試してみましたが、yukiさんの書き方でうまくいきましたよ?
(開く関数と、書き換える関数は別にしましたが...)

とりあえずtypeof()を使って、どれがオブジェクトと認識されていないかを切り分けてみては如何でしょうか。
書き換える処理の直前に
alert("typeof(subWin)=" + typeof(subWin));
alert("typeof(subWin.top)=" + typeof(subWin.top));
alert("typeof(subWin.top.frame1)=" + typeof(subWin.top.frame1));
と書いてみて下さい。
"undefind"と出たものが認識されていないオブジェクトということになります。
(正常時は"object"と表示されます)

1番目でundefindになれば、変数subWinのスコープに問題があると考えられます。
3番目でundefindになれば、framesetで宣言している名称が誤っていると考えられます。
#2番目でundefindになる状況はちょっと思いつかないですね(^_^;
#topは無くてもOKなはずですし。

alertを入れてみたらOKになったと言うのであれば、mioさんの仰るとおりロード前に操作したって事でしょうね。
yuki
会議室デビュー日: 2005/06/08
投稿数: 11
投稿日時: 2005-11-09 19:45
mioさん、でっち6号さん、
早速のお返事ありがとうございます。

mioさんがおっしゃっていたように、
ページをロードしていないうちにlocationを
変更しようとしているのではないかという
指摘に対してですが、
setTimeout関数でしばらく経ってから
locationを変更してみたのですが、やはり同じでした。

でっち6号さん、ありがとうございます。
でっち6号さんと同じように、
開く関数と書き換える関数を別にしてみた所、
うまくいきました。
なぜ別にしたらうまくいったのか分からないのですが、
alertで出した結果はすべてobjectになっていたので、
関数を別にしたら動くかもしれないと思い、
やってみた所うまくいきました。

本当にありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)