关闭浏览器窗口后是不是有可能发送 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? [复制]的主要内容,如果未能解决你的问题,请参考以下文章