もどるボタンを無効にしたい
もどるボタンを無効にしたいと思ってぐぐると、「もどり先のページに 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 なんてのがあるみたいだが、現時点ではアレ。