关闭浏览器窗口后是不是有可能发送 AJAX? [复制]

Posted

技术标签:

【中文标题】关闭浏览器窗口后是不是有可能发送 AJAX? [复制]【英文标题】:Is there any possibility how to send an AJAX after close the browser window? [duplicate]关闭浏览器窗口后是否有可能发送 AJAX? [复制] 【发布时间】:2011-10-15 17:05:12 【问题描述】:

关闭浏览器窗口后是否有可能发送AJAX?

我有一个在 javascript (jQuery) 中移动的浏览器游戏,如果我在每次移动后发送 Ajax,那么服务器会很困难。所以我想在用户关闭窗口(或书签)时发送一个 AJAX。 它必须在所有现代浏览器中都可以使用。

感谢您的回答

【问题讨论】:

【参考方案1】:

你可以试试window.onbeforeunload 例如:

function saveGame(e) 
     if (!e) e = window.event;

    //Ajax here

window.onbeforeunload = saveGame;

【讨论】:

这适用于所有现代浏览器?因为 window.onunload 没有。 据了解,是的。我将其用于小部件订购系统,以在关闭选项卡/窗口之前发出警报。没有跨浏览器问题。请参阅此链接:***.com/questions/158673/…【参考方案2】:

我可以建议:

    调用window.onunload(注意firefox!)并将当前位置存储在服务器中。重要:进行此异步调用。 在服务器中保存用户的状态(离开页面) 在全局请求事件处理程序中编写代码并查询此状态。 您可以在服务器中启动线程来调用最终卸载(比如 5 秒后),客户端没有新请求

我知道这些步骤很难实施,但它们解决了您的问题并解决了它。

【讨论】:

【参考方案3】:

关闭浏览器窗口后,您无法发送任何 ajax 请求。但是当用户单击窗口的关闭按钮时,您可以使用 onUnload 事件发送 ajax 请求。

【讨论】:

【参考方案4】:

我建议您在某种计时器上更新服务器,这样服务器就永远不会太落后于知道客户端处于什么状态(客户端处于活动状态时可能每 60 秒一次),当客户端暂停服务器更新时未激活。

然后,在您的用户界面中,为关闭或停止放置一些明显的用户界面元素,以鼓励用户以这种方式关闭,然后在点击其中任何一个按钮时更新服务器。

然后,您还可以为页面挂钩unload 事件,然后发送最后一个ajax 调用。但是,这并不是在所有情况下都调用或在所有浏览器中都支持,因此除了前面的两种技术之外,还可以这样做。

【讨论】:

好的。谢谢你。我将每 60 秒保存一次游戏(例如),然后添加一个按钮来保存游戏。在一些重要的事件(如战斗)上,我会在此刻发送 AJAX。【参考方案5】:

我认为没有实用的方法来做到这一点...但肯定有解决您问题的方法。

您可以在某个时间间隔或游戏到达特定阶段时发送您的请求。

我们没有看到完整的场景,所以请进行更多评估,以便我或其他人可以提供帮助。

如果可能的话.. 我会添加一个“保存状态”或只是“保存”按钮。所以用户知道,如果他不点击“保存”,则不会“保存”任何内容。

【讨论】:

以上是关于关闭浏览器窗口后是不是有可能发送 AJAX? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

打印对话框关闭后自动关闭窗口

Ajax 请求是不是保证发送 cookie?

ClientScript 不适用于 AJAX UpdateProgress

浏览器关闭后,Session会话结束了么?

记录 -- js浏览器窗口关闭调用ajax

网页关闭后js脚本是不是还能继续执行?