Test: window.close()

検証済みのブラウザ

  • chrome 89 passed
  • firefox 86 passed
  • edge 89 passed
  • safari 14 failed

Safariでは、本来の意味でScriptで開いた場合にのみ利用できるようです。

Safariで閉じることができるウィンドウを判別する方法がわかれば、追加します。

window.close()が使用できる状況は限られています。このページはそれをテストするためのものです。

閉じるボタンが機能するかどうかを見てみましょう。

A browsing context is script-closable if it is an auxiliary browsing context that was created by a script (as opposed to by an action of the user), or if it is a top-level browsing context whose session history contains only one Document.

HTML Living standard
https://html.spec.whatwg.org/multipage/window-object.html#dom-window-close

実際にwindow.close()が動作する状況は、次のいずれかの条件に合致する場合のようです。

  • window.openernullではない
  • window === window.toptrueであり、window.history.lengthが「1」である
各種ステータス
script-closable(Scriptで閉じられるか)おそらく閉じられます
top level browsing contexttrue
window.openernull
window.history.length0
document.referrer

テスト用のリンクと閉じるボタン

次のリンクはすべて現在と同じページへの導線です。

注意: 「同じタブ」は、現在URLと同じ遷移先だと履歴が増えないためJavaScriptによって一意なURLクエリが与えられています。

ブラウジング・コンテキスト確認用のiframe要素

現在のブラウジングコンテキストがトップレベル(window.top === window)の場合、このページと同じページがiframe要素として挿入されます。