HTML:“请等待”加载页面,重定向,跨浏览器,符合标准

时间:2010-06-23 03:07:43

标签: html redirect

我遇到了一个常见问题,即在处理长时间运行的任务时,在HTML中实现“请等待,处理您的请求”页面以向用户显示。具体来说,我正在创建订单并为信用卡付款。

目前我首先加载PleaseWait.html,显示一条消息和一个微调器,它会立即重定向到Process.html,它会进行处理。 Process.html完成后,会重定向到Complete.html。

我试图完全跨浏览器并遵循所有建议。这意味着应该避免以下技术:

  • Javascript重定向,因为用户可以禁用脚本
  • META Refresh,因为不鼓励/弃用,我认为某些浏览器也允许用户禁用它
  • 发送HTTP 301响应,因为这会导致浏览器(至少IE)无法呈现Please Wait页面
  • 使用隐藏的iframe来保存Process.html,我相信这将需要javascript来检测处理何时完成

所以我的问题是......我到底该怎么做到这一点?

如果解决方案使我的动画GIF能够在整个处理阶段继续制作动画,那么

奖励积分(至少是荣誉)。我提到这一点是因为在IE中,当PleaseWait.html重定向Process.html时,所有动画都停止了,这意味着我的微调器当前只旋转半秒左右,然后在Process.html加载页面时停止它的东西。

2 个答案:

答案 0 :(得分:1)

我会使用元刷新 - 我不确定为什么它被认为已被弃用 - 这是HTML5工作草案的一部分 - 它看起来像是留在这里:

http://www.whatwg.org/specs/web-apps/current-work/multipage/semantics.html#attr-meta-http-equiv-refresh

当然,您可以提供一个链接供用户点击重新加载页面,以防META REFRESH无法触发。为了安全起见,请发送一封电子邮件,其中包含在交易失败时重新输入付款信息的链接。

答案 1 :(得分:0)

这是一套非常苛刻的约束!没有JS,我相当肯定你回到了需要用户执行操作的世界:(在那个世界......你可能只是'检查一下,看看你的订单是否完成'链接用户点击。

我认为大多数人会认为在大多数情况下假设'基本'javascript应该被'允许'是安全的。基本上我指的是setTimeout()window.location之类的内容。如果您可以使用这些基本命令,则可以每隔5s左右重新加载页面。让页面点击“isUserDone.php”,如果它应该返回“处理”页面或“完整”页面,它将重定向浏览器。您可以使用PHP header('Location: complete.html')中的标头功能让脚本告诉用户的浏览器转到另一个(或相同的)页面。