2010-03-02 14 views
31

Chcę zbudować witrynę ajax bez poświęcania SEO. Moje pytanie brzmi: Jeśli mam link na mojej stronie tak:Dołączanie hashtagu do adresu URL z javascript

<a href="http://example.com/cats" id="cats">Cats</a> 
    <a href="http://example.com/dogs" id="dogs">Dogs</a> 

... kiedy każdy kliknięciu linku Chciałbym zaktualizować pasek adresu z analogicznym hashtag. Jeśli klikniesz link "Koty", bieżąca lokalizacja będzie oznaczać http://example.com/#cats i będę mógł użyć tego do pokazania zawartości ajaxowej. Jeśli javascript jest wyłączony lub użytkownik jest wyszukiwarką, przejdzie bezpośrednio do/cats

+2

Tylko dwie uwagi: 1) To nie jest nazywany „hashtag” (co jest Twitter żargonu na coś zupełnie niezwiązanego); to się nazywa identyfikator fragmentu lub identyfikator kotwicy (zobacz specyfikację HTML). 2) Nie powinieneś mieć symbolu # w identyfikatorze elementu, tzn. Powinien to być id = "cats", który będzie odpowiadał/cats # kotom. –

Odpowiedz

44

można zmienić właściwość location.hash, to zmienić bieżący identyfikator kotwicy bez przechodząc od postaci strony, na przykład możesz:

<a href="http://mysite.com/cats" id="cats" class="ajaxLink">Cats</a> 
<a href="http://mysite.com/dogs" id="dogs" class="ajaxLink">Dogs</a> 

wówczas:

$('.ajaxLink').click(function (e) { 
    location.hash = this.id; // get the clicked link id 
    e.preventDefault(); // cancel navigation 

    // get content with Ajax... 
});​ 
+1

WOW! Nie wiedziałem, że to takie łatwe. Teraz mogę tworzyć wszystkie moje przyszłe witryny w ajax i nadal pobierać i indeksować moją stronę! : D – alooficha

+0

Tylko jedna rzecz, jeśli użytkownik zaklei ten adres URL lub kliknie na niego z innej witryny, id nie zwróci bieżącego skrótu. Zwraca puste. Czy istnieje rozwiązanie tego? Jak mogę sprawdzić, czy hash onload, a także onclick? – alooficha

+1

Trzeba tylko sprawdzić wartość właściwości 'location.hash' podczas ładowania strony, będzie ona zawierała identyfikator, w tym symbol' # ', np .:' if (location.hash == '#dogs') { /*...*/} ' – CMS

0

Nie można ustawić window.location.href bez przeładowania strony w javascript ze względów bezpieczeństwa.

Z tego co widziałem niektórzy ludzie mówią Google Wskaźnik adresy URL, ale nie będą one traktowane jako oddzielne strony i myślę, że nie jest to, co chcesz. Mam też bardzo małe doświadczenie z SEO.

-1

BenMills, nikt nie wspomniał location.href, chodzi o location.hash który nie wymaga przeładowania strony.

0

Mimo prostoty jest najlepszy, ale jeśli po prostu chcesz zautomatyzować ten proces i uczynić go genericise następnie można użyć tej wtyczki lite jquery.hashTag.js

$('a').hashTag({ 
    source: function() { 
     return $(this).attr('id'); 
    } 
    }); 

Wystarczy umieścić ten fragment wewnątrz $ (document) .ready.

Wykona resztę pracy. Podobnie jak automatyczne kliknięcie na link, którego identyfikator został podany jako skrót.

Powiązane problemy