以下の内容はhttps://www.nishishi.com/javascript-tips/doc-referrer.htmlより取得しました。


11:00 AM 公開/更新》

直前に閲覧したページのURL(リファラ情報)を得る方法 [情報取得]

JavaScriptを使ってブラウザが保持している「直前に閲覧していたページのURL」を得るには、document.referrerを使います。このリファラ情報のドメイン(ホスト)部分を参照すれば、アクセス者がサイト内を回遊して来たのか、サイト外からリンクを辿って訪れたのかなども区別できます。

直前に閲覧したページのURL(リファラ情報)をJavaScriptで得る方法

どこか別のページからリンクをクリックして現在のページに到達した場合、アクセス者のブラウザは「直前に閲覧していたページのURL」を保持しています。この「直前に閲覧していたページのURL」の情報のことをReferrer(リファラ)といいます。このリファラ情報は、JavaScriptでも簡単に得ることができます。
例えば、以下のようなJavaScriptソースを1行書くだけで、ブラウザが記憶しているリファラ情報(=直前に閲覧していたページのURL)が変数refに格納されます。

var ref = document.referrer;

リファラ情報は、documentオブジェクトのreferrerプロパティに格納されていますから、上記のように記述するだけで得られます。
ただし、アクセス者がブックマークから直接アクセスした場合や、URLを直接入力してアクセスした場合など、リンクをたどる以外の方法でアクセスした場合には、空文字が返されるだけです。

リファラ情報をアラートボックスに表示する例

ボタンをクリックするとアラートボックスにリファラ情報(=直前に閲覧していたページのURL)が表示されるHTML+JavaScriptソース例は以下の通りです。

<input type="button" value="リファラ表示" onclick="alert( document.referrer );" />

以下の場合には、アラートボックスには何も表示されません。

なので、「絶対にリファラ情報が存在するはずだ」という前提でスクリプトは書かない方が良いでしょう。
表示例は以下の通りです。もしあなたがこのページに「どこかのリンクをたどって」アクセスしたのであれば、直前に見ていたページのURLが表示されるはずです。

単にアラートボックスに表示するだけなら意味がありませんが、例えば、直前に閲覧していたページによって、パンくずリストの表示を動的に変えるとか、メニューの内容を変えるとか、「戻る」リンクの戻り先に使うとか、いろいろ活用できそうです。

アクセス者がサイト内外のどちらから来たかを判別する方法

このリファラ情報のドメイン(ホスト)部分を参照すれば、アクセス者がサイト内を回遊して来たのか、サイト外からリンクを辿って訪れたのかなども区別できます。
これによって、「サイト外からやってきた場合には、サイト内の主要(orお勧め)ページの案内を表示する」といったことができます。

JavaScriptソース

var ref = document.referrer;             // リファラ情報を得る
var hereHost = window.location.hostname; // 現在ページのホスト(ドメイン)名を得る

// ホスト名が含まれるか探す正規表現を作る(大文字・小文字を区別しない)
var sStr = "^https?://" + hereHost;
var rExp = new RegExp( sStr, "i" );

// リファラ文字列を判別
if( ref.length == 0 ) {
	// リファラなしの場合
	alert("リファラ情報がありません");
}
else if( ref.match( rExp ) ) {
	// マッチした場合=アクセス元が自サイト内の場合
	alert("自サイト内から来ました");
}
else {
	// マッチしない場合=アクセス元がサイト外の場合
	alert("他のサイトから訪れました");
}

上記のJavaScriptソースの各行は、だいたい以下のような意味です。

アクセス元がサイト内外のどこかによって表示を分ける例

上記ソースをボタンで動作させた表示例は以下の通りです。

▲押すと何らかのアラートボックスが表示されます。

アラートボックスに表示しても意味はありませんが。まあ、ここでは動作を簡単に確認するために使いました。
他サイトから訪れた場合にだけ、何かプラスアルファの要素を表示させるなり動的に生成するなりしたい場合(※)に使えそうです。

※サイト外からの訪問者にだけ特別なコンテンツを加えて表示している実例

このような「サイト外からの訪問者にだけ特別なコンテンツを見せる」仕組みは、Amazonでも使われています。Amazonサイト内を回遊して商品ページを見た場合とは異なり、Google検索結果ページなどからAmazonへ訪れると、下図の左側のようにヘッダ部分に類似製品が列挙されます。

検索結果ページからの訪問時とサイト内からのアクセス時とでは表示内容に差がある例

サイト内を回遊してきた訪問者とは異なり、検索結果ページなどの外部からやってきたアクセス者は、目的の情報がなさそうだと感じたらすぐに去ってしまうでしょうから、極力それを防ぐために「検索結果ページから訪れた人にだけ」類似情報を列挙しているのでしょうね。私が試した限りでは、外部サイト全般ではなく「検索結果ページからアクセスした場合」に限って類書枠が上部に追加されるようでした。Amazonの場合、検索以外の外部アクセスだと商品を紹介する目的でのリンクの可能性が高いからでしょうかね。いずれにしても、リファラ情報を参照して表示を加えていることに違いはありません。

()

ツイート facebookシェア LINEで送る Pocket URLとタイトルをコピー ☕ コーヒーをおごる

JavaScript TIPSふぁくとりーの主要なカテゴリ

下記のカテゴリに区分して、JavaScriptに関するTIPSを公開しています。カッコ内の数字は、該当する記事の件数です。

著者紹介


にしし(西村文宏)

にししでございます。本書いたり記事書いたりしてます。あと萌えたり。著書5冊発売中です(Web製作系4冊+小説1冊)。著書や記事は「西村文宏」名義。記事は主にAll Aboutで連載。本の最新刊は2011年3月に発売されたライトノベルでございますよ。

Twitter:にしし/西村文宏
にしし/西村文宏 on facebook にしし/西村文宏 on mixi フォローはお気軽に!

にしし(西村文宏)連絡先
☕ コーヒーをおごる

著書一覧と詳細

関連するかもしれない情報など

▼このページに関連しそうな記事が約8本くらい自動表示されています。(たぶん)

--- 当サイト内を検索 ---




以上の内容はhttps://www.nishishi.com/javascript-tips/doc-referrer.htmlより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14