• ベストアンサー

javascriptでリンク元の規制

詳しくコピーするので、長文になることをお許し下さい。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><HTML LANG="ja"> <HEAD> <META HTTP-EQUIV="content-type" CONTENT="text/ html;charset=SHIFT_JIS"> <META HTTP-EQUIV="content-style-type" CONTENT=" text/css"> <META NAME="robots" CONTENT="NONE"> <META NAME="content-language" CONTENT="ja"> <META NAME="build" CONTENT="2004.05.25"> <TITLE>初めに…</TITLE> </HEAD> <BODY> <script type="text/javascript"> <!-- refurl = document.referrer if( refurl != "http://www.zzz/~yyy/xxx.html" ) { alert("ここは入り口ではありません"); history.back(); } //--> </script> <noscript>  Javascriptが無効です。Javascriptを有効にして<br> やり直して下さい。<br>  解らなければ、mosomoso8まで。<br> <meta http-equiv="refresh" content="http://www.zzz/~xxx/uuu.html"></noscript> 123456789 </body> </html> ※uuu、xxx、yyy、zzzは、仮の文字です。 ↑こんなソースなのですが、『http://www.zzz/~yyy/xxx.html』からリンクしても、アラートが出てしまい123456789の文字が見れません。 このソースの間違いがわかる方、どうか教えて下さい。 かれこれ、もう1ヶ月も悩んでいます。 最初、『http://www.zzz/~yyy/xxx.html』からURLを直接入力してジャンプするのが原因かと思い、その後テストの為上記のページからリンクを張ってみたのですが、それでもアラート表示が出て、弾かれます。 どなたか、どうかお助け下さい。

質問者が選んだベストアンサー

  • ベストアンサー
noname#25358
noname#25358
回答No.2

 まず疑うべきは、document.referrer の中身ですね。  本当にここに、あなたの求める値が入っているのかどうかが問題です。  この問題を解決するためには、   refurl = document.referrer   alert(refurl)   if( refurl != .....  というふうにプログラムを改造してみてください。  もし正しい値が入っているように見えたら、余計なスペースなどが入ってしまっていないかもチェックしてください。  そして問題が全て解決したら、alert(refurl) を削除するわけです。  直接の回答になってなくて申し訳ないですが、プログラムの考え方自体には問題がないように見えたので……。  それから老婆心ながら、history.back(); は集客率を落とすだけなんでやめた方がいいですよ。  アラートも何も表示せず、ただ黙ってトップページにジャンプさせた方が親切だと思います。  それと JavaScript は行末の ; はなくても動きますが、ブラウザによってエラーが出る可能性があるのでできればつけた方がいいですよ。  あと、すでにやってらっしゃるかもしれませんが、このプログラムは別ファイルにしてアチコチのHTMLファイルで使いまわせるようにすれば便利ですよ。

mosomoso8
質問者

お礼

alert(refurl) このを使っての確認の方法は全然知らなかったので、本当にありがとうございました。 とても助かりました。 正しく、余計なスペースが入っていたのでした…… お忙しい時間を割いて頂いたのに、こんなしょうもない原因で、とても恥ずかしいです。 本当にありがとうございました。助かりました。

その他の回答 (2)

  • potedora
  • ベストアンサー率47% (66/140)
回答No.3

今、手元に資料がないのですが、document.referrerは IE5ではセキュリティ上、取得できなかった記憶が あります。IE6でどうなったかはちょっとわかりません。 過去の質問に同様の質問・解答がありましたので 参考URLに記述しておきました。

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=343265
mosomoso8
質問者

お礼

教えて頂いた参考URL、直接の修正には利用できませんでしたが、内容事態はとても参考になりました。お忙しい時間を割いてわざわざ私の質問に手を貸して頂いて、本当にありがとうございました。

  • EEshiba
  • ベストアンサー率29% (45/152)
回答No.1

えーと、 refurl = document.referrer この行末に;がありませんが、コピペ時のミスなんでしょうか? もし、本当にソースでも;が無いなら、この行がエラーでrefurlが空になっているだけという落ちなのでは?

mosomoso8
質問者

お礼

コピペ時のミスでは無く、本当に抜けていました…… すみません、ご指摘の通りでした。 更に、余計なスペースまで入ってて、ふたを開ければ しょうも無いミス。 お忙しい時間を割いて頂いたのに、本当にすみません。 そして、ありがとうございました。

関連するQ&A