如何在JavaScript中检测Internet连接是否脱机?
我遇到了navigator.onLine属性的问题.
我正在运行WAMP的本地信息亭运行一个简单的网站.
在我测试它的笔记本电脑上它有效.我关闭WiFi并显示警告框.在运行WAMP软件的自助服务终端上断开互联网连接不会产生错误状态.有什么想法吗?
var online = navigator.onLine;
if (online == false) {
alert("Sorry, we currently do not have Internet access.");
location.reload();
}
Run Code Online (Sandbox Code Playgroud) 我遇到一个问题是当firefox低于2.0时我的css有一些bug.我想检测浏览器来修复我的CSS错误.
这是我的代码:
$(document).ready (
function() {
if ( $.browser.mozilla == true && $.browser.version < '3.0' ) {
$('img.frameMargin').css('margin-left','35px');
}
}
);
Run Code Online (Sandbox Code Playgroud)
但是这段代码似乎不起作用.
谢谢提前.
我正在使用HTML5,CSS3,jQuery Mobile,jQuery UI,ASP.NET,C#和一些jQuery插件为调查创建这个简单的移动网页.其中一个要求是显示弹出/对话框(javascript警报或jQuery移动对话框,如果是jQuery UI对话框,则更好),只要设备没有互联网连接(特别是Android),就会通知用户.目前我有这个代码:
<link rel="stylesheet" href="../Scripts/jqueryui/jquery-ui.css" type="text/css" media="all" />
<link rel="stylesheet" href="../Scripts/jquery.mobile-1.1.0.css" />
<script src="../Scripts/jquery-1.7.1.js" type="text/javascript"></script>
<script src="../Scripts/jquery.mobile-1.1.0.js" type="text/javascript"></script>
<script src="../Scripts/jqueryui/jquery.min.js" type="text/javascript"></script>
<script src="../Scripts/jqueryui/jquery-ui.min.js" type="text/javascript"></script>
<script src="../Scripts/jquery.validate.js" type="text/javascript"></script>
<script type="text/javascript">
var online = window.navigator.onLine;
if (!online) {
alert('Please check your internet connection and try again.');
}
function checkInternet() {
var online = window.navigator.onLine;
if (!online) {
alert('Please check your internet connection and try again.');
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
然后我把JavaScript函数放在表单的onsubmit事件上:
<form id="frmSurvey" runat="server" class="validate" onsubmit="checkInternet()">
Run Code Online (Sandbox Code Playgroud)
当我在台式机/ PC浏览器上查看但它根本无法在移动设备上运行时,它正在工作.jQuery Mobile错误加载页面.
因为,这不是我调整jQuery Mobile文件的要求,注释了错误加载页面消息部分,它不再出现了.我已经尝试过谷歌搜索任何相关主题,但没有找到任何相关主题.
我真的很难让这成为可能.请帮帮我们! …
我有一个简单的联系表单,Angular通过AJAX提交到我在Google App Engine上的应用程序.(POST处理程序使用send_mail函数向网站所有者发送电子邮件).这是客户端代码:
$http.post('', jQuery.param(user), {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}).success(function(data, status, headers, config) {
//...
}).error(function(data, status, headers, config) {
alert('Please check your Internet connection and try again.');
});
Run Code Online (Sandbox Code Playgroud)
显然alert()是处理所有错误.假设我的服务器端代码没有错误,我猜测App Engine返回除HTTP状态代码200以外的任何其他内容的可能性很低.但是,我仍然希望区分服务器错误和丢失连接的用户.
我正在考虑textStatus按照这个SO答案使用XMLHttpRequest ,但它似乎不可用于$http.error()回调.我还想过使用Offline.js,但我不需要它做的大部分工作,所以在这种情况下看起来像浪费的字节.
在$http.error() status我得到在脱机时为0,但我不知道这是如何跨浏览器的可靠性将是.我该怎么用?
当我关闭Wi-Fi(OS X中我的笔记本上的机场)时,navigator.onLine仍然返回true.这是违反直觉的行为.但是当我在像Firefox这样的浏览器中设置"脱机工作"时,它会正确返回false.这是预期的吗?
alert(navigator.onLine ? "online" : "offline");
Run Code Online (Sandbox Code Playgroud) 我有一个 React 组件,其中包括 Internet 连接的可用性标志。UI 元素必须根据状态实时动态更改。此外,函数的行为会随着flag的变化而不同。
我当前的实现使用间隔每秒使用 Axios 轮询远程 API,并相应地更新状态。我正在寻找一种更精细、更有效的方法来完成这项任务,以最小的计算成本消除 1 秒的状态错误。当且仅当设备具有外部 Internet 连接时才考虑在线
当前实现:
class Container extends Component {
constructor(props) {
super(props)
this.state = {
isOnline: false
};
this.webAPI = new WebAPI(); //Axios wrapper
}
componentDidMount() {
setInterval(() => {
this.webAPI.poll(success => this.setState({ isOnline: success });
}, 1000);
}
render() {
return <ChildComponent isOnline={this.state.isOnline} />;
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
寻找能够检测外部 Internet 连接的解决方案。设备可以连接到没有外部连接的 LAN。所以,它被认为是离线的。当且仅当设备可以访问外部 Internet 资源时才考虑在线。
目前,我正在制作一个缓存的iPhone应用程序,其中包含一些需要互联网的功能,以及其他不支持互联网功能的功能.我想知道如何使用JavaScript检测互联网连接,使某些页面显示"无互联网连接"文本,以及其他人正常工作.
我有一个社交网络应用程序的想法,部分想法是将数据从localstorage提取到服务器数据库.这样做的原因是你有一个想法,你想把它放在你的社交应用程序的下一个状态,但你没有任何信号和无线.您在应用程序上写下状态,并将其保存到本地存储区,以便在他们返回可以在线连接手机的地方时使用.
然后他们到达一个他们可以上网的地方,应用程序然后检测到localstorage中有一个更改,然后从那里拉出它并保存到服务器数据库.
这是否可能,如果是这样,您将如何实施它?如果不可能的话,你认为这可能是将来的某个时候吗?
我期待听到您对此问题的评论和回答,因为我认为这可能是一次非常大的讨论.
我正在使用HTML5 IndexedDB概念在我的页面中进行脱机数据库连接..但是最初,我想获取大数据以将其存储在我的IndexedDb中,所以为此目的,我试图将Sql Server数据同步到我的IndexedDb Datatbase但是我没有找到任何解决办法.有没有办法做到这一点,如果是这样请帮助我..谢谢..
我正在编写一个简单的 Chrome 扩展程序,需要该行为来检测设备是否连接到 Internet。我目前正在尝试连接到 ping 服务以检查网络状态,但效率不高。我可以从 Chrome JavaScript API 收听任何事件吗?
javascript ×8
ajax ×2
jquery ×2
angularjs ×1
axios ×1
browser ×1
connectivity ×1
css ×1
html ×1
html5 ×1
indexeddb ×1
jquery-ui ×1
mysql ×1
offline ×1
offlineapps ×1
php ×1
reactjs ×1
sql-server ×1