Смена URL без перезагрузки страницы?

Здравствуйте.

Обнаружил, что во время листания фотографий вКонтакте стрелками, меняется URL в адресной строке. При этом страница не перезагружается. Firebug показывает что тянется только фото и все. Работает только в последних Chrome и Firefox. В остальных браузерах ссылка получается с хэшэм (#).

location.hash понятно что можно менять без перезагрузки страницы, но как реализована полная смена URL в данном случае? Ведь location.href не позволяет менять URL без перезагрузки.
  • Вопрос задан
  • 100602 просмотра
Пригласить эксперта
Ответы на вопрос 8
siegerstein
@siegerstein
history.pushState(null, null, '/anypath');
Ответ написан
Комментировать
sajgak
@sajgak
var setLoc = function(loc) {
//curLoc = fixEncode(loc.replace(/#(\/|!)?/, ''));
curLoc = fixEncode(loc);
var l = (location.toString().match(/#(.*)/) || {})[1] || '';
if (!l && vk.al > 1) {
l = (location.pathname || '') + (location.search || '');
}
l = fixEncode(l);
if (l.replace(/^(\/|!)/, '') != curLoc) {
if (vk.al == 3) {
try {
history.pushState({}, '', '/' + curLoc);
return;
} catch(e) {}
}
window.chHashFlag = true;
location.hash = '#' + vk.navPrefix + curLoc;
if (withFrame && getLoc() != curLoc) {
setFrameContent(curLoc);
}
}
}

Выдернуто fireBug-ом из VK. так что вы ен ошиблись)
Ответ написан
Комментировать
MastaEx
@MastaEx
Да, в Хроме тоже работает.
Вот, нагуглил: www.w3.org/TR/html5/author/history.html#session-history-entry
Ответ написан
@devote
habrahabr.ru/post/144071/ — polyfill для старых браузеров
Ответ написан
Комментировать
Melanitsky
@Melanitsky
почему нельзя, можно:
window.location.href=/qa/6436/#photo"
если в урле есть # и сам урл совадает — перезагрузки не будет
Ответ написан
AlexAdmiral
@AlexAdmiral
pjax, как неплохая альтернатива.
Ответ написан
Комментировать
Возможно такой вариант подойдет
diveintohtml5.info/examples/history/gallery/casey.html
тут подробнее htmlbook.ru/html5/history
Ответ написан
Комментировать
@EmirMamashov
Web-developer
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы