onreadystatechange XHR наконец возвращает статус «0» вместо «200», «404» или что-то еще. Таким образом, вы должны проверить свойство «readyState» (в конце равно 4) и свойство «status» («0», если нет подключения к Интернету).
Кстати, есть также свойство navigator.onLine, которое может помочь вам проверить интернет-соединение.