HTML: загрузка страницы «Пожалуйста, подождите» с перенаправлением, кросс-браузер, совместимость со стандартами - PullRequest
2 голосов
/ 23 июня 2010

У меня общая проблема с реализацией страницы «Пожалуйста, подождите, обработка вашего запроса» в HTML, чтобы показать ее пользователю во время обработки долго выполняющейся задачи. В частности, я создаю заказ и выставляю счет кредитной картой.

В настоящее время я сначала загружаю PleaseWait.html, показывающий сообщение и спиннер, который сразу же перенаправляет в Process.html, который выполняет обработку. После завершения Process.html он перенаправляется в Complete.html.

Я пытаюсь сделать это полностью через браузер и следую всем рекомендациям. Это означает, что следует избегать следующих методов:

  • Перенаправление Javascript, так как пользователь мог отключить сценарии
  • META Refresh, так как это не рекомендуется / не рекомендуется, и я думаю, что некоторые браузеры также позволяют пользователю отключить его
  • Отправка ответа HTTP 301, так как это приводит к тому, что браузер (по крайней мере, IE) вообще не отображает страницу «Пожалуйста, подождите»
  • использование скрытого iframe для хранения Process.html, так как я снова считаю, что для этого потребуется JavaScript, чтобы определить, когда обработка завершена

Итак, мой вопрос ... как, черт возьми, мне это сделать?

Бонусные баллы (ну, по крайней мере, слава), если решение позволяет моему анимированному GIF-файлу продолжать анимацию на протяжении всей стадии обработки. Я упоминаю об этом, потому что кажется, что в IE, когда PleaseWait.html перенаправляет Process.html, все анимации останавливаются, что означает, что мой спиннер в данный момент вращается только около полсекунды или около того, а затем останавливается, пока загружается страница Process.html. его вещь.

Ответы [ 2 ]

1 голос
/ 23 июня 2010

Я бы использовал мета-обновление - я не уверен, почему он считается устаревшим - это часть рабочего проекта HTML5 - похоже, он здесь, чтобы остаться:

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

Конечно, вы можете предоставить пользователям ссылку для перезагрузки страницы в случае, если META REFRESH не сработает. На всякий случай отправьте электронное письмо со ссылкой для повторного ввода платежной информации в случае сбоя транзакции.

0 голосов
/ 23 июня 2010

Это довольно суровый набор ограничений!Без JS я вполне уверен, что вы вернулись в мир, где действия должны быть предварительно выполнены пользователем :( В этом мире ... вы могли бы просто иметь ссылку «проверить и проверить, выполнен ли ваш заказ» дляпользователь нажимает на кнопку.

Я думаю, что большинство будет утверждать, что можно с уверенностью предположить, что «базовый» javascript должен быть «разрешен» в большинстве сценариев.Если вы можете использовать эти основные команды, вы можете перезагружать страницу каждые 5 секунд или около того. Попросите страницу нажать «isUserDone.php», которая перенаправит браузер, если он вернется на страницу «обработки» или «complete 'page. Вы можете использовать функцию заголовка в PHP header('Location: complete.html'), чтобы скрипт велел браузеру пользователя перейти на другую (или ту же) страницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...