フレームでウィンドウを閉じる方法について

このQ&Aのポイント
  • フレームでウィンドウを閉じるボタンの機能が正常に動作しない問題について質問です。
  • フレーム内でウィンドウを閉じるボタンの動作を有効にする方法を教えてください。
  • 初心者ですが、フレームでウィンドウを閉じるボタンが機能しない問題についてアドバイスをいただきたいです。
回答を見る
  • ベストアンサー

フレームにすると

はじめまして。 javaについては全くの素人です。 お力を貸していただきたくて投稿いたしました。 以下の様なページを作り、 <HEAD> <TITLE>ウィンドウを閉じる</TITLE> <SCRIPT language="JavaScript"> <!-- function CloseWin(){ window.close(); } // --> </SCRIPT> </HEAD> <FORM> <INPUT type="button" value="ウィンドウを閉じる" onClick="CloseWin()"> </FORM> </BODY> </HTML> テストしたら、「ウィンドウを閉じる」ボタンは機能したのですが、このhtmlファイルをフレームの一つのして読み込むと機能しません。 なぜなんでしょうか? どのようにすれば、機能するようになるのでしょうか? 大変初歩的な質問ですが、周りにだれも教えてくれるものがいませんので困っております。 よろしくお願いします。

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

  • ベストアンサー
  • kokucho81
  • ベストアンサー率61% (157/255)
回答No.2

今仮に、左右にフレーム分けしているトップファイルindex.htmlと、 構成ファイル、left.htmlとright.htmlとしましょう。 そして、right.htmlから、「閉じる!! window.close()」というJavaScript信号をブラウザに送るとします。 window.close()のwindowとは、right.htmlにとって、自己面、自己フレームを指しますので、right.htmlを表示しているフレームだけを閉じようとします。 この時起きうる現象としては次のどちらかでしょう。 (1)right.htmlが閉じて、表示するものが無くリンクし損ねたダミーページ(IEとかだと「ページが表示できません」)と出る。 (2)frame構成内に表示している場合、frameが、close()信号を受付けず、結果、特定のフレームだけを閉じることは出来ない。 おそらく、それぞれのwindowのトップに表示されているhtmlのclose()関数を呼び出してやらないと、閉じない、閉じれない仕様になっているのだと思います。 なぜ、特定のフレームだけを閉じることができないのか!! についてははっきりと明言できませんが、そういったような仕様にでもなっているのではないでしょうか(仕様を作成した側の人間ではないので、自信はないですが) さて、ところで、今回hikarikoさんのやりたいことは、文脈から察して、私は、「特定のフレーム」ではなく、「ウィンドウ」を閉じたいのではないか? と判断しました。(だからtop.うんぬんと答えました) では、なぜtop.を付け加えたのか? topとはこの場合、index.htmlを指します。そう、right.htmlは自分のclose()関数ではウィンドウを閉じる権限をどうやらもっていないようなので、topに表示されているHTMLの(ウィンドウを閉じる権限がある)関数を呼び出してやろうというわけです。同様に、このような構成に限ってはparent.window.close();でも良いでしょう。 では、topでもparentでも良いのになぜtopと答えたか? もし、right.htmlが単体(フレームの中ではなく)で表示されていたとしたら? parentでは、親(index.html)を探そうとしますが、単体で表示されているときは、親がいませんから、エラーとなります。しかし、topと記述しているときは、単体で表示されているときは、right.html自身が今度はtopとなりますから、やはり、問題なくtop.window.close()で、問題なく、自分自身を閉じることが出来ます。 というわけで、状況から考えて、 top.window.close();という修正が、簡単で、的を射てて、しかも、単体で表示してもエラーがでないので、一番よいのではないか? と思ってそのような答えとなりました。

hikariko
質問者

お礼

ご丁寧な回答本当にありがとうございました。 とてもわかりやすくスマートなご回答で、疑問が全て解決いたしました。 私の勉強不足のから生じる質問に答えていただき本当にありがとうございました。

