2013-05-15 40 views
0

是否有可能在Firefox扩展中检查到网络的连接? 我只想知道用户是在线还是离线。通过Firefox扩展检查网络连接

我已经尝试过navigator.online,但它不起作用。

+0

我已经想通了,network.online是如果您在浏览器文件中选择状态 - >脱机工作。 但是,如果我切断网络连接,network.online不会改变。有人可以帮助我吗? – ray

回答

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(); 
}; 

它工作正常。无论如何感谢您的帮助!