プロが教える店舗&オフィスのセキュリティ対策術

初めまして。JavaScript初心者です。
今回、以下のようなことをやろうと考えております。

(1)あるウィンドウフレームセット(フレームセット(1)とします)を配置し、フレームでウィンドウを2分割し、上半分のフレーム名をフレームA、下半分のフレーム名をフレームBとします。

(2)フレームAに配置されたボタンを押すことにより、別のウィンドウを呼び出します。そのウィンドウにもフレームセット(フレームセット(2)とします)を配置し、そのフレームセット内もフレームを2分割し、上半分のフレーム名をフレームC、下半分のフレーム名をフレームDとします。

(3)フレームCに配置されたボタンを押すことにより、フレームD内にさらにフレームセット(フレームセット(3)とします)を配置し、フレームセット(3)内もフレームを2分割し、上半分のフレームをE、下半分のフレームをFとします。

(4)フレームEに配置されたボタンを押すことにより、フレームBをリロードします。

(1)~(3)はすべて正常に処理できるのですが、(4)がうまくいきません。
window.opener.フレームB.location.replace("フレームBのURL")
でうまくいくと思ったのですが、うまくいきません。

 つたない質問の書き方で大変申し訳ありませんが、どなたか分かる方がいらっしゃいましたらご教示いただけないでしょうか。宜しくお願い致します。

A 回答 (3件)

結局のところ、A~Fの構成はどのようになっているのでしょうか?


私の解釈では、最終的に

フレームセット1(1つめのウィンドウ)
├ A ─┐
└ B   │ open
      ↓
フレームセット2(2つ目のウィンドウ)
├ C
└ D(フレームセット3)
  ├ E
  └ F

となっているのですが、このような構成の場合、EからBを参照するには
  top.opener.parent.フレームB
とします。

<解説>
ウィンドウのオープン元の参照には opener を使いますが、opener は window.open によって新たに開かれたウィンドウしか持っていないので、この場合、フレームセット2にしかありません。
そこでEからはまず top でフレームセット2を参照し、そこから opener を参照する(つまり top.opener とする)必要があります。

また、top.opener が示すのはフレームセット1ではなくフレームAなので、top.opener からフレームBを直接参照することはできません。
ここではフレームAとBが兄弟なので、いったん親(top.opener.parent)を経由してフレームBを参照します。

なお、リロードを行う場合は、location.reload() というそのままのメソッドがありますので、こちらを使いましょう。
つまり、
  top.opener.parent.フレームB.location.reload()
となります。
    • good
    • 0

 window.opener.opener.フレームB.location.href



 これでどうでしょう?
    • good
    • 0

このあたり↓が参考になりませんでしょうか。


http://oshiete1.goo.ne.jp/kotaeru.php3?q=723500
http://www.ybi.co.jp/koike/qa2000/qa2488.htm
    • good
    • 0

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