web-dev-qa-db-ja.com

ページの読み込みがフレーム、iframeなどの内部で行われたかどうかを知る方法はありますか?

フレーム、iframeなどの内部で行われたページの読み込みを検出する方法があるかどうか疑問に思われます(おそらくJavaScriptを使用)。もしそうなら、そのような検出システムの限界は何ですか

4
blunders
if (top.location.href != window.location.href) {
     alert("In A Frame");
}

制限は、JavaScriptがオフになっていると機能しないことです。

X-Frame-Options HTTPヘッダーを使用することもできます。このヘッダーは、Webページを別のWebページでフレーム化することを許可するかどうかをWebブラウザーに通知します。これには、<frame>および<iframe>タグが含まれます。

このヘッダーには、次の2つの値があります。

DENY-この設定により、配信元の同じWebサイトにある場合でも、配信されるページがフレームに配置されなくなります。フレーム内でページを使用するつもりがない場合に使用します。

SAMEORIGIN-この設定により、同じWebサイトのページのフレームでページを提供できます。外部サイトがフレーム内のページを読み込もうとすると、リクエストは拒否されます。

このヘッダーは、Internet Explorer 8.0、Firefox 3.6.9、Opera 10.50、Safari 4.0、およびChrome 4.1で機能します。

6
John Conde