2011-11-10 77 views
1

在谈到这个问题:如何在页面加载时花费很长时间来娱乐用户?

Chrome doesn't seem to fire javascript xmlhttprequests after a form submit, but FF and IE do

我需要一种方法来更新后我打提交等待服务器的响应(响应可以采取分钟10秒)的信息从服务器(页如完成百分比)

在IE和Firefox中,我可以在等待页面加载时发出xhr请求。在Chrome中这不起作用,Chrome不会触发xhr请求。我从来没有受到网络服务器的冲击。

其他人都这样做?

+2

给他们唱一首歌。 –

+1

一个小游戏,如井字棋或跳棋。 – Derek

+0

您可以在其他浏览器中使用您用来娱乐用户的功能,如果检测到您的函数“statstatechange”未被调用,则在X秒后向用户提供反馈,例如“请稍候,这可能需要几分钟时间“或您用于娱乐的其他类型的反馈。 –

回答

2

永远不要让您的用户为单页提交而坐下10几分钟。他们会恨你,你的服务器会恨你,并且会出现各种各样的问题。相反:

  1. 提交请求,并将其放入队列中。
  2. 返回对用户的响应,表明请求已排队。
  3. 在处理队列时更新用户。要么实时使用彗星解决方案,要么每隔2-3分钟轮询一次,如果时间不敏感的话。
+0

呃。这与我现在所做的有什么不同?用户点击按钮,JavaScript更新屏幕的一部分,说“处理报告”。然后每15秒发出一次xhr请求,以当前完成报告处理的百分比更新页面的这一部分。然后,完成后,服务器返回包含报告的页面,并显示新的报告页面。它一直在工作多年。我只是最近才注意到xhr调用不适用于chrome。 – stu

+0

使用iframe提到的彗星维基百科页面。现在这是一个有用的建议。我要去尝试一下。 – stu

+0

非常不同 - 你有2个请求处理:)。将其卸载到队列中。如果请求在进程中途中止,用户离开页面等,会发生什么情况? – jvenema

0

我在为用户开发的一个非常简单的排队系统上收到非同寻常的反馈,这些排队系统等待他们长时间运行的流程完成。

当你有一些有趣的东西阅读的时候,时间过得更快,所以我从不同的新闻网站拉入rss feeds(以ajaxy的方式),而web app在后台轮询队列以完成进程。当投票完成后,我只需弹出一个js确认框,询问用户是否想要保持新闻窗口打开或返回到其常规工作流程。

自推出此解决方案以来,关于处理时间的投诉几乎消失。我并不是说它适合所有情况,但它对我来说确实有效。

相关问题