Я видел тысячу сообщений, где кто-то спрашивает, как обнаружить интернет-соединение в javascript, и всегда есть один человек, который говорит, что использует navigator.onLine, а другой, который говорит, что он ненадежный и только говорит вам, доступно ли соединение, а не если вы подключены.
В нижней строке, будет ли navigator.onLine сказать, не может ли пользователь связаться с сервером из-за плохого покрытия, даже если 3G/4G и WiFi включены, а они не в режиме полета или что-то еще? Только ваша средняя мертвая зона.