同タイトルの質問より。
もうちょっと具体的にソースを書いてみる。
index.html(フレームを呼び出すページ)
iframeのsrc属性で、ファイル名に続けて適当にパラメーターをつける。
<iframe src="inner.html?frame=true"></iframe>
inner.html(フレームの中ページ)
JavaScript
<script type="text/javascript"> (function(){ if(location.search.indexOf("frame=true")!==-1){ document.write("フレームからの呼び出しです"); }else{ document.write("直接アクセスしています"); } })(); </script>
JavaScriptの場合、パラメーターはlocationで拾えるのでindexOfとかmatchとかで調べる。
イベントハンドらはwindow.onloadとかでもいい。
コンテンツを非表示にしたいならstyleを弄るのが楽かな~。
<!DOCTYPE HTML> <html lang="ja_JP"> <head> <meta charset="UTF-8"> <title>inner.html(フレームの中ページ)</title> <script type="text/javascript"> (function(){ if(location.search.indexOf("frame=true")!==-1){ document.body.style.display="block"; } })(); </script> <style type="text/css"> body{display:none} </style> </head> <body> <h1>iframeからのアクセスかブラウザでの直アクセスか判別するテスト</h1> <div style="background:#eee;height:400px">インラインフレームから見てね!</div> </body> </html>
PHP
<?php if(isset($_GET["frame"])&&$_GET["frame"]==ture){ print "フレームからの呼び出しです"; }else{ print "直接アクセスしています"; } ?>
PHPの場合はグローバル変数$_GETにパラメータがあるかどうか調べる。
PHPでコンテンツを見えなくするならページの先頭でdieしてしまうのが早いかな。
<?php if(isset($_GET["frame"])&&$_GET["frame"]!=ture){ die("トップページからアクセスしてください"); } ?> <!DOCTYPE HTML> <html lang="ja_JP"> <head> <meta charset="UTF-8"> <title>inner.html(フレームの中ページ)</title> </head> <body> <h1>iframeからのアクセスかブラウザでの直アクセスか判別するテスト</h1> <div style="background:#eee;height:400px">インラインフレームから見てね!</div> </body> </html>
location.href=”index.html”とかheader(“location:index.html”)とかで強制的に飛ばしてもいい。