Moment przechodzenia na inną stronę to zdarzenie unload, więc jak zachodzi to wiesz, że user albo przechodzi nw inną stronę, albo zamyka taba.
Jak wykryć, że nie opuszcza Twojej strony? Przechwytujesz kliki na linkach. Jeśli są to linki wewnątrzserwisowe, to zapisujesz ten fakt do flagi i tym sposobem informujesz handler zdarzenia unload, że ma to wywołanie zignorować.