Javascriptでブラウザの「戻る」ボタンを押したらイベントを発動する方法を探る

Javascriptでブラウザの「戻る」ボタンを押したらイベントを発動する方法を探る
■ 店頭より得で、予約しやすいオンラインショップ。
 → ドコモオンラインショップ
 → auオンラインショップ
 → ソフトバンクオンラインショップ

最新のiPhoneを得して乗り換えるなら、最大6万円のキャッシュバックがある
→ SMARTPHONE STORE

ショーケース・ティービーではいくつかのASPサービスをご提供させていただいているわけですが、ウェブサイトのトレンドに合わせて、各商品で大小様々なアップデートを実施し、そしてその時々のカスタマイズ対応を繰り返してご活用いただいております。
今回は久々に個人的に結構手こずった印象のあるカスタマイズ内容についてご紹介させていただきます。

まず要望はJavascriptだけで、ブラウザバックボタンを押した時に確認メッセージを表示させ、ユーザが了承することで初めて、本来のブラウザバックを起動させたいというものです。
つまりユーザにブラウザバックを思いとどまらせるための機能実装を要望されているということですね。

動作確認の対象

今回のカスタマイズ対象にしたのはAndroid端末、かつChromeブラウザです。なお、対象の識別はユーザエージェントで判断しました。ちなみに標準ブラウザでは確認メッセージを表示させなくとも良いとのこと。
調査したところ、標準ブラウザとして判断できるトリガーは以下の3点でした。

本来であればAndroid端末、かつChromeブラウザだけを対象とする、いわゆる “ホワイトリスト方式” を採用し、以下のような書き方でカスタマイズ対応ができれば良かったのですが……

下記の「標準ブラウザの例」を見る限りでは、なんと “Chrome” という文字列が入っていました。そのため、標準ブラウザとして判断できるトリガーで、さらにユーザエージェントを絞り込む必要が出てきたわけです。

標準ブラウザの例:
Mozilla/5.0 (Linux; U; Android 4.0.3; ja-jp; SC-02C Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30

Mozilla/5.0 (Linux; Android 4.2.2; ja-jp; SC-04E Build/JDQ39) AppleWebkit/535.19 (KHTML,like Gecko) Version/1.0 Chrome/18.0.1025.308 Mobile Safari/535.19

■最新のiPhoneの購入・機種変更なら店頭より得で、予約しやすいオンラインショップ。
機種の頭金や使わないオプションパックをつけて年間何万円も損していませんか?
オンラインショップなら故障のサポートもしっかりしていて最低限の費用。待たされることもありません。
 → ドコモオンラインショップ
 → auオンラインショップ
 → ソフトバンクオンラインショップ

最新のiPhoneを得して乗り換えるなら、最大6万円のキャッシュバックがある
→ SMARTPHONE STORE
がお得です。