[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のみで動作確認しました。


2019/5/20(月) Mr.Children Dome Tour 2019 “Against All GRAVITY”

セットリスト

2019.5.20 東京ドーム

1.Your song
2.Starting Over
3.himawari
4.everybody goes ~秩序のない現代にドロップキック~
5.HANABI
6.Sign
7.名もなき詩
8.CANDY
9.旅立ちの唄
10.ロードムービー
11.addiction
12.Dance Dance Dance
13.Monster
14.SUNRISE
15.Tomorrow never knows
16.Prelude
17.innocent world
18.海にて、心は裸になりたがる

【アンコール】
19.SINGLES
20.Worlds end
21.皮膚呼吸

月曜でも東京ドームをパンパンにしてしまうミスチルさすが!

生で聞いたことの無い曲が多く(特にSUNRISE)、個人的に大満足のセトリでした~

http://tour.mrchildren.jp/dome_stadium/


NextcloudをDockerで構築する方法

個人でDropboxなどのオンラインストレージを利用していますが、容量が限られていたり、容量を増やそうとすると月額料金が掛かってしまいます。自前でサーバを構築しようとしたときに、Dropboxとほぼ同じように使えてかつ無料なソフトがいくつかあります。今回は、名前的にイケてそうなNextcloudをDockerで構築してみました。

インストール手順

①Nextcloud公式サイト(https://nextcloud.com/)にアクセスする。
「Get Nextcloud」>「Server packages」を選択する。

②「Appliances」>「Get Docker image」を選択する。
ちなみにここにで、Docker以外のインストーラーを取得できる。

③Docker HubのNextcloudのページに飛ぶので、「Using the apache image」の欄に書かれたコマンドを控える

docker run -d -p 8080:80 nextcloud

④Dockerを起動して、③のコマンドを実行する。
最初の実行時にイメージがダウンロードされます。

⑤「dcoker ps -a」コマンドでNextcloudのコンテナが起動していることを確認する。

⑥「http://<docker仮想マシンのIPアドレス>:8080/」にアクセスする。
(IPアドレスですが、ちなみに以下の例だと、「192.168.99.100」)

⑦管理者アカウントを作成します。IP/パスワードを入力して、「セットアップを完了します」を押下する。データベースの構築などが始まります。

⑧完了すると、管理者アカウントでログインされた状態となる。

あとは、使い方はDropBoxと同じような感じです。

今回は、Dockerで構築しましたが、会社で運用しようと思ったら、WEBサーバやDBサーバを別のサーバやコンテナで構築しなきゃです。


日々のSE業務で得たノウハウと趣味