親画面から子画面を指定した方法でオブジェクトを取得する方法について

このQ&Aのポイント
  • javascriptを用いて、親画面から子画面を開いた後、子画面に指定した方法でオブジェクトを取得する方法を探しています。
  • 特定のオブジェクトを変数ではなく、画面名で取得する方法について教えてください。
  • また、SEOを意識したハッシュタグを5つ作成しました。
回答を見る
  • ベストアンサー

画面オブジェクトを変数ではなく、画面名で取得する

いつもお世話になっています。 調査が行き詰ってしまったため、 皆様のご助言を頂きたく投稿しました。 javascriptを用いて、 親画面から子画面を開いた後、 子画面に下記のような処理をする方法を探しています。 <!-- 親画面で子画面を開く際の処理 var ko_gamen; ko_gamen = window.open(ko.html,"state"); ko_gamen.focus(); //<-(a) --> 処理(a)を下記の例のようにオブジェクトを格納した変数を使わず、 windowの名前を指定して子画面のオブジェクトを指定することは可能でしょうか。 また、可能であるならその方法を教えていただいてよろしいでしょうか。 //例 state.window.focus(); よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • think49
  • ベストアンサー率59% (285/482)
回答No.1

function getWindow (window, name) {  var win;  for (var p in window) {   win = window[p];   if (typeof win === 'object' && win && win.window === win && win.name === name) {    return win;   }  } } getWindow(window, 'state');

taira_s1009
質問者

お礼

ご回答ありがとうございます。 これは目からうろこです。 ウィンドウオブジェクト取得にこんな方法があったとは・・・。 これで作業が進めやすくなります。 ありがとうございました。

