Reportez-vous à la réponse de Mark Brittingham pour savoir comment le style, bien que je ne pense pas que ce soit ce que vous demandez ici. Je vais vous donner les détails techniques sur la façon dont cela fonctionne (et pourquoi il est assez brillant).
Jetez un oeil à la barre d'état lorsque vous passez la souris sur le lien du profil dans l'en-tête ...
http://www.facebook.com/profile.php?id=514287820&ref=profile
C'est là cette balise <a> est pointé. Maintenant, regardez la barre d'adresse lorsque vous cliquez dessus ...
http://www.facebook.com/home.php#/profile.php?id=514287820&ref=profile
Notez le « # » identifiant / hachage fragment ? Cela prouve essentiellement que vous n'avez pas quitté la page et la demande précédente a été faite avec AJAX. Ils interceptent les événements de clic sur ces liens, et en remplaçant la fonctionnalité par défaut avec quelque chose de leur propre.
Pour ce faire avec Javascript, tout ce que vous avez à faire est assigner un gestionnaire d'événements de clic pour ces liens comme si ...
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;
}
}
L'un des avantages fabuleux à cette approche est qu'il permet le bouton de retour d'être fonctionnelle (avec une ruse peu ajoutée), qui a toujours été un effet secondaire douloureux d'utilisation chronique AJAX. Je ne suis pas 100% sûr de ce que cette supercherie est, mais je parie que c'est en quelque sorte capable de détecter lorsque le navigateur modifie l'identifiant de fragment (éventuellement en vérifiant chaque ~ 500 millisecondes).
Comme une note de côté, en changeant le hachage à une valeur qui ne peut être trouvée dans les DOM (via ID d'élément) fera défiler la page jusqu'au sommet. Pour voir ce dont je parle: vous faites défiler vers le bas environ 10 pixels de haut de Facebook, exposant la moitié du menu du haut. Cliquez sur l' un des éléments, il sautera de nouveau au sommet de la page, dès que l'identifiant de fragment est mis à jour (sans aucune fenêtre repeindre / redessiner retard).