• ベストアンサー

子Windowの操作(親Window遷移後)

親画面Aから、子画面B(window.open("./test2.html","aaa","width=500,height=300,resizable=yes");)を開き、親画面Aが別画面Cに遷移した状態で、画面Cから子画面Bの操作はできるのでしょうか?

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

  • ベストアンサー
  • EUR
  • ベストアンサー率61% (29/47)
回答No.5

何度も何度もすみません・・・ ×ボタンでウインドウを閉じたときに、window.openで取得したウインドウオブジェクトWが消去されているのかもしれません。 test4.htmlのソースを以下のように変更してみてください。 ダミーページ(ウインドウ制御用) test4.html <HTML> <head> <script language="javascript"> var W; function NewWin() { W = window.open("./test2.html","aaa","width=500,height=300,resizable=yes"); } function CloseWin() { if (window.W) { window.W.close(); } } </script> </head> <body> </body> </HTML>

mikmik_a
質問者

補足

返事が遅れてすみません。 試して見ましたが、閉じるを押しても閉じられませんでした。 環境はWinXP Pro SP2 IE6です。

その他の回答 (5)

  • EUR
  • ベストアンサー率61% (29/47)
回答No.6

うーん・・・どうしてでしょう? 現在のソースはNo2のソースに、test4.htmlのソースをNo5のものに変えただけのものでしょうか? もしよろしければ、提示できる範囲で結構ですので、ソースを示していただくことは出来ないでしょうか? よろしくお願いいたします。

  • EUR
  • ベストアンサー率61% (29/47)
回答No.4

すみません、私の環境ではエラーが出ません・・・ 私の環境はXPsp1 IE6 とXPsp2IE6 です。 なんででしょうね? お手数かけますが、No1とNo2のソースはフレーム以外でも若干変更しておりますので、すべてのソースをNo2から取り直して、もう一度試していただけないでしょうか? それから、エラーが出るときの手順を書いて頂けるとうれしいです。 また、よろしければPCの環境を教えていただけないでしょうか? よろしくお願いいたします。

  • EUR
  • ベストアンサー率61% (29/47)
回答No.3

あまり考えないで作ったので、どこかミスがあるのかもしれません。 エラー内容を教えていただけないでしょうか。 よろしくお願いいたします。 注意点ですが、 ・最初に開くHTMLはtestframe.htmlです。 ・test4.htmlで外部変数でWを定義します。

mikmik_a
質問者

補足

test4.htmlの9行目で、'window.W'はNullまたはオブジェクトではありません。というメッセージが出ます。

  • EUR
  • ベストアンサー率61% (29/47)
回答No.2

閉じる動作でしたか・・・No1の方法ではどうしても一回開いてしまいますね。 ちょっと強引ですが、親画面Aのと同レベルの階層にダミーのフレームを用意しておいて、ウインドウを開く、閉じるといった動作をダミーフレームのJavaScriptで行うという手もあります。 例 フレーム階層 フレーム構成のHTML(testframe.html)   +main 親画面A(test.html)   -dummy ダミーページ(test4.html) ダミーページに用意するJavaScript NewWin() → 新規ウインドウ(test2.html)のオープン CloseWin() → 開いたウインドウのクローズ 親画面Aから子画面Bの生成 parent.dummy.NewWin(); 親画面Cから子画面Bの消去 parent.dummy.CloseWin(); 以下ソース フレーム生成のページ testframe.html <HTML> <frameset rows="100%, *" frameborder="no" border="0" framespacing="0"> <frame name="main" src="test.html"> <frame name="dummy" src="test4.html" scrolling="no"> </frameset> </HTML> ダミーページ(ウインドウ制御用) test4.html <HTML> <head> <script language="javascript"> var W; function NewWin() { W = window.open("./test2.html","aaa","width=500,height=300,resizable=yes"); } function CloseWin() { window.W.close(); } </script> </head> <body> </body> </HTML> 親画面A test.html <HTML> <body onLoad="parent.dummy.NewWin()"> <a href="test3.html">koko</a> </body> </HTML> 子画面B test2.html <HTML> <body> テスト2 </body> </HTML> 遷移後親画面C test3.html <HTML> <body> テスト3 <br> <input type="button" value="閉じる" onClick="parent.dummy.CloseWin()"> </body> </HTML>

mikmik_a
質問者

補足

サンプルを作っていただきありがとうございます。 早速動かそうと思ったのですが、 test3.htmlで閉じるボタンを押すと、 test4.htmlのCloseWin()でエラーになってしまいます。 どこかおかしいところがあるのでしょうか? よろしくおねがいします。

  • EUR
  • ベストアンサー率61% (29/47)
回答No.1

