質問: ``` ``` index.htmlに上記のjavascriptを記述して、index.htmlにアクセスしたら1秒でヤフーに飛ぶようにしているのですが、ヤフーにいる状態でブラウザの「戻る」ボタンをクリックしたら またindex.htmlから1秒でヤフーに飛んでしまうので、その処理を止めたいです。 (ブラウザの「戻る」ボタンを押したら、上述のscriptが効かないようにしたい) ローカルだとうまく動作するのですが、サーバーアップすると上述のscriptはずっと効いていて...。どのようにscript書けばいいでしょうか。
回答: 履歴に残す URL にはハッシュを付けて置き、そのハッシュを付けた URL でのアクセスではリダイレクトさせない、という方法です。 ``` 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/"); } ```