Consulte la respuesta de Mark Brittingham sobre cómo darle estilo, aunque no creo que eso sea lo que está preguntando aquí. Le daré los detalles técnicos sobre cómo funciona (y por qué es bastante brillante).
Eche un vistazo a la barra de estado cuando coloca el mouse sobre el enlace de Perfil en el encabezado ...
http://www.facebook.com/profile.php?id=514287820&ref=profile
Ahí es donde se señala esa etiqueta <a>. Ahora mira la barra de direcciones cuando haces clic en ...
http://www.facebook.com/home.php#/profile.php?id=514287820&ref=profile
Observe el identificador de fragmento "#" / hash ? Esto básicamente demuestra que no ha salido de la página y que la solicitud anterior se realizó con AJAX. Están interceptando los eventos de clic en estos enlaces y anulando la funcionalidad predeterminada con algo propio.
Para que esto suceda con Javascript, todo lo que tiene que hacer es asignar un controlador de evento click a esos enlaces como tal ...
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;
}
}
Un beneficio fabuloso de este enfoque es que permite que el botón de retroceso sea funcional (con un pequeño truco añadido), que tradicionalmente ha sido un efecto secundario doloroso del uso crónico de AJAX. No estoy 100% seguro de lo que es este truco, pero apuesto a que de alguna manera es capaz de detectar cuándo el navegador modifica el identificador de fragmento (posiblemente al verificarlo cada ~ 500 milisegundos).
Como nota al margen, cambiar el hash a un valor que no se puede encontrar dentro del DOM (a través del ID del elemento) desplazará la página hasta la parte superior. Para ver de lo que estoy hablando: se desplaza hacia abajo unos 10 píxeles desde la parte superior de Facebook, exponiendo la mitad del menú superior. Haga clic en uno de los elementos, saltará de nuevo a la parte superior de la página tan pronto como el identificador de fragmento se actualice (sin ningún retraso en el repintado / redibujado de la ventana).