14
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【JavaScript】ページ離脱時に beforeunload でアラート表示、だがカスタムメッセージが設定できない

Posted at

JavaScript で beforeunload イベントを使うと、ブラウザの閉じるボタンやリロード、他のページに遷移しようとしたときにアラートを表示することができます。

以下は、aタグリンクとsubmitボタンを配置しただけのHTMLです。

index.html
<!DOCTYPE html>

<html lang="ja">
<head>
  <title>beforeunloadTest</title>
</head>

<body>

  <form action="index.html" method="get">
  
    <div>
      <a href="index.html">link</a>
    </div>
    <div>
      <input type="submit" id="mySubmit" value="submit">
    </div>
  
  </form>

  <script src="main.js"></script> 
</body>
</html>

以下のように、beforeunloadイベント発火時の処理とイベントの登録を実装します。

main.js
// beforeunloadイベント発火時の処理
var unloaded = function (e) {
    // カスタムメッセージの設定(後述するが、EdgeとIEしか表示されない)
    var confirmMessage = '離脱するの?';
    e.returnValue = confirmMessage;
    return confirmMessage;
};

// beforeunloadイベントの登録
window.addEventListener('beforeunload', unloaded, false);

// 特定のボタンがクリックされたときはアラートを表示しないようにもできます。
document.getElementById('mySubmit').addEventListener('click', function(){
    // submit時はアラート表示させない
    window.removeEventListener('beforeunload', unloaded, false);
});

ただし、上記で設定した「離脱するの?」というカスタムメッセージはEdgeIEでしか表示されません。
確認時のバージョンは以下。

  • Chrome : 62
  • Safari : 11
  • Firefox : 57
  • Edge : 40
  • IE : 11.726
  • Opera : 49
14
18
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?