その他の回答 (1)

  • kokucho81
  • ベストアンサー率61% (157/255)
回答No.1

状況から察するに、 function CloseWin(){ window.close(); } を function CloseWin(){ top.window.close(); } と修正すれば、99.99%閉じます。

hikariko
質問者

お礼

ありがとうございました。上手くいきました。 なぜtopを追加すれば動くようになったのでしょうか? もしよろしければ、理由も教えていただけますと嬉しいです。 よろしくお願いします。

関連するQ&A

  • Firefoxでwindow.close()が効きません

    Win、MacともIEでは問題ないのですが、Firefoxでwindow.close()が効きません。 Firefoxのバージョンは、Windows→1.0.7、Mac→1.5.0.1です。 ソースは以下のとおりです。 <form> <input type="button" name="Submit" value="ウィンドウを閉じる" onClick="javascript:window.close();"> </form> また、以下の方法も試してみたのですが動作しませんでした。 <SCRIPT language="JavaScript"> <!-- function CloseWin(){ window.close(); } // --> </SCRIPT> <FORM> <INPUT type="button" value="ウィンドウを閉じる" onClick="CloseWin()"> </FORM> aタグのターゲットブランクで別ウィンドウを開いた場合です。よろしくお願いいたします。

  • JavaScriptについてご教授願います。

    お世話になります。 JavaScriptについてご教授願います。 main.html ----------------------------------------------------------- <HTML> <HEAD> </head> <body> <INPUT TYPE=BUTTON value="閉じる" onClick="CloseWin()"> </body> </html> ----------------------------------------------------------- kozin.html ----------------------------------------------------------- <HTML> <HEAD> <script language="JavaScript"> function CloseWin(){ window.close(); } </script> </head> <body> 個人情報 </body> </html> ----------------------------------------------------------- 実現したいことはmain.htmlのボタンを押下することによって kozin.htmlの画面を閉じるということです。 お手数をお掛け致しますがどうぞよろしくお願いいたします。

  • 外部ファイルで窓を閉じたい

    外部ファイルで窓を閉じたくて次のように作ってみたんですが 窓が閉じません。どなたかアドバイスお願いします。 -- a.html -- <html> <head> <script language="JavaScript" src="sub.js"></script> </head> <body> <input type="button" value="閉じる" onclick="wc(window.name);"> </body> </html> -- sub.js -- function wc(mado){ mado.close(); }

  • 子ウィンドウを閉じるとき、親ウィンドウのテキストボックスにカーソルを移動したい。

    子ウィンドウを閉じるとき、親ウィンドウのテキストボックスにカーソルを移動したい。(java) <script> function openChild(f){ window.open("child2.htm","_blank"); } </script> <form> <input id="text1"><br /> <input id="text2"><br /> <input type="button" onclick="openChild(this.form)" value="子ウィンドを開く"> </form> 子ウィンドを閉じる <input type="button" onclick="window.close()" value="閉じる"> 親ウィンドウのテキストボックス(id="text2")にカーソルを移動したいのですが。 <input id="text2"><br />

  • フレームとイベントハンドラについて

    フレーム無しのページでは <FORM><INPUT TYPE="BUTTON" NAME="Type02" VALUE="閉じる" onClick="window.close()">  とか <img src="botan23.gif" width="35" height="11" onClick="window.close()">  で右上の×点を使わなくてもウィンドウを閉じることができますが、フレームで分割されているものの閉じ方がわかりません。 http://nshk.lomo.jp/purple/purple.html の場合 home というgifに onClickでウィンドウを閉じるようにさせたいのですがどう書けばよいのでしょうか?よろしくお願い致します。

    • ベストアンサー
    • Java
  • 1ページに大量のWindow.openの最適化方法

    サムネイル下のボタンクリックで拡大写真表示をさせたいと思っています。 現在以下の方法です。 -------------------------- <SCRIPT language="JavaScript"> <!---------------------- function open1(){ wo1=window.open("","WindowOpen1", "toolbar=no,location=no,directories=no,status=no,menubar=yno,scrollbars=no,resizable=no,width=430,height=460"); wo1.document.write("<html><head><title>拡大写真</title>"); wo1.document.write("<script language='JavaScript'> "); wo1.document.write("function good(){ "); wo1.document.write(" window.close() } "); wo1.document.write("</script></head><body><center> "); wo1.document.write("<IMG src='img/03-02/001.jpg' border='0'> "); wo1.document.write("<br><form> "); wo1.document.write("<input type='button' name= 'ok ' value=' Close ' onClick='good()'>"); wo1.document.write("</form></center></body></html> "); wo1.document.close(); } //-----------------> これと <FORM><INPUT type="button" name="no1 " value=" 拡大写真 " onclick="open1()"></FORM> これの組み合わせ --------------------------- で、これがそのページに30個ほど必要なんです。 それぞれ違うのは、もちろん画像だけなんです。 function open1(){~~}を個数分書くしか方法は無いんでしょうか? 何か簡素化する方法があったらお願いします。

  • window.close()で閉じられない

    教えていただけますか? インターネット上のサンプルを参考に 押したらウインドウを閉じるボタンを作ったのですが、 うまく機能しません。 サーバーはレンタルサーバーです どの様にしたら良いでしょうか? インターネット上のサンプルでは閉じられました。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>無題ドキュメント</title> </head> <body> <form> <INPUT type="button" value="閉じる" onClick="window.close()"> <input type="button" value="閉じる" onClick="close()"> </form> <A href="JavaScript:window.close()">閉じる</A> </body> </html>

  • フレームだけ閉じる方法ありますか?

    ちょこっと下の記事でホバーウィンドウについて質問した者です。(何度もすいません) ホバーウィンドウをiframeでもってdropinさせる事に成功したのですが 今度は閉じるボタンが何度やってもうまくいきませんでした。 http://oshiete1.goo.ne.jp/qa1517.html などの過去ログを参照して何度もトライしてみたもののどうやっても出来ませんでした。調べた感じでは <script type="text/javascript"> <!-- function closewin() { self.window.close(); } // --> </script> と <a href='#' onClick'self.window.close();'>閉じる</a> で出来るのかとトライしてみました。top.closeやparent.closeではうまくいきましたがそれでは全部が全部閉じてしまいました。どうやれば落ちてくるフレームページだけを閉じれるでしょうか?よろしくお願い致しますm(__)m

    • ベストアンサー
    • HTML
  • JavaScriptで子ウィンドウからメールを送信

    javascriptで子ウィンドウからメールを送信したいです。 JSは全くの素人なので、手探りでやっています。 サーバーはCGIが使えない環境なので、何かよい方法はないでしょうか? <html> <title>sub window sample1</title> <body> <h1>Sub Window Sample1</h1> <script language="JavaScript" type="text/javascript"> function formSubmit(){ window.open("","window1","width=400","height=200"); document.getElementById("form1").target = "window1" ); } </script> <form id="form1" action="" > <input type="button" name="submit" value="mail window!" onClick="formSubmit()"> </form> </body> </html> このようなソースを途中まで書いてみましたが、子ウインドウすら開いて くれません。 ぜひご教示をよろしくお願いいたします。

  • Window.open でフレームに表示

    JAVAを使い、指定のフレームに新しい画面を表示したいのですが、要領が良く判りません。 以下のように _blank で新しいウィンドウを開くのはできます。どなたか ご指導 お願いします。 <TITLE></TITLE> <SCRIPT language="JavaScript"> function new_window(url) { window.open(url, '_blank'); } </SCRIPT> </HEAD> <BODY onload="new_window('comp-page1.htm');">

    • ベストアンサー
    • Java