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

时间:2011-07-29 06:24:19

标签: javascript jquery

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

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

感谢您的回答

5 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:1)

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

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

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

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

答案 2 :(得分:1)

您可以尝试window.onbeforeunload例如:

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

    //Ajax here
}
window.onbeforeunload = saveGame;

答案 3 :(得分:0)

我可以建议:

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

答案 4 :(得分:0)

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