window.top === window.selfは何をしているのか?

プロジェクトで「if (window.top === window.self) {…}」という条件式を初めて見たので、その意味を調べてみました。

この条件式は、開いているページがiframeで読み込んだページを表示しているかどうかを判定するためのものです。

window.topは、最上位のコンテキスト(ウィンドウ)を返します。iframe要素を複数埋め込んでいる場合でも、一番上の親ウィンドウを取得することができます。

一方、window.selfは現在のウィンドウ自身を返します。

したがって、iframeがないページではwindow.selfwindow.topは等価になります。これを利用して、ページがiframeを含むかどうかを判定することができます。

コメント