関連するQ&A

  • VBScriptで子画面へ配列のデータを渡したい!

    子画面(showModalDialogでオープン)で親画面から渡された引数を利用したいです。 親は配列を渡して、子はその配列の中身を参照したいです。 下記の例でやると、「エラー:型が一致しません。:'window.dialogArguments'」と、(1)の所で言われてしまいます。 色々探したのですが、JavaScriptの例や配列ではない場合の例ばかりでJVScriptの場合のやりかたがわかりません。 どなたか教えてください。 親画面 <script language="vbScript"> <!-- dim arg(20) arg(1) = "Value1" ~ arg(1) = "Value20" window.showModalDialog "ko.html",arg --> </script> 子画面 <script language="vbScript"> <!-- dim arg(20) arg = window.dialogArguments ・・・(1) Msgbox arg(1) --> </script>

  • ウィンドウ名からウィンドウオブジェクトを取得

    対象ブラウザはIE6~8です。 2つのウィンドウA/Bが連動するプログラムを作っています。 ウィンドウAにはウィンドウBを開くためのボタンがあり、 Aより先にBが開くことはありません。必ずAからBが派生します。 Aはwindow.openの戻り値を保持することで、B内部のJavaScriptにアクセスします。 Bはwindow.openerプロパティを経由することで、A内部のJavaScriptにアクセスします。 しかし、Aには自身をリロードする機能があり、 リロードすると保持していたBのウィンドウオブジェクトを失ってしまいます。 そこでAがリロードし終わったとき(onloadのタイミング)に、 何とかしてBのウィンドウオブジェクトを取得しなければなりません。 window.openではウィンドウに名前を付けることができますが、 その名前からウィンドウオブジェクトを取得するような、 document.getElementByNameみたいなメソッドは存在しないでしょうか? あるいは、BからAの監視を続け、リロードが終わった時に window.opener経由でメッセージを送る等の処理を実現する手段はないでしょうか? よろしくお願い致します。

  • 子画面でもう一つ教えて下さい

    window.openを使用して子画面を開けた時に親画面にフォーカスが行かないようにしたいのですが、何か良い方法はないでしょうか? フォーカスが行かないというのは、ダイアログボックスを表示した時のように親画面をクリックしても子画面が前面に出ており、親画面でデータの入力ができない状態を考えています。 よろしくお願いします。

  • javascriptでのエラーについて

    Windows7+IE8にて以下の処理を行いたいのですが、 ================================================== (1) 親ウィンドウ(oya_window.html)から、【window.open】にて   子ウィンドウ(ko_window.html)を開く (2) 子ウィンドウ(ko_window.html)の【window.opener】にて   親ウィンドウ(oya_window.html)に定義されている   【window.open】を実行する関数[openWindow]を呼び出し、   Yahooページを開く ================================================== (2)の部分で以下のエラーとなり、Yahooページを開く事ができません。 --------------------------------------------------------- このWebページのエラーにより、正しく機能しない場合があります。 --------------------------------------------------------- タグが無効です。 oya_window.html   ライン:10 コード:0      文字:5 --------------------------------------------------------- 同マシン(Windows7)のfirefoxでは問題なく処理が行えるため、IEの 何らかの設定に起因していると思うのですが、IEの何の設定に起因して いるのかわからず、困っています。 何か情報をお持ちの方いらっしゃいましたら、よろしくお願いします。 【その他情報】 ○IEをアドオンなしで起動しても同エラーが発生することから、IEの  アドオンによる影響ではないと思われます。 ○以下の処理は問題なく実行できます。  ▼パターンA  ==================================================  (1) 親ウィンドウ(oya_window2.html)から、【window.open】にて    子ウィンドウ(ko_window2.html)を開く  (2) 子ウィンドウ(ko_window2.html)にて(元々親ウィンドウ    (oya_window.html)に定義していた)【window.open】を実行する    関数[openWindow]を呼び出し、Yahooページを開く  ==================================================  ▼パターンB  ==================================================  (1) 親ウィンドウ(oya_window3.html)から、【window.open】にて    子ウィンドウ(ko_window3.html)を開く  (2) 子ウィンドウ(ko_window3.html)の【window.opener】にて    親ウィンドウ(oya_window.html)に定義されている    【document.bgColor】を実行する関数[changeColor]を呼び出し    親ウィンドウの背景色を灰色に変更する  ================================================== 【ソース】 ▼本来のパターン ==親ウィンドウ(oya_window.html)=================== <HTML> <HEAD> <TITLE>親ウィンドウ </TITLE> <script language="Javascript"> function koopen(){ window.open("ko_window.html","ko_window","status=yes,width=800,height=100"); } function openWindow(){ window.open("http://yahoo.co.jp","",""); } </script> </HEAD> <BODY> <a href="JavaScript:koopen();">子ウインドウを開く</a> </BODY> </HTML> ================================================== ==子ウィンドウ(ko_window.html)=================== <HTML> <HEAD> <TITLE>子ウィンドウ </TITLE> <script language="Javascript"> function helpop(){ window.opener.openWindow(); } </script> </HEAD> <BODY> <a href = "JavaScript:helpop();">Yahooページを開く</a> </BODY> </HTML> ================================================== ▼パターンA ==親ウィンドウ(oya_window2.html)=================== <HTML> <HEAD> <TITLE>親ウィンドウ </TITLE> <script language="Javascript"> function koopen(){ window.open("ko_window2.html","ko_window","status=yes,width=800,height=100"); } </script> </HEAD> <BODY> <a href="JavaScript:koopen();">子ウインドウを開く</a> </BODY> </HTML> ================================================== ==子ウィンドウ(ko_window2.html)=================== <HTML> <HEAD> <TITLE>子ウィンドウ </TITLE> <script language="Javascript"> function helpop(){ window.opener.window.open("http://yahoo.co.jp","",""); } </script> </HEAD> <BODY> <a href = "JavaScript:helpop();">Yahooページを開く</a> </BODY> </HTML> ================================================== ▼パターンB ==親ウィンドウ(oya_window3.html)=================== <HTML> <HEAD> <TITLE>親ウィンドウ </TITLE> <script language="Javascript"> function koopen(){ window.open("ko_window3.html","ko_window","status=yes,width=800,height=100"); } function changeColor(){ document.bgColor="CCCCCC"; } </script> </HEAD> <BODY> <a href="JavaScript:koopen();">子ウインドウを開く</a> </BODY> </HTML> ================================================== ==子ウィンドウ(ko_window3.html)=================== <HTML> <HEAD> <TITLE>子ウィンドウ </TITLE> <script language="Javascript"> function helpop(){ window.opener.changeColor(); } </script> </HEAD> <BODY> <a href = "JavaScript:helpop();">親ウィンドウの色を変える</a> </BODY> </HTML> ==================================================

  • [IE7]Object要素内から親ウィンドウの独自オブジェクトを参照したい

    以下のようなウェブページを作成しています。 iframe要素の代わりにObject要素を利用しようと思い、ウェブページ内にObject要素を設けて、別なウェブページを読み込んでいます。それぞれ「親」、「子」とします。「親」も「子」それぞれ別々なJavaScriptファイルでオブジェクトを持たせています。 いま、「子」から「親」の持つオブジェクトを利用しようと思っています。今回は仮に「obj」とします。objは「親」の中でグローバルにスコープされています。 iframeの時と同じように「window.parent.obj」で「親」の持つオブジェクトにアクセスしてみました。FirefoxやOperaではアクセスが成功し、「親」の持つオブジェクトにアクセスできました。やったね(^-^) しかしInternet Explorer7のデバッグ・コンソールには「"window.parent.obj"はNullまたはオブジェクトではありません」のエラーが出ます。 ループを使ってオブジェクト「window.parent」の内容を出力してみましたが、再帰的に3回繰り返しても「obj」は含んでいませんでした。 Internet Explorer7でも「親」のオブジェクトにアクセスする方法をご存知の方、ご教授願います。不可能な場合は不可能な旨、お伝えください。

  • window.openで子画面を開いた後、子画面上にあるボタン(または

    window.openで子画面を開いた後、子画面上にあるボタン(またはリンクなど)を押下した場合に親画面にフォーカスをセットし前面に出力したい。 親画面と子画面は別ドメインのリソースとなります。 window.open("","親のwindow名","")を実施することで同一ドメイン間は想定通りの動きが可能ですが、異なるドメイン間の場合「アクセスが拒否されました」となってしまいます。 そこで、本事象の解決策として ?インターネットオプションの設定変更で回避可能か? ?window.open以外にやり方があるか?  →window名がわかっている場合、window.open以外に良い方法がないものでしょうか。。。 を教えてください。

  • windowの名前について

    こんにちは! 現在WEBページを作っています。 やりたいことは、既に開いている指定した名前のウィンドウを閉じる、指定した名前のウィンドウのパラメータに対して値を入れる、ということなのですが、名前を指定した場合のウィンドウの指定の仕方が分かりません。 例えば、AAAAというウィンドウを作って、javascriptで新規に開いておきます。 その後、AAAAという名前のウィンドウを対象にした処理を走らせたいわけです。 ネット上ではwindow.openerやオブジェクトを使用した指定の仕方を見つけたのですが、名前そのもので指定を行いたいので、やりたいこととは違いました。 window.openerでは親画面を指します。逆に、子画面に対しての処理ができれば、私の方では問題ありません。 すみませんが、回答をお願いいたします。

  • 親ウィンドウの別フレームを子ウィンドウから操作したい

    いろいろ試しているのですが、理解不足のせいでしょうが、どうやってもできません! 内容は以下の通り(分からないのは3)です。どうぞ宜しくお願いいたします。 1:画面を、AとBの2つのフレームに分割しています。 【index.html】 <frameset>  <frame src="A.html" name="A">  <frame src="B.html" name="B"> </frameset> 2:Aフレーム内に記述してあるaaaアンカーをクリックすると、子画面ko.htmlを開きます。 <a href="javascript:void(0)" onclick="window.open('path=ko.html','_blank');">子画面</a> 3:ko.htmlではbbbというアンカーがあって、それをクリックすると、"親画面のBフレームにbbbで指定したリンク内容を表示したい"のです。 <a href="javascript:void(0)" onclick="opener.window.location=('B?path=/home/~/~/ZZZ.html');">開きたいファイルZZZ.html</a> と書くと、openerはAだからAにZZZ.htmlの内容が表示されてしまうので、(全くおかしな記述をしているのかもしれませんが・・・(- -;))あちこち調べながら、 B.opener.window.locationとか、 B.opener.window.location.hrefとか、 parent.B.window.locationとか、 parent.frames[1].window.locationとか、 ほかにもいろいろやってみたのですが、出来ませんでした・・・。 このような別フレームの操作が出来る方法があれば教えてください。 宜しくお願いいたします。

  • 「画面が閉じられた」という行為をトリガーとして使えますか?

    親画面から子画面をポップアップ表示し、子画面に作成したボタンから(window.opener)をコールして、子画面を閉じる→親画面の処理を行う、という処理を実現しています。 ボタン押下時にJavaScriptをコールすることで処理は行えるのですが、ウィンドウの右上にある「×」ボタンや、タスクバーを右クリック→閉じるなどを行った際にも同じような処理を行うことはできるのでしょうか? 「画面が閉じられた」というトリガーにて処理を行うことができるのでしょうか? よろしくおねがいします。

    • ベストアンサー
    • Java
  • 子画面から親画面をクローズしたい

    子画面から親画面をクローズすると確認メッセージが表示されます。 非表示の方法はありますか? 現在の処理内容:  親画面:   ボタン押下時 onclick="window.opener='main';window.open('URL');return false;"  子画面:   onload時 window.opener.close(); 確認ブラウザ:IE10、Chrome43  ※IE10では表示されるが、Chrome43では表示されない。

専門家に質問してみよう