如何处理重装&关闭按钮不同?

时间:2014-10-24 08:04:08

标签: javascript jquery html

我想在用户离开页面之前设置一些逻辑,但我想处理重新加载按钮&关闭按钮动作不同。 我所知道的是,在用户卸载页面之前会调用 onbeforeunload 事件,但它无法解决我的用例。

我想创建一些统计/跟踪器,如下所示:

$(window).beforeunload(function() {
    if (user click browser's close button)
        // track_user_click_close_button()
    else if (user click browser's reload button)
        // track_user_click_reload_button()

});

2 个答案:

答案 0 :(得分:1)

您无法知道用户将导航到的网址。这不是jquery / js问题。 底线是 - 你不能做你想做的事。

更新

但如果你有时尝试,你可能会发现 - 你得到了你需要的东西。

正如本SO answer中提到的类似问题,可以做些什么来克服这种无能。我强烈建议你阅读所描述的方法。

如果它不符合您的需求,请打开一个新的SO问题,详细解释您正在尝试做什么,我们会尽力帮助您

另一次更新

不幸的是,没有办法确定这个开箱即用的方法。您可以尝试以下方法:

$(window).beforeunload(function() {
    // should be a synchronous AJAX-call, as async one won't work
    persistLeaveOnServer();
});

$.ready(function() {
    tellServerWeAreBack();
});

在服务器端,您应该根据它维护会话状态。一旦经过了一定的时间(可能是几秒钟),您认为会话已结束并将统计信息保留为UserClickClose。如果在此时间过去之前收到tellServerWeAreBack请求,则会保存UserClickRefresh统计值。

答案 1 :(得分:0)

每当用户离开页面时,

beforeunload都会触发。如果要在刷新和关闭之间进行区分,则必须能够检测页面重新加载。

您可以在xx:xx时间保留一条告诉页面正在卸载的信息。将事实记录到某个地方。加载页面时,检查是否有一些记录证明该页面最近已退出(取决于您最近的定义)并将事件转换为刷新事件:(有关示例,请参阅here

这可能无法区分刷新和用户关闭然后快速重新打开页面(在您的时间阈值下)。

注意:链接页面提到使用隐藏的表单元素,这些元素在刷新之间保持不变,但是表示浏览器支持遍布整个地方;我想知道是否仍然如此。存储信息in the window object将在刷新后继续存在,因此您可能希望探索此途径