「Firefox」タグアーカイブ

[JavaScript] ブラウザの戻るボタンを無効化する

ブラウザの戻るボタンを無効化する方法を調査したので、そのときのメモ。

クライアントサーバシステムだった社内システムをWEBシステムにリプレースする案件でこういった要件を見かける。顧客は、クラサバのときの使い心地をそのままにWEBシステムにしようとするので、こんな要件がでてしまう。

少し前まで完璧にはできなかったようだが、最近になってHTML5+jQueryの組みあわせでできるようになったみたい。

〇サンプルソースはこちら

https://jsfiddle.net/saimjcf/5atzrp26/

「RUN」を押下すると、JavaScriptがロードされるので、ブラウザの戻るボタンを押してみてください。無効になっていて、画面遷移が発生しないはず。

この中でブラウザの戻るボタンを無効化しているのは以下の部分です。

〇仕組みの話

まず、上記サンプルソースが画面上にロードされると、history.pushState(null, null, null)メソッドでブラウザの履歴の先頭に新しい履歴を一つ追加します。このとき第3引数がnullなので、追加された履歴は自分自身を指していることになります。

そして、戻るボタンが押下されたら”popstate”イベントが発生しますので、その”popstate”イベントが発生したときの処理として、再度history.pushState(null, null, null)を実行して、ブラウザの履歴の先頭に新しい履歴を一つ追加します。要は、ブラウザの履歴を操作しています。

hisotry APIの詳細はこちら
https://developer.mozilla.org/ja/docs/Web/Guide/DOM/Manipulating_the_browser_history

※サンプルソースは、Firefox、Google Chrome、IEのみで動作確認しました。


FirefoxでIME起動中はkeyupイベントが発生しない

少し前に仕事で調べたのでメモ。

keyupイベントをキャッチして処理するJavaScriptのプログラムを開発していたのですが、Firefoxでうまく動作しませんでした。調べて見たところ、IME起動中(日本語変換中とか)には、Firefoxではkeyupイベントが発生しません。

 こちらのサイトで「日本語入力時に発生するキーイベントのテスト」ができます。

確認してみると、IEやChromeはIME起動中でもkeyupイベントが発生するのですが、Firefoxだけ発生しません。こういうのは揃えてほしい。

FirefoxのBugzzilaにもバグ?として報告されているので、いつかは治るかも( ̄ー ̄?)
https://bugzilla.mozilla.org/show_bug.cgi?id=354358