ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

ブラウザがSafariでも、タブで開いているウィンドウをJavaScriptで閉じる方法

先日3年前に稼働させたシステムを再度稼働させる業務を行っていると書きました。
ajya.hatenablog.jp

このシステムに、作業が終わったら終了ボタンを押して、Webブラウザのウィンドウを閉じてもらうようになっている画面があります。
Internet Explorer 11で動作を確認すると、終了ボタンを押したらタブで開いているウィンドウは閉じました。
Safariでは、終了ボタンを押してもタブで開いているウィンドウは閉じません。

終了ボタンを押すと、以下のJavaScriptでウィンドウを閉じるようになっていますが、Safariではできないようです。

onClick="window.close();"

f:id:AJYA:20170308060635j:plain
photo credit: dotConferences dotJS 2016 via photopin (license)

JavaScriptでタブで開いているウィンドウが閉じないへの対処方法

3年前もできていなかったもしれませんが、このまま稼働させていました。
対処方法がないか検索してみると、以下のようにするとタブで開いているウィンドウが閉じるという情報がありました。

onClick="window.open('about:blank','_self').close();"

実際にSafariで確認すると、終了ボタンを押したらタブで開いているウィンドウは閉じました。

このコードからすると、

  1. 空のウィンドウを現在のタブのウィンドウに開く。
  2. ウィンドウを閉じることでタブのウィンドウが閉じられる。

ということが行われているようです。


Mozilla Firefox/Google Chromeでもできたので、どのブラウザでもこの方法で対応ができるようです。