javascript - 测试互联网(谷歌、AWS 等)是否可访问的最粗鲁的方法

标签 javascript google-chrome-extension google-chrome-app offlineapps

我正在寻找一个可用于测试互联网是否正常的 URL。

我可以使用 1x1 像素测试我的服务器(下面推荐),但是如何测试互联网是否正常,但我的服务器已关闭。

在我的应用程序中,我可以使用有关本地网络接口(interface)(wifi AP)的这两个事件,但不能使用有关互联网(网关、dns、上游网络)的事件:

window.addEventListener('online', onNetworkUp, false);
window.addEventListener('offline', onNetworkDown, false);

所以,我可以“在线”,但无法连接到互联网。

为了测试“互联网”,我可以 ping 我的 API 服务器,但也想检查其他可能有更好 SLA 的地方。例如。谷歌、亚马逊等。

最不粗鲁的方法是什么?是否有一个 URL 期望以这种方式使用?

迈克

最佳答案

检查您是否连接到互联网的最简单方法是使用navigator.onLine:

if (navigator.onLine) {
    // you are online... do something
} else {
    // you're not online
}

但是,这不适用于您的本地服务器,因此我第二喜欢的方法(因为有很多方法可以做到这一点)是使用任何网络请求(例如图像)添加 onerror 事件:

<img src='http://www.example.com/singlepixel.gif' onerror='offline();' />
<script>
    function offline() {
        alert('Internet offline!');
    }
</script>

显然,您应该向一个小图像(例如 1x1px)发出请求,这样当您连接到互联网时,加载时间就不会太长。

或者如果你想使用纯 Javascript:

function internetON() {
    var xhr = new XMLHttpRequest();
    xhr.open('GET', 'http://www.example.com/singlepixel.gif', false);
    xhr.send();
    return xhr.status === 200;
}

if (internetON()) {
    // you are online... do something
} else {
    // you're not online
}

关于javascript - 测试互联网(谷歌、AWS 等)是否可访问的最粗鲁的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26409174/

相关文章:

javascript - D3+三.js : graticule projection - cannot apply projection to graticule

javascript - 如何使用 polymer 提交表格?

javascript - jQuery 按钮未 append 在页面加载上

javascript - Chrome 扩展程序呈灰色并且不会显示弹出窗口

javascript - window.alert() 在打包的应用程序中不可用

google-chrome - 替换 Chrome 打包应用中的 fileEntry.toURL()

JavaScript 获得 Audio.setSinkId 的权限

javascript - jQuery 和普通 Javascript 中指针事件绑定(bind)的区别

javascript - 如何使用 JQuery UI 阻止 UI?

google-chrome-extension - chrome.tab.onactivated