やったこと

webサービスを作るときに考えたことを垂れ流します

【iOS】iPhoneでページ離脱時にajaxで情報を送信するゾ!

iPhoneSafariでページを移動したときに、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」のイベントじゃないとちゃんと動作しないから!

異常です!