Step.12 - リンク元のURLを調べる


リンク元がお友達のページであれば、「○×さんのホームページからお越しですね。ありがとうございます。」と表示してみたら面白いかもしれません。


Step テーマ
● document.referrer - リンク元の取得
● indexOf - 文字列の検索

実行例





リスト


<script type="text/javascript"><!--
if (document.referrer.length !=0 ){
     myRef = document.referrer;
     if ( myRef.indexOf( "http://www.google.co.jp" ) == 0 ){
         document.write( "Google検索からお越しですね! ありがとうございます!" );
     }else if ( myRef == "http://www.red.oit-net.jp/tatsuya/java/index.htm" ){
         document.write( "イヌでもわかるJavaScript講座 目次 から いらっしゃいませ!" );
     }else{
         document.write( myRef + "からお越しですね!" );
     }
}else{
     document.write( "直接このホームページへお越し下さってありがとうございます" );
}
// --></SCRIPT>


サンプルだけの HTMLは こちらへ

説明


リンク元を調べるには、document.referrer を使います。
この中にリンク元の URL が入っています。
お気に入りや 直接URLを入力して ページに入ったのであれば なにも入っていません。つまり、"" です。
※ IE3は document.referrer は対応していません。

リンク元があるかないかを調べるために、文字の長さ document.referrer.length で判断しました。
リンク元がなければ文字(URL) が入っていないので 0 です。

document.referrer の内容

document.referrer.length の値


if (document.referrer.length !=0 ){
     myRef = document.referrer;
     if ( myRef.indexOf( "http://www.google.co.jp" ) == 0 ){
         document.write( "Google検索からお越しですね! ありがとうございます!" );
     }else if ( myRef == "http://www.red.oit-net.jp/tatsuya/java/index.htm" ){
         document.write( "イヌでもわかるJavaScript講座 目次 から いらっしゃいませ!" );
     }else{
         document.write( myRef + "からお越しですね!" );
     }
}else{
     document.write( "直接このホームページへお越し下さってありがとうございます" );
}
リンク元があれば、Google の検索から来た時と、このサイトの目次から入ってきた時、それ以外の時の あいさつ表示。
リンク元がなければ、「直接ありがと」の あいさつ表示。
としています。


● indexOf - 文字列の検索

Google の URL であるかどうかを チェックするために indexOf を使いました。
if ( myRef.indexOf( "http://www.google.co.jp" ) == 0 )

indexOf は、指定した文字列があるかどうかを検索します。

書式:
検索位置 = 文字列変数.indexOf ( "検索キーワード" );

検索キーワードを見つけた場合は、戻り値に 見つけた文字位置 を返します。文字位置は ゼロから始まります。
検索キーワードが見つからない場合は、戻り値に -1 が返ります。

今回の場合は if 文の条件は 戻り値はゼロか としています。
if ( myRef.indexOf( "http://www.google.co.jp" ) == 0 )
つまり、文字列の先頭でいきなり見つけたなら、ということです。

とにかく文字列に検索キーワードがあるかどうかを調べたければ、
if ( myRef.indexOf( "http://www.google.co.jp" ) >= 0 )
となります。


リファレンス


● document.referrer プロパティ

リンク元の URLを保持しています。

【書式】
myURL = document.referrer ;

【値】
リンク元のURLの文字列。


※ 読み込み専用でセットすることはできません。
※ [ファイル]→[開く] や アドレスバー等からユーザが直接URLを打ち込んでページに到着した場合は、ヌルストリングが返されます。

Q&A 1


[Q] 私のホームページはフレームを使っていて、毎回自分のホームページのindex.htmlよりお越しですね。と表示されてしまうのですが…
[A] parent.document.referrer で参照してください。

Q&A 2


[Q] http://URL/index.html から来たはずなのに メッセージが表示されません。
[A] index.html が省略されている場合があります。http://URL/ で indexOf してください。