我目前正在使用您典型的日常网络编程语言(JavaScript,PHP等)开发聊天。聊天目前功能齐全。但是,我还有几个问题尚未成功解决。其中一个是跨浏览器问题。
我正在尝试在用户关闭标签时运行AJAX请求。此请求的PHP看起来像这样:
date_default_timezone_set("America/New_York");
session_start();
unset($_SESSION["onpage"]);
if ($_POST['logout'] == "false") {
sleep(5);
if (isset($_SESSION["onpage"]) || !empty($_SESSION["onpage"])) die();
}
...
...
AJAX正在:
$.ajax({ // this is jQuery
type: "POST",
url: "offline.php",
data: {
logout: out ? 'true' : 'false'
},
success: function (data) {
document.location.reload();
}
});
基本上,当用户关闭标签时(在这种情况下$_POST['logout']
将等于false
),请求应该在5秒后完成({{1} }) 完成了。这是因为我不想在用户只是刷新页面时才会触发此请求,只有在确认他离开页面时才会被触发。
这是跨浏览器问题的来源。我想要实现的功能在Safari中完美运行。这是在刷新时,请求没有完成,但如果我关闭选项卡,5秒后它会执行它想要做的事情并完成。但是,在我点击刷新时的chrome上,刷新本身不会完成,直到5秒结束已经结束,这意味着请求完成,无论如何。 Chrome正在等待AJAX完成,而Safari则没有。
有没有简单的解决这个问题?
修改
我在评论中的建议中尝试了以下代码:
sleep(5)
然而,它没有成功运作。