【iOS】iPhoneでページ離脱時にajaxで情報を送信するゾ!
iPhoneのSafariでページを移動したときに、ajaxで何か情報を送信したいときのコードです!
jQuery(window).on('pagehide', function() { sendAjaxData(); }); function sendAjaxData(){ var ajax_url = "http://hogehoge.com"; var post_data = new Object(); post_data.hoge1 = 'hoge!'; post_data.hoge2 = 'hoge!hoge!'; post_data.hoge3 = 'hoge!hoge!hoge!'; jQuery.ajax({ type: 'POST', datatype: 'json', url: ajax_url, cache: false, timeout: 3000, async: false, data: { 'data' : post_data } }).done(function(data, textStatus, jqXHR){ alert("送信成功したよ!"); }).fail(function(xhr, textStatus, errorThrown){ alert("送信失敗しちゃった…"); }); }
これで「リンクをクリックしたとき」「戻るボタンを押したとき」「ページと閉じたとき」などで、ajaxの送信処理が走るよ!
(でもタブを別に切り替えたときは処理が走らない…)
(あとページの一番上部にいるときに離脱したときも処理が走らない…)
「beforeunload」のイベントはiOSでは効かないので注意してね!
上記みたいに「pagehide」のイベントじゃないとちゃんと動作しないから!
異常です!