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

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

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

谢谢你的回答

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

然后,在您的用户界面中,为Close或Stop添加一些明显的用户界面元素,鼓励用户以这种方式关闭,然后在命中这些按钮时更新服务器。

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

我认为没有一种实用的方法可以做到……但是你的问题肯定有解决方案。

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

我们没有看到完整的情况,所以请多评估一下,以便我或其他人可以提供帮助。

如果可能..我会添加一个“保存状态”或只是“保存”按钮。 因此,用户知道如果他没有点击“保存”,则不会“保存”。

你可以试试window.onbeforeunload例如:

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

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

我可以建议一下:

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

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