Siehe Mark Brittingham Antwort dafür, wie es um Stil, obwohl ich glaube nicht, dass das, was Sie hier fragen. Ich gebe Ihnen die technischen Details darüber, wie es funktioniert (und warum es ziemlich brillant).
Werfen Sie einen Blick auf die Statusleiste, wenn Sie über den Link Profil im Header schweben ...
http://www.facebook.com/profile.php?id=514287820&ref=profile
Das ist, wo der Tag <a> wird darauf auf. Nun ein Blick auf die Adressleiste, wenn Sie darauf klicken ...
http://www.facebook.com/home.php#/profile.php?id=514287820&ref=profile
Beachten Sie die „#“ Fragmentbezeichner / hash ? Dies beweist im Grunde , dass Sie die Seite nicht verlassen haben und die vorherige Anforderung wurde mit AJAX gemacht. Sie sind Abfangen der Click - Ereignisse auf diese Links und Überschreiben der Standardfunktionalität mit etwas von ihrer eigenen.
Um dies mit Javascript geschehen, alles, was Sie tun müssen, ist ein Click-Ereignishandler wie so auf diese Links zuzuweisen ...
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;
}
}
Ein fabelhafter Vorteil diesen Ansatz ist, dass es die Zurück-Taste ermöglicht funktional zu sein (mit wenig addierte Tricks), die seit jeher eine schmerzhafte Nebenwirkung von chronischer AJAX-Nutzung. Ich bin nicht 100% sicher, was dieser Trick ist, aber ich wette, es ist irgendwie in der Lage zu erkennen, wenn der Browser der Fragmentbezeichner modifiziert (möglicherweise durch sie alle ~ 500 Millisekunden überprüft).
Als Randnotiz, den Hash auf einen Wert ändert, der wird nicht innerhalb des DOM (über Element - ID) zu finden Blättern Sie in der Seite den ganzen Weg nach oben. Um zu sehen , was ich rede: Sie nach unten scrollen etwa 10 Pixel vom oberen Rande von Facebook, die Hälfte des oberen Menü auszusetzen. Klicken Sie auf eines der Elemente, wird es aufspringen zum Seitenanfang zurück, sobald das Fragment Identifier (ohne aktualisiert wird jedes Fenster repaint / neu gezeichnet Verzögerung).