是否有任何可能性如何发送一个AJAX后关闭浏览器窗口

Is there any possibility how to send an AJAX after close the browser window?

本文关键字:AJAX 一个 窗口 浏览器 可能性 任何 何发送 是否      更新时间:2023-09-26

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

我有一个在JavaScript (jQuery)中移动的浏览器游戏,如果我在每次移动后发送Ajax,这对服务器来说将是困难的。所以我想发送一个AJAX当用户关闭窗口(或书签)。它必须在所有现代浏览器中都能运行。

感谢您的回答

我建议你在某种定时器上更新服务器,这样服务器就不会太迟知道客户端处于什么状态(当客户端处于活动状态时可能每60秒),当客户端不活动时暂停服务器更新。

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

然后,您还可以为页面挂钩unload事件,然后发送最后一个ajax调用。但是,并不是在所有情况下都调用它,也不是在所有浏览器中都支持它,所以除了前面两种技术之外,还需要执行此操作。

我不认为有一个实际的方法去做…但你的问题肯定有解决办法的。

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

我们没有看到完整的场景,所以请多评估一点,这样我或其他人可以帮助。

如果可能的话. .我会添加"保存状态"或"保存"按钮。所以用户知道,如果他不点击"保存"什么也不会被"保存"。

您可以尝试window.onbeforeunload,例如:

function saveGame(e) {
     if (!e) e = window.event;
    //Ajax here
}
window.onbeforeunload = saveGame;

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

我可以这样建议:

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

我知道这些步骤很难实现,但是它们能解决你的问题。