javascriptについて質問です。


自分のサイトが http://www.hogehoge.jp/ だった場合に、以下のscriptを自分のサイトの全ページに埋め込んでおくとします。

------------------------------------------

if(document.referrer.indexOf("hogehoge.jp") == -1){

~~~~~~

}

-------------------------------------------

このようにif文を使って、www.hogehoge.jp 外からの最初のアクセスにだけscriptを走らせたいのですが、なぜかhogehogeサイト内を移動中にもscriptが走ってしまいます。


どうしたら希望通りに動くでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/11/25 10:45:46
  • 終了:2006/12/02 10:50:02

回答(3件)

id:llusall No.1

llusall回答回数505ベストアンサー獲得回数612006/11/25 11:38:58

ポイント27pt

リファラはセキュリティソフトにより送信されないことがあります。


例えば、

Norton Internet SecurityやNorton Personal Firewall を利用している場合、デフォルトではRefererを送信しないように設定されているようです。

参照元 (リファラ) が遮断され、Web サイトが正しく表示されない

セキュリティソフトをオフにしてみてはどうでしょうか?


その他の方法としてですが、クッキーを使用してみてはいかがでしょうか?

クッキーを遮断していたりしたら不可ですが、リファラよりはマシではないかと思います。

以下が参考になると思われます。

MottoJavaScript クッキーを使ったアクセス制限

※「サンプル」とか「解説」を押すと、詳細が表示されるようです。

id:petshop

すいません、説明が足りなかったのですが、ちょっと違います。

今やりたい事は、外部から来た場合はscriptを走らせてリファラをクッキーに保存、内部いどうじには何もしない、という事です。

リファラを見て外部から来たのか、内部の移動なのかを見ているつもりなのですが、内部移動時にもリファラをクッキーに保存してしまって困っています。

2006/11/25 13:04:34
id:kn1967 No.2

kn1967回答回数2915ベストアンサー獲得回数3012006/11/25 15:46:13

ポイント27pt

1で回答いただいている事が正解だと思いますが、、、、

if文の前に confirm でも入れて クライアントがどんなリファラを返してきているのかを確認してみてください。

http://www.htmq.com/js/frame_confirm.shtml

id:wkbyshnbtk No.3

wkbyshnbtk回答回数8ベストアンサー獲得回数22006/11/26 21:34:53

ポイント26pt

if(document.referrer.indexOf("hogehoge.jp") == -1){

}

これは、リファラにhogehoge.jpが含まれていない場合、にブロックが実行されるので、リファラが空の場合でも実行されてしまいます。

空の場合は実行しない処理を付け加えれば希望通りに動くのではないでしょうか?

if (document.referrer) {
    if(document.referrer.indexOf("hogehoge.jp") == -1){
        ....
    }
}

http://www.hogehoge.jp/dummy

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません