Обратитесь к ответу Марка Бриттингем для как стиль его, хотя я не думаю, что это то, что вы спрашиваете здесь. Я дам вам технические подробности о том, как она работает (и почему это довольно блестящий).
Посмотрите на строку состояния при наведении на ссылку профиля в заголовке ...
http://www.facebook.com/profile.php?id=514287820&ref=profile
То есть, где что <a> тег указывает на. Теперь посмотрите на адресную строку при нажатии на нее ...
http://www.facebook.com/home.php#/profile.php?id=514287820&ref=profile
Обратите внимание на «#» идентификатор фрагмента / хэш ? В основном это доказывает , что вы не оставили страницы и предыдущий запрос был сделан с помощью AJAX. Они перехватывая событие щелчка по этим ссылкам, а переопределение функции по умолчанию с чем - то своим.
Для того, чтобы это произошло с Javascript, все, что вам нужно сделать, это назначить обработчик события клика эти ссылки, как так ...
var header = document.getElementById('header');
var headerLinks = header.getElementsByTagName('a');
for(var i = 0, l = headerLinks.length; i < l; i++) {
headerLinks[i].onclick = function() {
var href = this.href;
//Load the AJAX page (this is a whole other topic)
loadPage(href);
//Update the address bar to make it look like you were redirected
location.hash = '#' + href;
//Unfocus the link to make it look like you were redirected
this.blur();
//Prevent the natural HTTP redirect
return false;
}
}
Одним сказочного преимущество такого подхода заключается в том, что она позволяет кнопку назад, чтобы быть функциональной (с небольшим добавленным обманом), который традиционно является болезненным побочным эффектом хронического использования AJAX. Я не 100% уверен, что это обман, но я держал пари, что это каким-то образом удалось обнаружить, когда браузер изменяет идентификатор фрагмента (возможно, проверив ее каждые ~ 500 миллисекунд).
В качестве побочного сведению, изменение хэш на значение , которое не может быть найден в DOM (через элемент ID) будет прокрутить страницу на всем пути к вершине. Для того, чтобы увидеть , что я говорю: вы прокрутите вниз примерно на 10 пикселей от верхней части Facebook, выставляя половину верхнего меню. Нажмите на один из пунктов, он будет прыгать его обратно до верхней части страницы , как только идентификатор фрагмента обновляется (без любого окна перекрашивать / перерисовывать задержки).