はじめまして。
javaについては全くの素人です。
お力を貸していただきたくて投稿いたしました。
以下の様なページを作り、
<HEAD>
<TITLE>ウィンドウを閉じる</TITLE>
<SCRIPT language="JavaScript">
<!--
function CloseWin(){
window.close();
}
// -->
</SCRIPT>
</HEAD>
<FORM>
<INPUT type="button" value="ウィンドウを閉じる" onClick="CloseWin()">
</FORM>
</BODY>
</HTML>
テストしたら、「ウィンドウを閉じる」ボタンは機能したのですが、このhtmlファイルをフレームの一つのして読み込むと機能しません。
なぜなんでしょうか?
どのようにすれば、機能するようになるのでしょうか?
大変初歩的な質問ですが、周りにだれも教えてくれるものがいませんので困っております。
よろしくお願いします。
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();という修正が、簡単で、的を射てて、しかも、単体で表示してもエラーがでないので、一番よいのではないか? と思ってそのような答えとなりました。
ご丁寧な回答本当にありがとうございました。
とてもわかりやすくスマートなご回答で、疑問が全て解決いたしました。
私の勉強不足のから生じる質問に答えていただき本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スマホ上で、左右スワイプで次...
-
別フレームの中にあるインライ...
-
インラインフレームをドラッグ...
-
HTMLでサブフレームから親のス...
-
異なるフレームから異なるフレ...
-
フレーム内のiframeのデータの...
-
左右のフレームを同時にスクロ...
-
インラインフレームで表示され...
-
別フレームに画像を表示する
-
複数のページ(html)のvalueを...
-
HTMLフォームボタンによるター...
-
別フレームにスムーススクロー...
-
<a href="#" …>の意味を教えて...
-
bodyにidをつける理由は何ですか?
-
getElementsByNameで要素が取得...
-
JavaScriptからVBScriptの呼び...
-
window.openで同画面遷移しない
-
変数の代入値を外部の.txtファ...
-
javascriptの外部ファイルで行...
-
別ファイルのfunctionの読み込み方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
HTMLでサブフレームから親のス...
-
スマホ上で、左右スワイプで次...
-
インラインフレームをドラッグ...
-
フレームを跨ぐドロップダウン...
-
インラインフレームで表示され...
-
別ページのインラインフレーム...
-
子フレームの自動リロードは可...
-
外部から読み込まれたJava...
-
openerは使えないのでしょうか?
-
Safariで<iframe>のinnerHTMLを...
-
他のフレームのスクリプトを実...
-
親フレームからkeydownイベント...
-
フレーム分割領域のサイズを変...
-
ページ遷移をコントロールしたい
-
フレームを使用した複数プルダ...
-
エラー:書き込みができません ...
-
親ウィンドウの別フレームを子...
-
jqueryを利用してインラインフ...
-
上と左にフレームわけされてい...
-
フレーム分割について
おすすめ情報