在线时发送警报
Send alert when online
本文关键字:在线 更新时间:2023-09-26
我想了解navigator.onLine
是如何工作的。为此,我键入了一个小片段,应该每3秒检查一次浏览器是否在线,如果在线,就会弹出一个警报:
function check_connection() {
var online = navigator.onLine;
return online;
}
function timed_alert() {
var perfectTiming = setInterval(check_connection,3000);
if (online) {
alert("ONLINE!");
clearInterval(perfectTiming);
}
timed_alert();
出于某种原因,这东西不起作用。我做错了什么?我应该更改代码段中的哪些内容才能使其正常工作?
您的警报和检查需要在同一个函数中,并且计时器id(perfectTiming)是全局的。
var perfectTiming = null;
function check_connection() {
var online = navigator.onLine;
if (online) {
alert("ONLINE!");
clearInterval(perfectTiming);
}
}
function timed_alert() {
perfectTiming = setInterval(check_connection,3000);
}
timed_alert();
如果你试图测试用户是否有活跃的互联网连接,那就更难了,因为浏览器没有真正的方法来检查这一点。然而,你可以测试几个不同的ip/urls,看看它们是否可以访问
var testUrlIndex = 0;
var testurls = [
"http://www.google.com",
"http://www.cnn.com"
];
function testURL(url)
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==0)
{
testUrlIndex++;
if( testUrlIndex<testurls.length ) {
testUrl(testurls[testUrlIndex]);
} else {
weAppearToBeOffline();
}
}
}
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
function weAppearToBeOffline() {
//DO whatever you need to do if we are offline.
}
testUrl(testurls[0]); //start the check
这段代码将检查2个URL(如果你想检查更多,只需向testurls
添加更多URL),如果它通过了所有URL,但无法到达它们,它将调用weAppearToBeOffline
函数
现在,这只是在几个方面有缺陷,其中一个主要是存在这样的情况,即用户可能在线,但无法访问任何URL,但可以访问其他URL。
您需要使用setTimeout而不是check_connection来调用timed_alert。
function check_connection() {
var online = navigator.onLine;
return online;
}
function timed_alert() {
var online =check_connection();
if (online) {
alert("ONLINE!");
}
else{
setTimeout(timed_alert,3000);
}
}
timed_alert();
您每3秒检查一次连接,但没有对此执行任何操作。请改为每3秒调用timed_alert
,并在该函数中使用check_connection
:
var perfectTiming = setInterval(timed_alert,3000);
function check_connection() {
var online = navigator.onLine;
return online;
}
function timed_alert() {
if (check_connection()) {
alert("ONLINE!");
clearInterval(perfectTiming);
}
}
如果您计划在脚本中的其他位置check_connection
,则可以采用此路线。
进行以下更改:
var perfectTiming = setInterval(check_connection,3000);
function check_connection() {
if(navigator.onLine){
alert("ONLINE!");
clearInterval(perfectTiming);
}
}
相关文章:
- jQuery/JavaScript在线公文包表单-打印样式表
- Javascript在HTML表中输出在线用户名
- 在线程循环中调用JavaScript
- 该代码不适用于使用SEWP的SP在线网站页面
- 在线数据库WebApp/Service
- chart.js在我的本地主机上运行良好,但无法在线运行
- 如何离线存储数据库,在线时共享到服务器
- 如何突出显示在线网页中的文本
- 通过简单的计算将Excel spreadhhet转换为在线网格
- 正在寻找一个好的在线JS obsfucator只用于缩小的目的
- 漂亮的照片在Dreamweaver上完美运行;但不能在任何浏览器上在线工作
- 如何使用一个代码库在线和离线访问 HTML5/JS 应用程序中的数据库
- JavaScript 未在在线版本中执行
- 如果在线检查期间发生电源故障,我们如何更新用户再次登录门户时的剩余时间
- 在线触发自定义安卓摄像头
- 我可以'如果我下载了在线脚本,就不要使用它们
- 从Javascript运行PHP文件来检查在线用户:表示未登录的用户是
- 有没有javascript或flash项目可以在线编辑音频
- Node.js快递网站可在线访问
- 一个在线服务,我可以查询一个随机的历史人物的名字