同タイトルの質問より。
もうちょっと具体的にソースを書いてみる。
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”)とかで強制的に飛ばしてもいい。