Есть ли событие типа hashchange для строк запроса? - PullRequest
8 голосов
/ 27 ноября 2010

Я использовал хэши для передачи данных между страницами (например, установка scrollTop() и т. Д.), А также использовал событие hashChange для запуска изменений на данной странице.

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

Мне кажется, что получение / установка строки запроса было бы более логичным, но:

  1. Это?

  2. Есть ли событие, которое я могу прослушать, когда задана строка запроса?

  3. Есть ли поведения, связанные со строкой запроса, о которых я должен знать?

Ответы [ 3 ]

2 голосов
/ 27 ноября 2010
  1. Нелогично заново изобретать поведение привязки.Лучше не открывать хеш-ссылки для незначительных фрагментов (хотя современные браузеры делают scrollIntoView() для любого элемента с id, для <a name="xxx"> существует специальное поведение).Итак, здесь ответ да, аргументы страницы должны передаваться через строку запроса.
  2. Событие window.beforeunload, да, перезагрузка страницы, когда javascript:void(location.search='some') установлено установлено
  3. Сюрпризов нет, имейте внешний вид

Также при работе со строкой запроса: http://xkr.us/js/querystring

1 голос
/ 27 ноября 2010

Как говорит другой ответ, изменение строки запроса приведет к перезагрузке страницы.Что касается браузера, то вы окажетесь на совершенно новой странице.

Есть события, которые сработают, когда вы сделаете это.Событие beforeunload сработает, однако оно не будет очень полезным, поскольку оно также срабатывает, когда пользователь нажимает на ссылку или закрывает окно.

Эффективно событие, которое сработает, если вы измените строку запросабудет событием загрузки на новой странице, которую он загружает.

1 голос
/ 27 ноября 2010

Это зависит от того, что вы делаете.

Изменение строки запроса всегда вызывает перезагрузку страницы. Единственная часть URL, которую вы можете изменить без перезагрузки страницы, это # ​​-part.

В приложениях javascript загрузка страниц, как правило, не в порядке. Но это может быть возможно использовать при наличии традиционной модели запроса / ответа html-страницы.

Нет события AFAIK, поскольку оно изменит страницу.

...