Envie o AJAX para o servidor beforeunload [duplicate]
Esta questão já tem uma resposta aqui:
JavaScript, navegadores, fechamento de janelas - envie uma solicitação AJAX ou execute um script no fechamento da janela 7 respostasEntão, supostamente começando no Firefox> 4, vinculando o objeto window jQuery abeforeunload
não funciona mais.
O que eu gostaria de fazer é enviar uma postagem do AJAX para excluir os dados do memcache do meu servidor.
Quando atualizo a única guia aberta, vejo quebeforeunload
event é chamado no firefox e chrome com o seguinte código, conforme evidenciado pela mensagem console.log, "firefox / NON-firefox delete". O problema é que eu nunca vejo a mensagem console.log "memcache delete" indicando que o meu servidor nunca viu o$.ajax
pedido.
Eu percebo que é ruim fazer o sniffing do navegador e que não há diferença entre o que está incluído nas instruções if e else. Estou apenas mostrando código para o que eu tentei sem sucesso no Firefox.
Alguém tem alguma ideia?
$(window).bind('beforeunload', function(){
if(/Firefox[\/\s](\d+)/.test(navigator.userAgent) && new Number(RegExp.$1) >= 4) {
console.log('firefox delete');
memcacheDelete();
return null;
}
else {
console.log('NON-firefox delete');
memcacheDelete();
return null;
}
});
function memcacheDelete() {
$.ajax({
url: "/memcache/delete",
type: "post",
data:{},
success:function(){
console.log('memcache deleted');
}//success
}); //ajax
}