- ベストアンサー
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を直接入力してジャンプするのが原因かと思い、その後テストの為上記のページからリンクを張ってみたのですが、それでもアラート表示が出て、弾かれます。 どなたか、どうかお助け下さい。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
まず疑うべきは、document.referrer の中身ですね。 本当にここに、あなたの求める値が入っているのかどうかが問題です。 この問題を解決するためには、 refurl = document.referrer alert(refurl) if( refurl != ..... というふうにプログラムを改造してみてください。 もし正しい値が入っているように見えたら、余計なスペースなどが入ってしまっていないかもチェックしてください。 そして問題が全て解決したら、alert(refurl) を削除するわけです。 直接の回答になってなくて申し訳ないですが、プログラムの考え方自体には問題がないように見えたので……。 それから老婆心ながら、history.back(); は集客率を落とすだけなんでやめた方がいいですよ。 アラートも何も表示せず、ただ黙ってトップページにジャンプさせた方が親切だと思います。 それと JavaScript は行末の ; はなくても動きますが、ブラウザによってエラーが出る可能性があるのでできればつけた方がいいですよ。 あと、すでにやってらっしゃるかもしれませんが、このプログラムは別ファイルにしてアチコチのHTMLファイルで使いまわせるようにすれば便利ですよ。
その他の回答 (2)
- potedora
- ベストアンサー率47% (66/140)
今、手元に資料がないのですが、document.referrerは IE5ではセキュリティ上、取得できなかった記憶が あります。IE6でどうなったかはちょっとわかりません。 過去の質問に同様の質問・解答がありましたので 参考URLに記述しておきました。
お礼
教えて頂いた参考URL、直接の修正には利用できませんでしたが、内容事態はとても参考になりました。お忙しい時間を割いてわざわざ私の質問に手を貸して頂いて、本当にありがとうございました。
- EEshiba
- ベストアンサー率29% (45/152)
えーと、 refurl = document.referrer この行末に;がありませんが、コピペ時のミスなんでしょうか? もし、本当にソースでも;が無いなら、この行がエラーでrefurlが空になっているだけという落ちなのでは?
お礼
コピペ時のミスでは無く、本当に抜けていました…… すみません、ご指摘の通りでした。 更に、余計なスペースまで入ってて、ふたを開ければ しょうも無いミス。 お忙しい時間を割いて頂いたのに、本当にすみません。 そして、ありがとうございました。
お礼
alert(refurl) このを使っての確認の方法は全然知らなかったので、本当にありがとうございました。 とても助かりました。 正しく、余計なスペースが入っていたのでした…… お忙しい時間を割いて頂いたのに、こんなしょうもない原因で、とても恥ずかしいです。 本当にありがとうございました。助かりました。