Лучше перенаправить Javascript ИЛИ отправить форму?

StackOverflow https://stackoverflow.com/questions/661211

Вопрос

Я создаю навигатор полей выбора и задаюсь вопросом, лучше ли сделать перенаправление javascript или отправить форму и перенаправить оттуда.Плюсы и минусы каждого из них?

Это было полезно?

Решение

HTTP - перенаправление:

  • Плюсы:вы можете регистрировать действия пользователя.
  • Минусы:один дополнительный цикл обработки до тех пор, пока пользователь не будет эффективно перенаправлен.

Перенаправление JavaScript:

  • Плюсы:пользователь немедленно перенаправляется
  • Минусы:вы не можете регистрировать действия пользователя, если вы не используете AJAX;если у пользователя отключен JavaScript, он не будет перенаправлен.

В этом случае я склонен использовать Ненавязчивый JavaScript чтобы решить эту проблему:кодируйте так, как будто JavaScript не включен (т.е.кнопка "Перейти", которая публикует форму);затем, после загрузки страницы, Javascript скроет эту кнопку, добавит функциональность изменения в поле выбора и отправит AJAX-запрос для регистрации действия.

Таким образом, вы получаете лучшее из двух миров :)

Другие советы

Если вы имеете в виду что-то вроде навигации путем выбора элемента списка, вы могли бы сделать и то, и другое:

  • Настройте форму с помощью GET, которая указывает непосредственно на целевую страницу.
  • Если поддерживается js, при выборе значения вызывайте команду "отправить".Если js не поддерживается, должна отображаться кнопка выбора / перейти / открыть, позволяющая пользователю продолжать работать с приложением

Примечание: Описанный выше подход ведет непосредственно к целевой странице.Это отличается от отправки перенаправления с сервера, которое влечет за собой дополнительный запрос, подлежащий обработке, добавляет дополнительную задержку в операции и больше запросов, подлежащих обработке сервером.Это сценарий навигации, для этого нет необходимости переходить на сторону сервера (по крайней мере, без дополнительных специфических требований).

Будьте осторожны, делая что-то подобное:

<select id="test" onchange="doAction();">
  <option value='http://...'>...</option>
  <option value='http://...'>...</option>
  <option value='http://...'>...</option>
  <option value='http://...'>...</option>
</select>

<script type="text/javascript">
function doACtion() {
    window.location = document.getElementById('test');
}
</script>

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top