• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:フレームにすると)

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

kokucho81の回答

  • ベストアンサー
  • 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
質問者

お礼

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

関連する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の画面を閉じるということです。 お手数をお掛け致しますがどうぞよろしくお願いいたします。

  • 他のフレームにあるボタンを使用不可にするには?

    2つのフレームに分割した画面で、一方のフレームにあるボタンを押したら、他のフレームにあるボタンを使用できなくしたいのですが、うまくいきません。下記のスクリプトでは、エラーになってしまいます。どのようにしたら良いでしょうか、よろしくお願いいたします。 <フレームの設定> <html> <head><title>フレームを縦に分割する</title></head> <frameset cols="50%,50%"> <frame src="left.html" name="light_frame" frameborder=1 border=1> <frame src="right.html" name="left_frame" frameborder=1 border=1> </frameset> </html> <left.htmlの内容> <html> <head> </head> <body> <form name="myform"> <input type="button" name="bt_del" value="削除"> </form> </body> </html> <right.htmlの内容> <SCRIPT Language="JavaScript"> function func1(){ //NG parent.left_frame.document.form.myform.bt_del.disabled = true; //これもNGでした //parent.left_frame.document.forms['myform'].bt_del.disabled = true; } </SCRIPT> <html> <head> </head> <body> <p><input type="button" value="変更" onclick="func1()" > </body> </html> 以上です。

  • フレーム

    こんにちわ。 今、フレームを用いてホームページを作成しています。 そのなかでJavascriptを用いて複数のフレームを同時に変更しようとしているのですが、 上手く出来ません。Javascriptの参考書等を見るとフォームボタンをクリックした時に 複数のページを変更する方法はよく載っているのですが、gifの画像をクリックした時に 複数のページを同時に変更したいのです。 ご存知の方がいらっしゃいましたらご返答をお願いします。 ちなみに、参考書等に載っていたフォームボタンをクリックする場合の方法を書いておきます。 フレーム名はf1,f2,f3としていて、f1内のフォームボタンをクリックするとf2,f3が変更される ものが載っていたのでその中のf1を書いておきました。 よろしくお願いします。 <HTML> <HEAD> <TITLE>F1.HTM</TITLE> <SCRIPT LANGUAGE="JavaScript"> <!-- function ChangFram(P1,P2){ parent.f2.location.href=P1 parent.f3.location.href=P2 } //--> </SCRIPT> </HEAD> <BODY> <FORM NAME="CHANG"> <INPUT TYPE="button" NAME= "chang1" VALUE=" Change!! " onClick="ChangFram('FP2.HTM','FP3.HTM')"> <P> <INPUT TYPE="button" NAME= "chang2" VALUE=" 元に戻す " onClick="ChangFram('F2.HTM','FP1.HTM')"> </FORM> </BODY> </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 />

  • 親フレームの変数にアクセス(JavaScript)

    [index.html] <script src="script.js"></script> <frameset rows="50%,*" frameborder="1"> <frame src="content1.html"name="cont1"> <frame src="content2.html" name="cont2"> </frameset> [script.js] var test_text="てすと"; [content1.html] <form> <input type="text" name="in"> <input type="button" onClick="window.parent.test_text = document.forms[0].in.value;" value="IN"> </form> [content2.html] <form> <input type="text" name="out"> <input type="button" onClick="document.forms[0].out.value = window.parent.test_text;" value="OUT"> </form> のようになっています。 「index.html」の「script.js」の変数に、「content.1html」と「content2.html」からアクセスしたいです。 ですが、フレームになっているため、思うような動作をしてくれません。 よろしくお願いします。

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

    フレーム無しのページでは <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>