js初心者です。
調べながらやってみたものの解決できず、投稿させて頂きました。
jsのコード
$(function () { // 元のURLを取得&"/"で分解 var referrer = document.referrer.split('/'); var targetWord = 'confirm'; // referrer内に"confirm"が含まれていれば、インデックス番号を格納 var inValue = referrer.indexOf(targetWord); if (inValue >= 0) { history.pushState(null, null, null); window.addEventListener("popstate", function () { var result = window.confirm('確認画面には戻れません。トップページにリダイレクトしますか?'); if (result) { location.href = "http://localhost:3000/"; } else { history.pushState(null, null, null); } }) } });
実現したいこと
直前のURL履歴内に特定のワードが入っている場合に限り、ブラウザバックさせないようにしたい。
【現状】
関係ない箇所でブラウザバックの禁止が効いてしまいます。
具体的には、
ページ遷移の順番: new画面 → confirm画面 → show画面(ここでブラウザバック)の時
show画面からconfirm画面にブラウザバックしようとすると、想定通りにウィンドウが表示されて(キャンセル=現在のURL画面を表示 ・ OK=リダイレクト)の動きになっておりますが、
ページ遷移の順番: new画面 → confirm画面 → show画面 → user一覧画面 → その他の画面(ここでブラウザバック)の時
その他の画面からuser一覧画面にブラウザバックしようとする時も、ウィンドウが表示されてしまいます(キャンセル=user一覧画面を表示 ・ OK=リダイレクト)の動き。
キャンセル押して表示されたuser一覧画面でブラウザバックしようとする時も、ウィンドウが表示されて(キャンセル=現在のURL画面(yser一覧画面)を表示 ・ OK=リダイレクト)の動き。
伝わり難くて申し訳ないです。。
history関連かと思い調べておりましたが、どこが悪いのか分からずご教授頂きたいです。
回答1件
あなたの回答
tips
プレビュー