我们如何检查Firefox OS设备是否已连接到互联网?我试过了
navigator.mozConnection, navigator.connection.type, navigator.onLine
但它不起作用。
请告诉我。感谢。
答案 0 :(得分:3)
彼得建议的是可能的,虽然它不是优雅或遵循最佳实践。
我通过提供一些代码示例以及如何实现这一点来补充Jason Weathersby的答案。
浏览器行为
这是一个非常依赖于浏览器的实现,您应该谨慎使用这些属性。如MDN中所述,
在Chrome和Safari中,如果浏览器无法连接到局域网(LAN)或路由器,则它处于脱机状态;所有其他条件都返回true。因此,虽然您可以假设浏览器在返回false值时处于脱机状态,但您不能认为真值必然意味着浏览器可以访问互联网
这意味着您可以连接到没有Internet访问权限的LAN,并且仍然可以返回true。
在Firefox和Internet Explorer中,将浏览器切换为离线状态 mode发送false值。所有其他条件都返回真值。
如果浏览器不支持navigator.onLine,则上面的示例将会显示 总是出现假(假/未定义)。
代码示例
要检查您是否有连接,请尝试online = window.navigator.onLine;
如果您想听取连接更改,您应该执行类似
的操作关闭连接时
window.addEventListener("offline", function(e) {do something})
重新连接时
window.addEventListener("online", function(e) {do something})
其他建议
这些解决方案可能不可靠,因此如果您希望在此处获得安全理由,可能会有一些后退。正如http://www.html5rocks.com/en/mobile/workingoffthegrid/所示,您可以尝试执行类似
的操作 window.applicationCache.addEventListener("error", function(e) {
alert("Error fetching manifest: a good chance we are offline");
});
这之所以有效,是因为它总是尝试请求清单检查是否需要更新其资产列表。如果该请求失败,通常是两件事之一,清单文件不再被使用(即,它没有被托管),或者系统无法访问网络来获取文件。
答案 1 :(得分:1)
您可以发出Ajax请求并查看它是否通过,重复几次,如果没有任何反应,那么您可以推断出没有互联网连接,并从那里做任何你想做的事。
答案 2 :(得分:1)
为了扩展Peter已经提出的建议,以下是如何实施专用打包应用程序的解决方法。
// We'll assume we aren't online.
var online = false;
// Assume we're a packaged app with systemXHR permissions.
// https://developer.mozilla.org/docs/Web/Apps/App_permissions
var request = new window.XMLHttpRequest({mozSystem: true});
request.open('HEAD', 'http://www.mozilla.org/robots.txt', true);
request.timeout = 5750;
request.addEventListener('load', function(event) {
console.log('We seem to be online!', event);
online = true;
});
var offlineAlert = function(event) {
console.log('We are likely offline:', event);
}
我不确定如何为托管或非特权应用程序执行此操作。希望其他人可以提供更好的解决方案。
答案 3 :(得分:0)
if (navigator.onLine) {
//you code if internet is on
}
//在我的firefox OS中测试,ZTE OPEN