ブラウザ操作時にjavascript処理を実行するには

概要

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

更新ボタン

捕捉可能なイベント

  • 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は発火しない

      閉じるボタン

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

      まとめ

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

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

      コメント

      このブログの人気の投稿

      React 環境構築からHelloWorldまで

      Twitterとwordpressの連携のためにやったこと

      [書籍]リーダブルコード 感想まとめ