###実現したいこと
とあるwebサイトの管理画面を開発しており、下記条件でログを出力する処理を作成しています。
・ブラウザ、若しくはページが閉じられた場合→ログを出力
・該当ページから外部Webサイトへ遷移した場合→ログを出力
(管理画面内に外部webサイトへのリンクは存在しない為ブックマーク等での遷移を想定)
・ページ内aタグやsubmitでの画面遷移→ログ出力しない
・ブラウザの更新ボタンやF5押下時→ログ出力しない
###現在の状況
jQueryのbeforeunloadで実装しようとしたのですが、aタグやsubmitはclickイベント等で判別出来てもブラウザによるページ更新の判別方法が分かりません。
解決方法・若しくは代替案等ありましたらご教授下さい。
*2016/8/16
新しいタブ等で開いた場合はbeforeunloadをoffにしない処理を追記しました
$(function(){ $(window).on('beforeunload', function() { //ログ出力処理 }); $("form").submit(function() { $(window).off("beforeunload"); }); $("a").click(function(event) { var button = event.button; if (!event.which && button !== undefined) { event.which = (button & 1 ? 1 : (button & 2 ? 3 : (button & 4 ? 2 : 0))); } // 新しいタブ・ウィンドウで開いた場合は無視する if (!((event.button !== 0 && event.which !== 1) || event.altKey || event.ctrlKey || event.shiftKey || event.metaKey)) { $(window).off("beforeunload"); } }); });
####システムでの使用言語
cakePHP
HTML
javascript
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/10 03:56