防止在刷新时调用onbeforeunload()

时间:2011-10-14 07:55:57

标签: php javascript ajax javascript-events

我有一个网页,当用户关闭标签页或浏览器时,我正在销毁会话。这是我的剧本

window.onbeforeunload = function() { 
document.write("<?php session_destroy();
?>");
 }

我的问题是我只想在浏览器关闭时销毁会话。我应该使用哪个活动?这是否适用于所有浏览器。?请帮忙。

1 个答案:

答案 0 :(得分:0)

默认情况下浏览器关闭时会破坏会话。这实际上是由PHP配置选项session.cookie_lifetime控制的。 From the PHP manual

  

session.cookie_lifetime指定发送到浏览器的cookie的生命周期(以秒为单位)。值0表示“直到浏览器关闭”。默认为0。

当您尝试做什么时,在浏览器关闭时明确销毁服务器端的会话数据,无法完成。没有办法告诉(至少从Javascript)是否正在重新加载页面或浏览器正在关闭 - 这两个事件都以同样的方式触发onunload()onbeforeunload()

关于这一点的另一点是,它将涉及在浏览器关闭时向服务器发送请求,这是不太可能被允许且无法依赖 - 毕竟,如果服务器无法响应怎么办?这可能会导致浏览器等待响应,这会破坏用户体验,浏览器开发人员永远不会允许它。