Контекст кода JavaScript для каждой открытой страницы (называется окном). Поэтому нет надежного способа отслеживать открытые страницы, если вы не открываете соединение WebSocket с сервером и проверяете количество открытых страниц, связывая уникальный идентификатор с каждой из них и предотвращая открытие нескольких страниц. Если вы хотите использовать этот подход, найдите реализацию WebSocket вашего серверного приложения.