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