我是JavaScript和php的新手,所以我有一个问题,是否有办法在浏览器的网站上检测同一会话的多个标签或窗口。 在我正在制作的网站上,当用户登录时,布尔(0-1)变量存储在数据库中的用户表中,该变量显示该用户是否已登录。在某人登录并关闭标签或浏览器窗口后,数据库再次更新它更改显示用户是否登录的变量。我这样做的方法是只调用脚本
$(window).bind("beforeunload",function(){
$.ajax({
url: "logout.php",
async: false
});
})
如果用户关闭窗口或选项卡,logout.php将更新数据库。我的问题是,如果有人在同一网站的同一会话中打开多个选项卡,并且只关闭其中一个会话将保留,而数据库将更新该用户不再被记录。
编辑:我不想退出所有打开的标签,我只是不想保留用户仍在线的数据库,直到他关闭所有会话的标签窗口或点击退出按钮。
答案 0 :(得分:6)
这是来自之前的堆栈溢出帖子:
if (+Cookies.get('tabs') > 0)
alert('Already open!');
else
Cookies.set('tabs', 0);
Cookies.set('tabs', +Cookies.get('tabs') + 1);
window.onunload = function () {
Cookies.set('tabs', +Cookies.get('tabs') - 1);
};
URL: How to know if browser tab is already open using Javascript?
这应该对你有用!
*这不是我的代码,只是传递信息!