JavaScript检测用户是否处于脱机状态

时间:2015-12-05 14:08:15

标签: javascript html xmlhttprequest

我目前正在开发一个Web应用程序。我正在使用Appcache。 所以我想做的事实上很简单:如果用户在没有互联网连接的情况下加载页面,他会看到一个文本为“离线”的按钮,否则文本为“在线”。 我的第一种方法是使用offline.js,但是没有正确检测用户何时开启/离线。

所以我尝试了这段代码:

function serverReachable() {
    // IE vs. standard XHR creation
    var x = new (window.ActiveXObject || XMLHttpRequest)("Microsoft.XMLHTTP"),
        s;
    x.open(
        // requesting the headers is faster, and just enough
        "HEAD",
        // append a random string to the current hostname,
        // to make sure we're not hitting the cache
        "//" + window.location.hostname + "/?rand=" + Math.random(),
        // make a synchronous request
        false
    );
    try {
        x.send();
        s = x.status;
        // Make sure the server is reachable
        return (s >= 200 && s < 300 || s === 304);
        // catch network & other problems
    } catch (e) {
        return false;
    }
}

但看起来,当通过AppCache加载页面时,XHR-Requests将失败。 使用navigator.onLine是不可取的,因为我们的大多数用户都在使用Chrome。

有解决方案吗? 谢谢

1 个答案:

答案 0 :(得分:0)

navigator.onLine 确实在Chrome中工作。