0

Firefox 拡張機能でネットワークへの接続を確認する可能性はありますか? ユーザーがオンラインかオフラインかを知りたいだけです。

すでに navigator.online を試しましたが、うまくいきません。

4

2 に答える 2

1

私が知っているように、Firefox はネットワーク接続を切断しても認識しません。そこで、ブール値を設定するために小さな XMLHttpRequest (XHR) を作成しました。

var netOnline; 

function createXMLHttpRequest() {
    return Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"]
       .createInstance(Components.interfaces.nsIXMLHttpRequest);    
}

function issueRequest() {
    var req = createXMLHttpRequest();
    req.open("GET", "http://google.com", true);
    req.timeout = 1000; // ms 
    // online
    req.addEventListener("load", function(event) {
        netOnline = true; 
    });
    // timeout -> offline
    req.addEventListener("timeout", function(event) {
        netOnline = false; 
    }); 
    // error -> offline
    req.addEventListener("error", function(event) {
        netOnline = false; 
    });
    req.send();
};

それは正常に動作します。とにかく、あなたの助けに感謝します!

于 2013-05-16T14:33:39.503 に答える