質問: ### 前提・実現したいこと ページ離脱イベントの実装を目標にしています。 下記のコードでポップアップが表示されたり,されなかったりという問題が発生しています。 具体的には下記を参照ください。 ### 発生している問題 ``` ・ ファーストビューで即ページを閉じた場合、イベントが機能せずポップアップが表示されません。 ・ 一番下までスクロールしてページを閉じようとした場合、初めてポップアップが表示されます。 ``` ### 該当のソースコード ``` $(function() { // ★ページ離脱ポップアップ広告 $(window).on('beforeunload', function() { //window上でページを閉じると.opが表示される $(".op").show(); return ('ページ移動を確認します'); }); }); ``` ``` × ポップアップ表示内容 ```
回答: * window.onbeforeunload > > このイベントが windowのリソースがまさにunloadする時、実行します。この時まだdocument(Webページ)はそのまま見えて残っている状態で、イベントがキャンセル可能な状態です。 > > > 即閉じで実行されないのは画面がロード中でイベントがキャンセルされたためです。 要は、仕様ですね。 beforeunloadはform送信時も発生したり、 あまり使い勝手が良いとは言えないので、要件に合わせてやり方を考えた方がいいかもしれません。 * onbeforeunload が変わってた * ページを閉じる時に確認メッセージを表示する(beforeunload)