Estou desenvolvendo uma funcionalidade e preciso quando o usuário fechar a aba ou o navegador o sistema realize uma chamada para uma determinada funcionalidade, utilizei para testes as seguintes funcionalidades:
onbeforeunload;
onunload.
Porém em ambos quando eu navegado pelo site ele chama a funcionalidade, ao invés de chamar somente quando o navegador ou a aba é fechada.
Existe alguma forma de fazer para quando estiver navegando não chamar a funcionalidade ?
Realizei um teste da forma que você me enviou e ao navegar para outra página do site, a função foi executada.
Lucas_Camara
Então significa que funcionou! Bom d+. Atendeu sua necessidade?
L
leandrocd
Não
Eu preciso somente quando o a aba do site é fechada ou quando o navegador é fechado, quando eu estiver navegando pelo site não pode executar.
Por exemplo, estou na index e vou para o contato ele executa a função, porém eu preciso que seja somente executada quando a aba ou o navegador é fechado.
Lucas_Camara
Até onde sei, a única forma (standard) que conheço é unload que detecta esse tipo de coisa. Que tipo de ação vc precisa executar nessa situação?
L
leandrocd
O cliente vai inserir itens no carrinho de compras, caso ele não finalize a compra e saia da página o sistema enviará uma notificação para a administração do e-commerce informando sobre o abandono.
Lucas_Camara
Os dados do carrinho fica armazenado na sessão do usuário? Se sim, talvez vc consiga fazer essa notificação quando a sessão do usuário expirar (geralmente a sessão possui um timeout padrão e ao ser invalidada, os dados da sessão são perdidos).
L
leandrocd
O carrinho fica no localstorage.
wallacecampanha
Saudações Leandro! Ao chamar a função, utilize um e.preventDefault(); para desativar o evento padrão e assim você realiza o evento desejado.