リア充爆発日記

You don't even know what ria-ju really is.

Coffeescriptでページを離れる前に警告を表示する方法

入力フォームとかで、うっかりバックスペースとか押しちゃって入力内容パー、みたいな事態を防ぎたいケースの話し。

beforeunloadというイベントを使う。

    $(window).on('beforeunload', (evt)->
      return 'hogehoge'
    )

これでリンク踏んで画面遷移するときはもちろん、リロードもブラウザを閉じたときも発火してアラートがでる。

一部のリンク押下では出したくない場合は以下のようにやればかなり対応できる。

    @$('.js-no-beforeunload').on('click', ->
        $(window).off('beforeunload')
    )
    $(window).on('beforeunload', ->
      return 'hogehoge'
    )

こんな感じで、クリックイベントを取ってbeforeunloadイベントを外す。

リロードを完全に制御するのはブラウザ付属のリロードボタンクリックを判別しなければいけないので、無理かもしれない。どっかの誰かがクリックの座標で判断するってやってたのを見たけど、やる気がおきなかった。