【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」のイベントじゃないとちゃんと動作しないから!
異常です!