Skip to content

Instantly share code, notes, and snippets.

@lefam
Created February 22, 2021 09:52
Show Gist options
  • Save lefam/591989301a215c1b1e819f1be060e6ae to your computer and use it in GitHub Desktop.
Save lefam/591989301a215c1b1e819f1be060e6ae to your computer and use it in GitHub Desktop.
Hook to determine if current page window/tab is visible.
import { useEffect, useState } from 'react';
let hidden, visibilityChange;
if (typeof document.hidden !== 'undefined') {
hidden = 'hidden';
visibilityChange = 'visibilitychange';
} else if (typeof document.msHidden !== 'undefined') {
hidden = 'msHidden';
visibilityChange = 'msvisibilitychange';
} else if (typeof document.webkitHidden !== 'undefined') {
hidden = 'webkitHidden';
visibilityChange = 'webkitvisibilitychange';
}
export default function useIsPageVisible() {
const [isVisible, setIsVisible] = useState(!document['hidden']);
useEffect(() => {
const handleVisibilityChange = () => {
setIsVisible(!document[hidden]);
};
document.addEventListener(visibilityChange, handleVisibilityChange);
return () => {
document.removeEventListener(visibilityChange, handleVisibilityChange);
};
}, []);
return isVisible;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment