Открыть новое окно при обратной передаче - PullRequest
5 голосов
/ 15 октября 2010

Требования: У нас есть форма для отправки пользователями.При отправке данные формы используются для расчетов и генерации отчетов.

При обратной передаче отображается сообщение о подтверждении и дополнительные параметры.Мы хотим отобразить отчет в новом окне / вкладке.

Условия: Мы не хотим использовать JavaScript при обратной передаче, чтобы открыть новое окно onload, так как это остановит пользователей, у которых естьJavaScript отключен.

Возможные решения:

  1. При нажатии кнопки открывается новое окно с уникальным идентификатором (для выполнения кода допускается обратная передача).Новое окно должно запросить отчет, но код ждет, пока отчет не будет сгенерирован.На странице отчета покажите сообщение ожидания, которое истекает и позволяет пользователю обновить или использовать обновление страницы в мета-формате.
  2. Используйте JavaScript, но определяйте, включен ли JS при обратной передаче (путем установки значения переменной с помощью JS при загрузке формы), если JS отключен, показать ссылку на пользователя для отчета, иначе откройте окно, используя JS при загрузке страницы после обратной передачи.

Вопросы:

  1. Есть ли лучший способ сделать это?
  2. Какие-нибудь советы по улучшению вышеуказанных решений?
  3. Какой из них вы предпочтете и почему?

Ответы [ 2 ]

3 голосов
/ 15 октября 2010

Сделать ссылку с target=_blank, которая перенаправляет на страницу, которая генерирует отчет, а затем показывает его.

Пользователям IMO, которые хотят получить доступ к вашему сайту, будет включен JavaScript. Сеть без javascript - это не сеть, возможно, это было несколько лет назад, но сейчас ...

Если вы хотите проверить js, вы можете зарегистрировать скрипт после обратной передачи:

// normal postback
ScriptManager.RegisterStartupScript(this, GetType(), "key", "script();", true);

// postback from a updatepanel
ScriptManager.RegisterStartupScript(updatePanel, updatePanel.GetType(), "key", "script();", true);
1 голос
/ 15 октября 2010

Проверьте, включен ли js , и включен ли js, используйте ClientScript.RegisterStartupScript(this.GetType(), "yourScript", script, true);, чтобы выполнить js и открыть страницу отчета. Если js id не включен, показать ссылку на страницу отчета.

...