Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Safari中使用Javascript检查internet连接时出现奇怪的响应_Javascript_Php_Html_Google Chrome_Safari - Fatal编程技术网

在Safari中使用Javascript检查internet连接时出现奇怪的响应

在Safari中使用Javascript检查internet连接时出现奇怪的响应,javascript,php,html,google-chrome,safari,Javascript,Php,Html,Google Chrome,Safari,每当用户的互联网连接丢失时,我会尝试在我的网页上显示某个div 为此,我使用一些Javascript调用一个php文件,该文件回显“1”。如果收到回音,则连接处于活动状态,Javascript会在控制台中打印“已连接” 如果没有收到回音,Javascript会在控制台中打印“disconnected”,并显示div(该div包含一条消息,让用户知道他们已经失去了连接)。div占据了整个页面,因此它有效地冻结了页面,阻止了用户与之交互,这正是我想要的。这是我正在使用的Javascript代码: v

每当用户的互联网连接丢失时,我会尝试在我的网页上显示某个div

为此,我使用一些Javascript调用一个php文件,该文件回显“1”。如果收到回音,则连接处于活动状态,Javascript会在控制台中打印“已连接”

如果没有收到回音,Javascript会在控制台中打印“disconnected”,并显示div(该div包含一条消息,让用户知道他们已经失去了连接)。div占据了整个页面,因此它有效地冻结了页面,阻止了用户与之交互,这正是我想要的。这是我正在使用的Javascript代码:

var checkConnection = function checkConnection() {
    $.ajax({
        url: 'php_scripts/checkconnection.php',
        type: "POST",
        cache: false,
        success: function() {

            document.getElementById('openOfflineDIV').style.display = 'none';
            console.log("connected"); },

            error: function() {

            document.getElementById('openOfflineDIV').style.display = 'block';
            console.log("disconnected"); }

    }).complete(function() {
        setTimeout(checkConnection, 2000);
    });
}
这是php文件“checkconnection.php”:


如您所见,我将此函数设置为每2秒运行一次

我遇到的问题是:该功能在Chrome、Firefox、IE和Opera上运行得非常好,但在Safari上测试时,它会反复显示断开连接的div。我已经在多个设备(笔记本电脑、android手机等)上测试过它,效果很好,但当我使用Safari在Ipad和Mac上测试时,断开的div大约每10秒出现一次,它保持断开状态大约5秒,然后div消失/重新建立连接,但大约10秒后div重新出现,这种情况持续不断。我不知道是什么原因造成的,但这似乎是Safari浏览器特有的问题

有人知道这是什么原因吗?我尝试将函数的重复时间从2秒延长到5秒,这似乎降低了出现断开div的频率,但它仍然经常出现

有没有更好的方法来检查实时互联网连接?我不想再延长时间,因为理想情况下,连接检查将每秒运行一次

我真的很感激关于如何解决这个问题的建议。
在此提前感谢您的帮助。

checkConnection可能会被解雇几次,您的一些请求可能会失败

有几个库可以检查用户是否在线并显示/隐藏适当的消息。这是其中之一:


为什么不只回显
http\u response\u代码(200),而不回显1?这将在同一客户端工作,但您不必向客户端回显任何内容<代码>
<?php echo '1'; ?>