Я видел что-то совсем другое, и я понятия не имею, как это сделать.
Сайт Rdio.com, когда вы нажимаете любую ссылку, полностью меняет URL (не #). Но div в нижней части страницы (которая играет песню) не перезагружается.
Как они это делают?
вы можете сделать это с помощью нагрузки ajax, а затем включить историю браузера. вот так:
/*clickhandler Hauptmenü*/
$('#main-nav a').on('click', function(e){
var href = $(this).attr('href'),
title = $(this).text();
loadContent(href,title);
/*manipulate Browser history */
history.pushState({path: href, titel: title}, $(this).attr('href'), 'http://www.example.com/'+$(this).attr('href'));
e.preventDefault();
});
window.addEventListener('popstate', function(e){
loadContent(e.state.path, e.state.titel);
}, false);
function loadContent(href,title){
var href = href,
container = $('#main-cont');
container.fadeOut(100, function(){
container.load( href +' #main-cont', function(){
container.fadeIn(200);
$('title').replaceWith('<title>' + title + '</title>');
});
});
};
Надеюсь, это ответит на ваш вопрос.
Это делается с использованием JavaScript-объекта history
, используя методы pushState
и popState
. См. Также http://diveintohtml5.info/history.html
Исправьте меня, если я ошибаюсь - учитывая, что я не был на их сайте, но я считаю, что они будут использовать iframe в некотором роде, считая, что им придется перезагрузить этот div, если они сделали иначе