Viz Mark Brittingham je odpověď na tom, jak to styl, i když si nemyslím, že je to, co žádáte zde. Dám vám technické podrobnosti o tom, jak to funguje (a proč to je docela geniální).
Podívejte se na stavovém řádku, když najedete na odkaz Profil v záhlaví ...
http://www.facebook.com/profile.php?id=514287820&ref=profile
Že je místo, kde je tato značka <a> ukázal. Nyní se podívejte na adresního řádku po klepnutí ...
http://www.facebook.com/home.php#/profile.php?id=514287820&ref=profile
Všimněte si, že "#" identifikátorem fragment / hash ? To v podstatě dokazuje, že jste opustil stránky a předchozí žádost byla podána s AJAX. Jsou zachytí kliknutí události na tyto odkazy, a přepsání výchozí funkce s něčím jejich vlastní.
Aby se to stalo s Javascriptu, vše, co musíte udělat, je přiřadit rutinu události kliknutí na tyto odkazy, jako jsou tak ...
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;
}
}
Jeden báječný výhoda tohoto přístupu je, že umožňuje tlačítko zpět, aby byly funkční (s trochou přidané podvod), která je tradičně bolestivé vedlejší účinky chronické využití AJAX. Nejsem si 100% jistý, co to podvod je, ale vsadím se, že to nějak schopen detekovat, když prohlížeč změní identifikátor fragmentu (případně pomocí zaškrtávacího políčka každých ~ 500 milisekund).
Jako vedlejší poznámku, měnící hash na hodnotu, která nelze nalézt v DOM (přes element ID) bude posouvání stránky po celou cestu na vrchol. Chcete-li zjistit, co mluvím: při posouvání dolů o 10 pixelů od horní části Facebook, vystavovat polovinu horního menu. Kliknutím na některou z položek, bude to skočit zpět do horní části stránky, jakmile je identifikátor fragment se aktualizuje (bez jakéhokoliv okna překreslit / překreslit zpoždění).