2011-07-27 128 views
0

当窗口关闭或地址转到完全不同的站点时,有没有办法调用javascript,而不仅仅是当页面更改时?我知道我可以使用onunload,但似乎在页面更改时触发。窗口关闭时的JavaScript?

我有一个内部网站,我需要跟踪登录和登出。而不是用户总是点击“注销”,其中一些只是关闭浏览器窗口。

+1

我同意这有时令人讨厌,但事实就是这样。从脚本引擎的角度来看,导航到另一个页面并关闭当前窗口/选项卡(以某种方式导航到“null”)没有区别。 –

回答

0

onunload事件。

+0

虽然这可能在理论上回答这个问题,[这将是更可取的](http://meta.stackexchange.com/q/8259)在这里包括答案的基本部分,并提供链接供参考。 –

+0

我不明白为什么会将包含与问题解决方案的直接链接的简要,简明和有针对性的答案视为违反准则。我没有留下20K行文本的链接,需要在查找解决方案之前阅读。相反,我在一个众所周知的学习网站上留下了一个段落文本的链接,这个网站又一次解决了这个问题。我不属于那些在需要解释某些事情时会谨慎使用词语的人,但我不喜欢冗余和懒惰。 – brezanac

+1

我试过使用onunload,但即使在页面更改时,它也会运行任何脚本,而不仅仅是当浏览器窗口关闭时。 – Soren

1

我有个主意。每隔30秒左右将一个AJAX调用发送到某个“保持活动”当前用户会话的页面。在一段时间不活动(可能是40秒?确保它大于30)后,服务器知道客户端已变为非活动状态并可以将您注销。这可能看起来像是矫枉过正,但它是唯一能够可靠地知道用户何时不再处于活动状态的方法。当窗口关闭时发出呼叫可能看起来很不错,但如果浏览器崩溃或计算机关闭或某些事情发生,则无论如何都不会发送呼叫。

0

现在,除非有人能够提出一个更好的主意,否则我的网站会以100%的框架运行,并且使用框架布局在默认页面上设置onunload脚本。

0
window.onbeforeunload = function(){ 
    $.ajax({ url : logoutuser?id=xyz, 
      async : false 
    }); 
}; 

这将如果试图关闭窗口时,工作..

的另一种方式是将所有点击次数(用于链接)网页上通过自己的自定义方法 -

window.location.href = "someurl"; 

这样,你可以嗅到用户试图导航到哪里..