Nei moderni browser (anche IE 11), è presente la Page Visibility API che permette di identificare se il tab corrente è attivo (visualizzato) o meno (nascosto).

La proprietà per verificare lo stato di visibilità è document.visibilityState che puo ritornare visible o hidden.

Esiste anche un evento che può notificare il cambio di stato visibilitychange
function onVisibilityChange ()
{
  if (document.visibilityState === "hidden") {
    console.log("Tab nascosto");
  } else {
    console.log("Tab visibile");
  }
}

document.addEventListener('visibilitychange', onVisibilityChange, false);
L'evento viene invocato sia se si cambia tab, sia se si riduce la finestra ad icona.
Non viene invocato se la finestra viene coperta da un altra finestra.