- ベストアンサー
子画面から親画面のデータを操作するには?
4つのフレームから成る画面より子画面を開き、 (2番目のフレームに子画面を呼び出すボタンが有ります) 子画面から親画面の2番目と3番目のフレームのデータを 操作したいのですが、上手くいきません。 window.top.opener.frames[1].formxxx.xxxx.value=xxxxx; window.top.opener.frames[2].formxxx.xxxx.value=xxxxx; で良いと思ったのですが。。。 どなたか分かる方いらっしゃったら教えて下さい。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
2番目のフレームのHTML構成を <FORM name="f1"> <INPUT type="text" name="t1"> </FORM> とします。 このとき window.opener.parent.frames[1].document.f1.t1.value = 値; でOKです。 (IE5.0、NN4.7で動作確認済み) window.opener.parentで、4つのフレーム分けをしているHTMLへアクセスし、配列framesで各フレームにアクセスします。 そこから下は、各HTML内でのオブジェクトへのアクセスと同じです。 HIROYOさんの言うように2番目は実親なのでopnerでもアクセスできますが、他のフレームからサブウィンドウが開かれた時に対応できないので、このようにフレーム群の親までアクセスした方が良いでしょう。 (例えこのサブウィンドウが他のフレームから開かれなくても、別のサブウィンドウを開くことになった時に流用できますので、やはりこのようにします。)
その他の回答 (3)
すいません、2番目のフレームが呼び出し元だったんですね。 見逃していました。(^^;; それでしたら、2番目と3番目とでは、アクセスの仕方が違います。 まず、2番目のフレームは子画面の呼び出し元になりますので、 window.opener.document.formxxx.xxx.value=xxx; でアクセス可能です。 そして、3番目のフレームは、 window.opener.parent.frames[2].document.formxxx.xxx.value=xxx; でアクセスできます。 window.openerは、呼び出した元の画面へのアクセスになります。 2番目のフレームから子画面を呼び出しているのであれば、window.openerは2番目のフレームになります。 他のフレームにアクセスしたい場合は、window.openerの後に、該当フレームからアクセスしたい他のフレームへのアクセスを付け足してやればOKです。 つまり。(笑) 2番目のフレームから3番目のフレームにアクセスする場合、 parent.frames[2].document.formxxx.xxx.value=xxx; と書きますよね? それにwindow.openerを付けてやればいいって事なのです。(^-^)
お礼
できました!! ありがとうございます。
- President
- ベストアンサー率57% (12/21)
こんにちは。 子画面から window.opener.top.[framename].document.[formname].[textname].value で出来ますよ。 [framename]=フレームの名前 [formname]=フォームの名前 [textname]=INPUT TEXTの名前
お礼
試してみましたが、 「'window.opener.top'はオブジェクトではありません」 というエラーが発生してしまいます。 唯一エラーが発生しないのが 「window.top.opener.document.formname.textname.value=XXX」 という方法ですが、これでは3番目のフレームに値をセット することができません。 「window.top.opener.framename.document.formname.textname.value=XXX」 とすると 「'window.top.opener.framename.document'はオブジェクトではありません」 というエラーが発生してしまいます。 ちなみに 「window.top.opener.frames[1].document.formname.textname.value=XXX」 とすると 「'window.top.opener.frames.1.document'はオブジェクトではありません」 というエラーが発生してしまいます。 このことから何かお分かりになるでしょうか?
documentが抜けてませんか? ・・・frames[2].document.formxxx...
お礼
documentを入れても変わりませんでした。 ちなみに 「window.top.opener.frames[1].document.formname.textname.value=XXX」 とすると 「'window.top.opener.frames.1.document'はオブジェクトではありません」 というエラーが発生してしまいます。 []が化けてしまってるのでしょうか? それとも単なる表示上の不具合なのでしょうか? 以上、何かこのことからお分かりになったら、教えて下さい。
お礼
できました!! ありがとうございます。