Лучше перенаправить Javascript ИЛИ отправить форму?
-
20-08-2019 - |
Вопрос
Я создаю навигатор полей выбора и задаюсь вопросом, лучше ли сделать перенаправление 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, пытающиеся перейти к выбору с помощью своей клавиатуры, непреднамеренно запустят действие.Это особенно проблематично для пользователей с ограниченными возможностями, поскольку, если вы попытаетесь перенаправить их, они просто не смогут получить доступ ни к чему, кроме первого варианта.