1

以下に示したコードは、ユーザーが特定のページにいない場合、または特定の Cookie を持っていない場合に、新しい URL にリダイレクトするためのものです。Cookie 機能は、リダイレクトと同様に完全に機能します。ここに私の問題があります: ウィンドウの URL はリダイレクトされますが、元の URL はブラウザーの履歴に記録されません。

<script type="text/javascript">
    $(document).ready(function() {
        if (getCookie('legal_age') == "yes" || window.location =="http://example.com/home") {//user is legal age!
        } else {
            setTimeout(function() {
                window.open('http://example.com/welcome','_self','', false);
            },0)
        }
    });
</script>

たとえば、「http://example.com/page1 」にアクセスすると、ブラウザは「 http://example.com/welcome 」にリダイレクトされます。ただし、別の関数で呼び出すことができるように、ブラウザーの履歴に表示される元の URL (" http://example.com/page1 ") が必要です。(フォーム内で)履歴を呼び出すために使用しているコードは次のとおりです。

<form action="javascript:window.location.reload(history.go(-1));" method="get" name="age_form" id="ageForm" />

履歴を呼び出すためにこの代替手段も試しましたが、役に立ちませんでした:

window.history.back();

次のことも試しましたが、ブラウザの履歴に元の URL を保存することに成功しませんでした:

window.location = "http://example.com/welcome";
window.location.href = "http://example.com/welcome";
window.location.assign("http://example.com/welcome");

最後に、別のスレッドが役立つ可能性があると示唆したため、この関数を含めましたが、あまり効果がないようです。

setTimeout(function(){

何か案は?リダイレクトする前に、ブラウザの履歴にログインするためにアクセスした元の URL を取得する方法はありますか? 助けてください!

4

1 に答える 1

0

リダイレクトする前に現在の URL の Cookie を設定するとうまくいきました。これが機能する変更されたコードです。Cookie を設定するには、JavaScript の Cookie 関数を参照する必要があることに注意してください (この場合、私のものは setCookie() と呼ばれます)。

<script type="text/javascript">
    $(document).ready(function(){
       if (getCookie('legal_age') == "yes" || window.location =="http://example.com/home") {//user is legal age!
       } else {
           setCookie('originalURL', window.location);
           var urlCheck = getCookie('originalURL');
           window.open('http://example.com/welcome','_self','', false);
       }
    });
</script>

これが誰かを助けることを願っています!

于 2012-07-24T07:39:10.513 に答える