Прежде всего, я предполагаю, что вы знаете, как pushState()
и onpopstate
оба работают.
Вы можете использовать его, запрашивая целую страницу, извлекая частьи заменить соответствующую часть отображаемой в данный момент страницы.Таким образом, вы можете сделать плавный переход с изменением URL, но без перезагрузки страницы.
Как загрузить часть страницы?Предположим, что на каждой странице есть такая структура HTML:
<div id="contentContainer">
<div id="content">
...
</div>
</div>
Если вы затем сделаете правильный запрос, используя уравнение.jQuery .load()
, тогда это может выглядеть так:
$('#contentContainer').load('index.php #content', function(){
// some fancy animation here
});
Что это делает?Он загружает часть страницы index.php
(фактически часть с id="content"
) в загруженную в данный момент страницу (фактически часть с id="contentContainer"
), фактически изменяя только часть #contentContainer
, так как она будет загружена при перезагрузке страницы.
Если вы дополнительно измените URL с помощью pushState
, вы достигнете эффекта, так как страница будет перезагружена.Используя событие onpopstate
, вы можете разрешить переход назад и вперед по динамически генерируемым страницам.
Достаточно ли ясно?
Используя эту функцию, вы также можете добиться поведения, подобного Flash.(плавные переходы).