もどるボタンを無効にしたい

もどるボタンを無効にしたい

もどるボタンを無効にしたいと思ってぐぐると、「もどり先のページに history.forward() を埋めこめば、『もどる』されても強制的に元のページに帰ってきてハッピーだよ」という記事がたくさん出てきて「そうじゃない、そうじゃないんだ」という気分になった。

要はそのページから遷移をさせたくないという意味での「もどらせたくない」であって、もどり先のページが重要なわけではなかった。

もどるボタン自体をどうにかしたり、event.preventDefault() できるような event も存在しなかったので、ページ内リンク (#HOGE) が history に数えられることを利用した。

http://mmmpa.net/js_page/unbackable/

(function (wait, hash_wait, hash_unbackable) {
    location.href = hash_wait;
    var id = setInterval(function () {
        clearInterval(id);
        location.href = hash_unbackable;
        window.addEventListener('hashchange', function (e) {
            if (location.hash === hash_unbackable) {
                return;
            }
            history.forward();
        });
    }, wait);
})(400, '#WAIT', '#UNBACKABLE');

もどったりもどらなかったりする。

ページ表示後しばらくたたないと、history に入らないようで、ウェイトさせる必要があった。history.pushState なんてのがあるみたいだが、現時点ではアレ。