【问题标题】:JQuery - perform task on browser close eventJQuery - 在浏览器关闭事件上执行任务
【发布时间】:2012-06-28 10:43:38
【问题描述】:

很简单的问题。当用户关闭浏览器时,我需要执行一项任务。 我知道以下功能:

$(window).bind("beforeunload", function() { 返回假; }) $(窗口).unload(函数() { 返回假; })

但是这两个 - 提出一个询问用户的警报 - “留在这个页面上” - “离开这个页面”(至少在 Chrome 上)。

我不希望这种情况发生。我只想在他关闭时执行一项任务,例如更新数据库上的时间,了解他何时离开。

任何想法 谢谢

【问题讨论】:

  • 它很不便携。不同的浏览器会为不同的事情触发“卸载”事件(当您导航时,当您关闭窗口时或其他时)。甚至“beforeunload”事件也不是那么可靠(=您必须测试浏览器/版本的许多组合)。如果您不返回任何内容,则不应显示对话框,则返回值可用于提示用户(例如,当您在编辑答案时导航离开时,此处在 SO 上)。做你的事情(可能使用异步 ajax 调用,仅此而已,只要考虑它也可能会被触发以进行刷新)。
  • 是的,我明白你的意思 - 谢谢

标签: javascript jquery


【解决方案1】:

这是不可能跨浏览器正确完成的,因为 Opera 实际上并不支持它:\ 如此处所述:cross-browser Onunload and Onbeforeunload ? (particularly opera 11) 和许多其他有据可查的地方。

正如其他人提到的那样,有不同程度的实现,例如 Firefox,您可以将自己的消息添加到显示在 beforeunload 上的警报框中,但在 Chrome 中您不能,它只会显示一些并不真正的通用消息很有道理。

【讨论】:

    【解决方案2】:

    您可以定期保存用户状态(使用 ajax)或只记录对服务器的最后一个请求(在后端)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-04
      • 1970-01-01
      • 2019-05-19
      • 2018-11-10
      相关资源
      最近更新 更多