ブラウザ操作(更新、閉じる、戻る)をトリガーにjavascript処理を実行するには

2020年8月21日金曜日

javascript

t f B! P L

概要

ブラウザの更新ボタン、戻るボタン、閉じる(×)ボタンをトリガーにそれぞれ処理を実行したい

更新ボタン

捕捉可能なイベント

  • beforeunload
  • unload

    javascript

        window.addEventListener('beforeunload', (event) => {
          // 処理を書く
        })
      

    注意点

    beforeunload、unloadはあくまでページのアンロード時に発火するイベント。ブラウザのどのボタン(更新なのか閉じるなのか)を押して発火したかまではわからない

    戻るボタン

    捕捉可能なイベント

    • popstate

      javascript

       
          window.addEventListener('popstate', (event) => {
            // 処理を書く
          })
        

      注意点

      chromeではセキュリティの観点から、popstateイベントは発火しないようになっている。正確にはユーザが能動的にアクション(ボタン操作など)を起こすと発火する。javascriptでclickイベントを発火させてもpopstateは発火しない

      閉じるボタン

      更新ボタンと同じ内容であるため割愛

      まとめ

      更新ボタン、閉じるボタンを捕捉できるイベントは同一であるためどちらが押されたか判別はできない。戻るボタンはユーザがクリックなど何らかの操作をすればイベントが発火する。

      傾向として最新の各ブラウザではブラウザ操作の悪用を防ぐためにクライアント側から制御できないようになりつつある

      自己紹介

      Webエンジニアをやっています。日々思ったことや、読書レビュー、IT系の記事などを書き連ねています

      広告

      Rails Service追加したらNameError: uninitialized constant

         概要 Rails6でServiceを追加したい。 ServiceってのはModelやControllerに依存しない振る舞いの処理を記述したもので主に肥大化防止、保守性向上を目的に作ったりする。 結局はファイル追加するだけなんだけどつまづいたとこもあるのでメモ Servic...

      QooQ