Обратитесь к ответу Марка Бриттингема о том, как его стилизовать, хотя я не думаю, что это то, что вы спрашиваете здесь. Я дам вам технические подробности о том, как это работает (и почему это довольно блестяще).
Посмотрите на строку состояния при наведении курсора на ссылку "Профиль" в заголовке ...
http://www.facebook.com/profile.php?id=514287820&ref=profile
Вот где указан тег . Теперь посмотрите на адресную строку, когда вы щелкнете по ней ...
http://www.facebook.com/home.php#/profile.php?id=514287820&ref=profile
Обратите внимание на "#" идентификатор фрагмента / хэш ? Это в основном доказывает, что вы не покинули страницу, и предыдущий запрос был сделан с AJAX. Они перехватывают события щелчка по этим ссылкам и заменяют функциональность по умолчанию чем-то своим.
Чтобы это произошло с Javascript, все, что вам нужно сделать, это назначить обработчик события click для этих ссылок, например так ...
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 (через идентификатор элемента), приведет к прокрутке страницы до самого верха. Чтобы понять, о чем я говорю: прокрутите вниз примерно на 10 пикселей от верхней части Facebook, открывая половину верхнего меню. Нажмите на один из элементов, он переместится обратно вверх страницы, как только будет обновлен идентификатор фрагмента (без любого окна перерисовки / задержки перерисовки).