Если вы хотите, чтобы он работал в браузерах, которые еще не поддерживают history.pushState
и history.popState
, «старый» способ - установить идентификатор фрагмента, что не приведет к перезагрузке страницы.
Основная идея состоит в том, чтобы установить для свойства window.location.hash
значение, которое содержит любую необходимую информацию о состоянии, затем либо использовать событие window.onhashchange , либо для более старых браузеров, которые не поддерживают onhashchange
(IE <8, Firefox <3.6), периодически проверяйте, изменился ли хэш (например, с использованием <code>setInterval), и обновляйте страницу. Вам также необходимо проверить значение хеш-значения при загрузке страницы, чтобы настроить исходное содержимое.
Если вы используете jQuery, есть плагин hashchange , который будет использовать любой метод, поддерживаемый браузером. Я уверен, что есть плагины и для других библиотек.
Одна вещь, о которой следует быть осторожным, это столкновение с идентификаторами на странице, потому что браузер будет прокручивать к любому элементу с совпадающим идентификатором.