Лучше Javascript перенаправить или отправить форму? - PullRequest
1 голос
/ 19 марта 2009

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

Ответы [ 3 ]

2 голосов
/ 19 марта 2009

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

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

Переадресация JavaScript:

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

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

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

2 голосов
/ 19 марта 2009

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

  • Форма имеет GET, который указывает непосредственно на целевую страницу.
  • Если поддерживается js, вызывайте «submit» при выборе значения. Если js не поддерживается, должна появиться кнопка выбора / перехода / открытия, позволяющая пользователю по-прежнему работать с приложением

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

1 голос
/ 19 марта 2009

Будьте осторожны, когда делаете что-то вроде этого:

<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, пытающиеся перемещаться по селекту с помощью клавиатуры, будут непреднамеренно запускать действие. Это особенно проблематично для пользователей с ограниченными возможностями, так как если вы пытаетесь перенаправить их, они просто не смогут получить доступ к чему-либо, кроме первого варианта.

...