4つのフレームから成る画面より子画面を開き、
(2番目のフレームに子画面を呼び出すボタンが有ります)
子画面から親画面の2番目と3番目のフレームのデータを
操作したいのですが、上手くいきません。

window.top.opener.frames[1].formxxx.xxxx.value=xxxxx;
window.top.opener.frames[2].formxxx.xxxx.value=xxxxx;
で良いと思ったのですが。。。

どなたか分かる方いらっしゃったら教えて下さい。

このQ&Aに関連する最新のQ&A

A 回答 (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でもアクセスできますが、他のフレームからサブウィンドウが開かれた時に対応できないので、このようにフレーム群の親までアクセスした方が良いでしょう。
(例えこのサブウィンドウが他のフレームから開かれなくても、別のサブウィンドウを開くことになった時に流用できますので、やはりこのようにします。)
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/07/04 10:05

すいません、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を付けてやればいいって事なのです。(^-^)
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/07/04 10:06

こんにちは。


子画面から
window.opener.top.[framename].document.[formname].[textname].value
で出来ますよ。

[framename]=フレームの名前
[formname]=フォームの名前
[textname]=INPUT TEXTの名前
    • good
    • 0
この回答へのお礼

試してみましたが、
「'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'はオブジェクトではありません」
というエラーが発生してしまいます。

このことから何かお分かりになるでしょうか?

お礼日時:2001/07/03 15:27

documentが抜けてませんか?



・・・frames[2].document.formxxx...
    • good
    • 0
この回答へのお礼

documentを入れても変わりませんでした。

ちなみに
「window.top.opener.frames[1].document.formname.textname.value=XXX」
とすると
「'window.top.opener.frames.1.document'はオブジェクトではありません」
というエラーが発生してしまいます。

[]が化けてしまってるのでしょうか?
それとも単なる表示上の不具合なのでしょうか?

以上、何かこのことからお分かりになったら、教えて下さい。

お礼日時:2001/07/03 15:30

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q画面の設定以外で文字の大きさを変更したい場合

こんばんは。WinXPを使っています。
画面のプロパティーから解像度を変更しても、文字の大きさが大きく感じます。WinXPの画面の設定から文字の大きさを変更する場合は解像度を変更しればいいと思うのですが、それでも小さくならない場合はどのようにして文字を小さくする事ができるでしょうか?

Aベストアンサー

解像度以外の手段では
画面のプロパティ→「デザイン」タブ→詳細設定
で、アクティブタイトルバー、パレットタイトル、ヒント、メッセージボックス、メニュー、選択項目、非アクティブタイトルバーの文字の大きさをポイント単位で変更できます。

ブラウザの文字の大きさなら、ブラウズの最中にマウスのスクロールボタンをCtrlボタンを押しながらグリグリすると5段階に変更できます。

ExcelやWordでしたら、ツール→オプション→全般タブから標準の文字の大きさをポイント単位で変更できます。

Qwindow.opener.location.href でtargetを指定したい

window.opener.location.hrefでtarget=_parentを使用したいのですが、可能ですか?
可能でしたら記述方法を教えてください。

Aベストアンサー

window.opener から見て _parent ならば、
  window.opener.parent.location.href = URL;
でいいと思いますよ。

Q「新しいウィンドウで開く」で開く画面の大きさの変更の仕方を教えて下さい。

 恐れ入ります。初歩的な質問で済みません。
検索結果などがたくさん出て、それら一つ一つを右クリックで「新しいウィンドウで開く」をクリックし表示される画面の大きさを変更するにはどうしたら良いのでしょうか?
 ちなみに今は画面の中央に小さく表示されるのですが、目一杯の大きさに変更したいのです。
どうか宜しくお願い致します。

Aベストアンサー

>検索結果などがたくさん出て

タブブラウザを使った方がいいかな~と思います。

IEだと仰る様に一つ一つを右クリックで「新しいウィンドウで開く」をクリック
するのも面倒ですし、下におろすのも面倒です。

タブブラウザなら、画面がウインドウだらけになるうっとうしさも無いですし、
ポップアップも制御できます。

画面の切り替えもタブをクリックするだけですし、たくさんひらいた
ページをまとめて閉じることもできます。

ご存知でしたら失礼しました。

QIE7でdocument.styleSheets[n].addRuleがエラーに

こちらのCSSにルールを追加するスクリプト
http://bmky.net/text/note/javascript-css.html
を使い、IE7でCSSを操作しようとするとエラーを吐きます。

このスクリプトの場合、対象ブラウザはIE6.0までと書いてあるのですが、
IE7で同じようなことをしようとする場合、
どのようなコードを書けばいいのでしょうか。

ご教授お願いいたします。

Aベストアンサー

createStyleSheet()を使うとか

QOutlookメールで、画面の文字の大きさを変更するには、どうしたらよ

Outlookメールで、画面の文字の大きさを変更するには、どうしたらよいのですか。

Aベストアンサー

画面の文字の大きさは、
[表示] メニュー → [現在のビュー] → [現在のビューの編集] →
[その他の設定] と [自動書式] の項目でそれぞれフォントの大きさが変更できます。
また、送信メールとテキスト形式の受信メールのフォントの大きさは、
[ツール] メニュー → [メール形式] タブ → [ひな形およびフォント] → [ひな形] タブでそれぞれ変更できます。

Q別窓ウィンドウから親ウィンドウの操作でopener.location.hrefで親ウィンドウに渡せる文字数について

非常に困っています。良かったら教えて下さい。
サブウィンドウズを閉じたときに親ウィンドウにある値を
渡して飛ばしたいのですが、かなり項目数が多くて、
javascriptエラーになります。
渡せる文字数は、何文字いないとかいう規定はあるのですか?
教えて下さい。

もし、あるのであれば、代替案はありますか?

Aベストアンサー

サンプル作ってみた

---"main.html"---
<form onsubmit="
window.name='main';
window.open('sub.html', '_blank');
return false;
">
<input type="submit" value="sub">
</form>


---"sub.html"---
<form action="http://www.google.com/search" target="main" >
<input name="q" value="javascript">
<input type="button" value="検索" onclick="
this.form.submit();
window.close();
">
</form>

Q最初に表示されるIEの画面の大きさは、変更可能?

こんにちは、みなさん。

インターネットを見る時に、最初に表示される、インターネットエクスプローラーの
画面の大きさは変更できますか??

変更できるなら、どんなやり方ですか??

ご存知の方、いらっしゃいましたら、宜しくお願いします。

Aベストアンサー

IEを起動して始めに表示される画面(ホームページ)の状態で操作します。
マウスを使って表示させたい大きさにIEの全体のウィンドウを変更します。
任意の大きさと位置が決まったら「Shiftキー」を押しながら閉じるボタンをクリックしてIEを終了させます。

※Shiftキーでうまくいかない場合はShiftキーの替わりにCtrlキーを使って試してみてください
※大きさを決めるときは、いつも始めに開いたページでウィドウの大きさ・位置を決めるのがコツです
※IEにい限らず、エクスプローラも同じ要領で変更できます

Qwindow.closeもしくはwindow.opener.closeで警告を表示させない方法

宜しくお願い致します。
ログイン画面を作っております。
ログインフォームからID、パスワードでログインした際に、子ウィンドウを表示させます。その際に、残った親ウィンドウを子ウィンドウが開いた際に閉じたいのですが、window.closeもしくはwindow.opener.closeで閉じると警告ダイアログが表示されてしまいます。この警告ダイアログを表示させない方法はありますか?window.closeもしくはwindows.opener.closeで警告を表示させない様にする事が不可の場合、同じ動作が出来る関数はありますか?

Aベストアンサー

警告ダイアログを表示させないためには、その閉じようとする
ウィンドウに対して、親ウィンドウが存在している必要が
あったと記憶しています。

子ウィンドウを使わないでログインできるようにするほうが
スマートではないでしょうか?

Qようこそ画面アイコン大きさ変更

ようこそ画面でアイコンの大きさを変更したいのですが、どのようにしたらよいでしょうか、
ちなみに以下のレジストリー変更ではダメでした。
HKE_CURRENT_USER→desktoptop→logpixelsで数値の値を変える

Aベストアンサー

変えられないと思います。

Qwindow.openerでセットした値でCGIの動作が変わってしまいます。

webメーラーをphpで作成中ですが、住所録を子ウィンドウで一覧表示、対象となるメールアドレスをクリックすると親ウィンドウのTo欄にメールアドレスがセットされるようなjavascriptを組んでいます。
To欄に直接メールアドレスを入力してのメール送信はOKなのですが,住所録から選択したメールアドレスでは送信時にエラーとなってしまいます。
お知恵を拝借させてください。

いろいろ試した結果、JS側の問題かなと推測したのでこちらのカテゴリに投稿します。カテゴリ違いであればご指摘ください。
文字数制限もある為、必要な情報は随時出します。

PHP側でのsend時のエラー:
Failed to connect to :25 [SMTP: Failed to connect socket: $addr cannot be empty (code: -1, response: )]
子ウィンドウのJS
function emailSet(val) {
window.opener.document.form1.to.value = val;
window.close();
}

環境等:
クライアント(WindowsVista)
ブラウザ(IE7/Firefox)
サーバー(Windows2003)PHP5/Smarty/PEAR
親、子ウィンドウ共にShift-JIS

現在まで調べたこと:
手入力したときも住所録からセットしたときもphpのvar_dumpで見た限りではまったく同じでした。
Toへの直接入力・・・OK
親ウィンドウにボタンを配置してjavascriptでToへメールアドレスを代入・・・OK
子ウィンドウからメールアドレス固定でToへ代入・・・NG

webメーラーをphpで作成中ですが、住所録を子ウィンドウで一覧表示、対象となるメールアドレスをクリックすると親ウィンドウのTo欄にメールアドレスがセットされるようなjavascriptを組んでいます。
To欄に直接メールアドレスを入力してのメール送信はOKなのですが,住所録から選択したメールアドレスでは送信時にエラーとなってしまいます。
お知恵を拝借させてください。

いろいろ試した結果、JS側の問題かなと推測したのでこちらのカテゴリに投稿します。カテゴリ違いであればご指摘ください。
文字数制...続きを読む

Aベストアンサー

連投失礼。
サーバへのpostにAjaxとか使ってるなら、Firefoxにfirebug入れてモニタリングするのもいいかもしれない?
(私はProxomitron使ってるけど・・・Vistaで使えるかわからない)


人気Q&Aランキング

おすすめ情報