ウィンドウのクローズ
前回の投稿ではウィンドウをオープンを試しました。
今回は開いたウィンドウを閉じてみます。
まずは親ウィンドウとなるHTMLを用意します。
jqueryと、main.jsを読み込んでいます。
[js]
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>test</title>
<script src="./jquery.js"></script>
<script src="./main.js"></script>
</head>
<body>
親ウィンドウ
</body>
</html>
[/js]
次に、main.jsの中身です。
[js]
$(function(){
//新規ウィンドウを開く
let w = window.open("test.html", "test", "width=400,height=500");
});
[/js]
スクリプトがロードされたら問答無用で新しいウィンドウ(test.html)を開いています。
test.htmlの中身は次のように書いておきます。
[js]
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>test window</title>
<script src="./jquery.js"></script>
<script src="./sub.js"></script>
</head>
<body>
test window
<div id="cwindow">ウィンドウを閉じる</div>
</body>
</html>
[/js]
最後にsub.jsを用意します。
[js]
$(function(){
$("#cwindow").click(function(){
window.close();
});
});
[/js]
これも、シンプルに「
」のdivタグがクリックされた時にウィンドウを閉じる命令を書いています。
ここまでの一連のファイルで、親ウィンドウから子ウィンドウを開いて、子ウィンドウのリンクをクリックすると、子ウィンドウが閉じる。
という動きになります。
ウィンドウのクローズ時の注意点
ここで、注意が必要なのは、子ウィンドウを閉じる時の命令です。
上記の例では、windowオブジェクトを直接使っていますが、
親ウィンドウで生成した
[js]
let w = window.open("test.html", "test", "width=400,height=500");
[/js]
の「w」を使って、
[js]
w.close();
[/js]
という命令もありますが、この例ではそれは動作しません。
動作しない理由としては、親ウィンドウで定義した「w」に子ウィンドウからアクセスできない為に子ウィンドウを閉じることができません。