-PR-
解決済み

フレームにすると

  • すぐに回答を!
  • 質問No.31178
  • 閲覧数662
  • ありがとう数6
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 17% (56/321)

はじめまして。
javaについては全くの素人です。
お力を貸していただきたくて投稿いたしました。

以下の様なページを作り、

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

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

  • 回答No.2
レベル11

ベストアンサー率 61% (157/255)

今仮に、左右にフレーム分けしているトップファイル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

お礼率 17% (56/321)

ご丁寧な回答本当にありがとうございました。
とてもわかりやすくスマートなご回答で、疑問が全て解決いたしました。
私の勉強不足のから生じる質問に答えていただき本当にありがとうございました。
投稿日時 - 2001-01-23 16:54:46
関連するQ&A
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル11

ベストアンサー率 61% (157/255)

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

function CloseWin(){
window.close();
}



function CloseWin(){
top.window.close();
}

と修正すれば、99.99%閉じます。
お礼コメント
hikariko

お礼率 17% (56/321)

ありがとうございました。上手くいきました。
なぜtopを追加すれば動くようになったのでしょうか?
もしよろしければ、理由も教えていただけますと嬉しいです。
よろしくお願いします。
投稿日時 - 2001-01-23 08:52:40


このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


新大学生・新社会人のパソコンの悩みを解決!

いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