
[code]

    <script>
    var flg=true;
    setTimeout("redirect()", 1000);
    function redirect(){
      if(flg){
        flg=false;
        location.href='http://www.yahoo.co.jp/';
      }
    }
    </script>
    
[/code]

index.htmlに上記のjavascriptを記述して、index.htmlにアクセスしたら1秒でヤフーに飛ぶようにしているのですが、ヤフーにいる状態でブラウザの「戻る」ボタンをクリックしたら  
またindex.htmlから1秒でヤフーに飛んでしまうので、その処理を止めたいです。  
（ブラウザの「戻る」ボタンを押したら、上述のscriptが効かないようにしたい）  
ローカルだとうまく動作するのですが、サーバーアップすると上述のscriptはずっと効いていて...。どのようにscript書けばいいでしょうか。


CC BY-SA 3.0
2016-12-09T09:00:21.040
31050
2016-12-09T14:05:09.877
19864
question
javascript jquery
ブラウザの「戻る」ボタンを押したら（リロードしたら）、記述のjavascriptが効かないようにしたい


履歴に残す URL にはハッシュを付けて置き、そのハッシュを付けた URL でのアクセスではリダイレクトさせない、という方法です。

[code]

    window.addEventListener("unload", function(){
        // 移動する際、履歴には #no-redirect 付きの URL を残す
        history.replaceState(undefined, document.title, "#no-redirect");
    });
    
    if(window.location.hash == "#no-redirect"){
        // 履歴経由のアクセスの可能性が高いので、リダイレクトはしない
        // ユーザには #no-redirect 抜きの URL を露出
        history.replaceState(undefined, document.title, window.location.pathname);
    }
    else{
        // 履歴経由のアクセスではなさそうなので、リダイレクト
        setTimeout(redirect, 1000);
    }
    
    function redirect(){
        window.location.assign("http://example.com/");
    }
    
[/code]


CC BY-SA 3.0
2016-12-09T14:05:09.877
31058
2016-12-09T14:05:09.877
3054
31050
answer