ダミーでwindow.openをかましてあげれば出来ます。 以下の例では、 1.親画面Aのロード時に子画面Bを生成します。 2.親画面Aのkokoをクリックして、親画面をCへ遷移させます。 3.親画面Cで変更ボタンを押下すると、 3-1.window.open("","aaa")をダミーで呼び出します。 3-2.もともとあったaaaというウインドウの内容を変更させています。 例 親画面A test.html <HTML> <head> <script language="javascript"> function NewWin() { window.open("./test2.html","aaa","width=500,height=300,resizable=yes"); } </script> </head> <body onLoad="NewWin()"> <a href="test3.html">koko</a> </body> </HTML> 子画面B test2.html <HTML> <body> テスト2 </body> </HTML> 遷移後親画面C test3.html <HTML> <head> <script language="javascript"> function change() { W = window.open("","aaa"); //ダミーでaaaという名前のウィンドウを生成します window.W.document.write("テスト2は変更されました"); } </script> </head> <body> テスト3 <br> <input type="button" value="変更" onClick="change()"> </body> </HTML>

mikmik_a
質問者

補足

ご回答ありがとうございます。 私も、この方法を見つけてやってみたのですが、 今回やろうとしているのが、遷移後の画面Cにて、子画面を閉じる処理を行いたいのですが、画面Cで、ボタンを押す前に、子画面Bが閉じられている場合に、画面が開いた直後に閉じるという現象が発生してしまうので、どうにかこれを回避したいと思っているので、いい方法があればご教授のほどよろしくお願いします。

関連するQ&A

  • Javascriptでの小画面表示を閉じた後

    Javascriptでの小画面表示を閉じた場合の親画面の挙動 現在、以下のロジックで親画面から子画面を呼んでいます。 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- winAAA = window.open("","winAAA","menubar=no,status=yes,scrollbars=yes,width=600,height=800,resizable=yes"); document.AAA_Form.action="BBB.do"; document.AAA_Form.target="winAAA"; document.AAA_Form.submit(); winAAA.focus(); ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- window.close();を使い、子画面の閉じるボタンで子画面を閉じているのですが、 なぜか、親画面の他ボタンを押下するとwindow.openしてない画面遷移のはずが、 新規子画面で立ち上がってしまいます。 原因がわかる方、ご教示お願いいたします。 動作環境は、以下となります。 OS:XP IE:IE8

  • 親ウィンドウを切り替えたときの子ウィンドウの閉じ方

    画面Aから画面BをsubName = window.openで開き親子の ウィンドウが開いている状態で画面Aを画面Cに遷移させます。 この後で画面Cから画面Bを閉じる方法がわかりません。 画面A(親)⇒ 画面C(親?) | 画面B(子)

  • Javascript使用時に画面にキャッシュが残らない

    Aという画面に***.jsという外部ファイルにwindows.openのjavascriptを設定しています。 A→Bという画面遷移を行っているのですが、 B→Aに history.back(); にて戻る際にA画面にて入力した項目(例えばテキストボックスの値)がクリアされてしまいます。 ちなみにwindows.openのScriptを実行しない場合には項目のクリアは起こりません。 function helpopen() { var AAA= window.open('URL', 'AAA','width=400,height=300,scrollbars=1,resizable=1'); } 上記のScriptをチェックしていたのですが、 window.open('URL', 'AAA'); とURLのみでもクリアの現象が起こってしまいます。 JavaScriptを使用した際にクリアが起こってしまう現象を回避する方法はありますでしょうか?

  • window.openで同画面遷移しない

    window.openで別窓でウィンドウを開き、開いたウィンドウは親ウィンドウにあるリンク1、リンク2、リンク3をクリックすると別窓で開いたウィンドウが同画面遷移で変わるようにしたいのですが、IEで各リンクをクリックすると新規ウィンドウが立ち上がってしまいます。Firefoxでは問題ないのですが。 <head>~</head>内に以下のjavascriptを書きました。 <script type="text/javascript"> <!-- function winOPEN(URL,winName) { window.open(URL, 'window1', 'width=400, height=300, menubar=no, toolbar=no, scrollbars=yes'); } // --> </script> またリンクのhtmlは以下のようにしました。 <ul> <li><a onClick="winOPEN('URL','window1')" title="" href="#">リンク1</a></li> <li><a onClick="winOPEN('URL','window1')" title="" href="#">リンク2</a></li> <li><a onClick="winOPEN('URL','window1')" title="" href="#">リンク3</a></li> </ul> どこがいけないのでしょうか。教えてください。

  • ブラウザサイズをフルサイズで表示させる方法

    ブラウザにタイトルバーとスクロールバーとスタートバー以外を表示しないページを作成したいのですが、 XPはOKで、WIN98でうまくいきませんでした。リンク先をクリックすると別ウィンドウが立ち上がる仕組みです。画面サイズに合わせて変わるようなのですが、WIN98では、スクロールバーが途中で切れてしまい、 一番下まで、綺麗に表示できませんでした。これ以外の方法でもかまいませんので、どなたかご伝授いただければと思います。 function wopen(url){ if(screen.width <= 640){ window.open(url,"_blank","resizable=no,menubar=no,status=yes,location=no,scrollbars=yes,toolbar=no,width=640,height=480,left=0,top=0") }elseif(screen.width <= 800){ window.open(url,"_blank","resizable=no,menubar=no,status=yes,location=no,scrollbars=yes,toolbar=no,width=800,height=600,left=0,top=0") }else if(screen.width <= 1024){ window.open(url,"_blank","resizable=no,menubar=no,status=yes,location=no,scrollbars=yes,toolbar=no,width=1024,height=768,left=0,top=0") }else if(screen.width <= 1152){ window.open(url,"_blank","resizable=no,menubar=no,status=yes,location=no,scrollbars=yes,toolbar=no,width=1152,height=864,left=0,top=0") }else if(screen.width <= 1280){ window.open(url,"_blank","resizable=no,menubar=no,status=yes,location=no,scrollbars=yes,toolbar=no,width=1280,height=1024,left=0,top=0") }else{ window.open(url,"_blank","resizable=no,menubar=no,status=yes,location=no,scrollbars=yes,toolbar=no,width=1600,height=1240,left=0,top=0") } return; } : <A href="javascript:wopen('/index.html')">

  • SAStruts 親画面から子画面遷移し、子画面の選択結果を親画面に反

    SAStruts 親画面から子画面遷移し、子画面の選択結果を親画面に反映させたい お世話になります。 わかりやすい例で言いますと、 親画面で「郵便番号」を入力させたいが、わからない場合で 一度、子画面(地域名などを検索条件として、郵便番号を検索する子画面)に遷移し、 選択した結果を親画面に反映(郵便番号のセット)をする ようなことがしたいアプリを作成中です。 以下のようにJSPをコーディングしてみたのですが、上手く子画面が表示されません。 申し訳ありませんが、お助けいただきたいです。 <input type="button" value="検索" onClick="window.open("/アクションクラス名/メソッド名/","子画面の名前","width=240,height=160")" /> よろしくお願いいたします。 SAStrutsのバージョンは、sa-struts-1.0.4-sp8 です。 Javaは、1.6です。

    • ベストアンサー
    • Java
  • window.openについて。

    初歩的な質問で申し訳ありません。 ★<script> function openWin(filename){ newWin = window.open(winname + ".html", "", "width=300, height=200, location=no, menubar=no, toolbar=no,resizable=yes"); } </script> ★<a href="JavaScript:openWin('pr00001')">PR00001</a> ・・・という二つのパーツ(★)があるのですが ここで分からないことがあります。 『function openWin(filename)』の『filename』にpr00001というhtmlファイルを埋め込む・・というのは理解できるのですが最初のパーツにある『newWin = window.open(winname + ".html"・・・』の中の『winname + ".html"』とは何を指しているのでしょうか・・・・。 大変申し訳ありませんがご指導お願いいたします。

  • window.open [object]

    <A href="window.open('a.htm','test','width=100, width=200');">リンク</A> で子ウィンドウを開くと、親ウィンドウが[Object]とのみ書かれた画面になってしまうのですが、原因及び回避方法を教えてください。 宜しくお願い致します。

  • 子ウインドウのスタイルについて

    すみません、分かる方、教えてください。 次のようにJSP内のJavaScriptの関数にて、スタイルを指定しても子ウインドウがサイズ変更できてしまいます。 var style = "width=630,height=400,resizable=0, location=0, menubar=0,scrollbars=yes"; WindowObject = window.open(url,"MAIN",style); resizable=noとしても同様でした。scrollbars=noとした場合はスクロールバーなしとなるのですが何故でしょうか?

  • 別のウインドウを出す

    HTMLにて、Aというファイル内でリンク指定したジャンプ先をB、更にBというファイル内でリンク指定したジャンプ先をCとしたとき、それぞれJavascriptのopen_windowを使って、それぞれ別のページをウインドウの大きさを変えて表示させるようにしたいのですが、A→Bはうまくいくのですが、B→Cをすると、BのページがCに変わる(同一ウインドウでジャンプされる)だけで、Cを表示したいウインドウが新規に出てきません。 因みに、 <a href="javascript:open_window('ファイル名',form,width=200,height=200,left=0,top=0,resizable=yes,scrollbars=yes)">ジャンプ先</a> としています。 どこを修正すればいいか解らないので教えて下さい。よろしくお願いします。

専門家に質問してみよう