javascriptでウインドウを閉じる

基本中の基本と言う感じですが、javascriptでウインドウを閉じる方法を。
windows.close();を使います。

ボタンの場合

<input onclick=""window.close();"" type=""button"" value=""閉じる"" />

リンクの場合

<a href=""javascript:window.close();"">閉じる</a>
<a onclick=""window.close()"" href=""#"">閉じる</a>

ただ、この方法だと、FireFox 系ブラウザで動作しないらしいです。
Safari も動作がうまくいったりいかなかったりしたはずです。

検索してみたところ、FireFoxでJavascript「window.close()」を使うにはが見つかりました。ありがとうございます。
それによると、

  • 普通に開いた画面なら効かない
  • 「target=_blank」で開かれたページなら有効になる
  • 「onClick=”window.open(‘ページのURL’)」で開かれたページなら有効になる

ということらしいです。
Firefoxのポリシーでは、「スクリプトによって開いたウインドウ以外はスクリプトで閉じれない」らしいです。

対策としては、ページのどこか(HEADの中がよい)に以下ソースを記述。

<script type="text/javascript" language="JavaScript">// = 0){ 
			if(nvua.indexOf('MSIE 5.0') == -1) { 
				top.opener = ''; 
			} 
		} 
		else if(nvua.indexOf('Gecko') >= 0){ 
			top.name = 'CLOSE_WINDOW'; 
			wid = window.open('','CLOSE_WINDOW'); 
		} 
	top.close(); 
}
// ]]></script>

(と、ありましたが、外部でも大丈夫でしたので、外部にしちゃいましょう)

function close_win(){ 
	var nvua = navigator.userAgent; 
		if(nvua.indexOf('MSIE') >= 0){ 
			if(nvua.indexOf('MSIE 5.0') == -1) { 
				top.opener = ''; 
			} 
		} 
		else if(nvua.indexOf('Gecko') >= 0){ 
			top.name = 'CLOSE_WINDOW'; 
			wid = window.open('','CLOSE_WINDOW'); 
		} 
	top.close(); 
} 

これを、例えば、winclose.js というファイル名で保存し、head 内で読み込みます。

そして、あとは、実際使う部分に以下タグを記述すればOKです。

ボタンの場合

<input onclick=""close_win()"" type=""button"" value=""閉じる"" />

リンクの場合

<a href="javascript:close_win();">閉じる</a>
<a onclick="close_win();" href="#">閉じる</a>

これで FireFox でも大丈夫です。