Dafür gibt es das "visibilitychange" Event, das ausgelöst wird, wenn sich die Sichtbarkeit eines Dokuments ändert. Wenn das Event ausgelöst wird überprüfst du ob "document.hidden" true ist, was bedeutet, dass der Tab im Hintergrund ist.
document.addEventListener('visibilitychange', function() {
if (document.hidden) {
console.log('Der Tab ist jetzt im Hintergrund.');
} else {
console.log('Der Tab ist jetzt im Vordergrund.');
}
});