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

2020年8月21日金曜日

javascript

t f B! P L

概要

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

更新ボタン

捕捉可能なイベント

  • beforeunload
  • unload

    javascript処理

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

    注意点

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

    戻るボタン

    捕捉可能なイベント

    • popstate

      javascript処理

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

      注意点

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

      閉じるボタン

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

      まとめ

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

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

      自己紹介

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

      数値からIPアドレスへ、IPアドレスから数値へ

        概要 IPアドレス文字列のテストデータを作成することがあったのでメモ。 IPAddrクラスを使って数値からIPアドレス、IPアドレスから数値に変換する ruby 公式

      QooQ