Mam stronę internetową, która implementuje zestaw kart, z których każda pokazuje inną treść. Kliknięcia karty nie odświeżają strony, ale ukrywają / odkrywają zawartość po stronie klienta.
Teraz trzeba zmienić tytuł strony zgodnie z zakładką wybraną na stronie (z powodów SEO). czy to możliwe? Czy ktoś może zaproponować rozwiązanie umożliwiające dynamiczną zmianę tytułu strony za pomocą javascript bez ponownego ładowania strony?
źródło
Chcę się przywitać z przyszłości :) Rzeczy, które wydarzyły się ostatnio:
Aby odpowiedzieć na pytanie, możesz bezpiecznie zmienić tytuł i inne metatagi z javascript (możesz także dodać coś takiego jak https://prerender.io, jeśli chcesz obsługiwać wyszukiwarki inne niż Google), po prostu udostępnij je jako osobne adresy URL ( w przeciwnym razie skąd Google wiedziałby, że są to różne strony wyświetlane w wynikach wyszukiwania?). Zmiana tagów związanych z SEO (po zmianie strony przez kliknięcie czegoś) jest prosta:
Tylko upewnij się, że css i javascript nie są zablokowane w pliku robots.txt, możesz użyć Fetch jako usługi Google w Narzędziach Google dla webmasterów.
1: http://searchengineland.com/tested-googlebot-crawls-javascript-heres-learned-220157
źródło
Nie widzę, jak zmiana tytułu strony za pomocą Javascript pomoże SEO. Większość (lub wszystkie) botów wyszukiwania nie uruchamia Javascript i odczytuje tylko początkowo załadowany tytuł, którym jest narzut.
Jeśli chcesz pomóc SEO, musisz zmienić tytuł strony w zapleczu i obsługiwać różne wersje strony.
źródło
window.history
dobrze jest aktualizować tytuł strony, a także URLZastosowanie
document.title
.Zobacz także tę stronę, aby poznać podstawowy samouczek.
źródło
Kod jest
document.title = 'test'
źródło
;
do końca?Istnieje wiele sposobów zmiany tytułu, dwa główne są takie:
Wątpliwa metoda
Umieść tag tytułu w HTML (np.
<title>Hello</title>
), A następnie w javascript:Oczywiście poprawna metoda
Najprościej jest użyć metody dostarczonej przez Document Object Model (DOM)
Ta pierwsza metoda służy do zmiany znaczników znajdujących się w treści dokumentu. Używanie tej metody do modyfikowania znaczników meta-danych, takich jak te znalezione w głowie (jak
title
), jest co najmniej wątpliwą praktyką, nie jest idiomatyczne, na początku niezbyt dobry styl, a może nawet nie jest przenośne. Jedną z rzeczy, których możesz być pewien, jest to, że będzie drażnić innych programistów, jeśli zobaczątitle.innerHTML = ...
w utrzymywanym kodzie.To, co chcesz iść, to ta druga metoda. Ta właściwość jest podana w specyfikacji DOM specjalnie w celu, jak sugeruje nazwa, zmiany tytułu.
Zauważ również, że jeśli pracujesz z XUL, możesz chcieć sprawdzić, czy dokument został załadowany, zanim spróbujesz ustawić lub uzyskać tytuł, ponieważ w przeciwnym razie wywołujesz
undefined behavior
(tutaj są smoki), co jest przerażającą samą koncepcją. Może się to zdarzyć lub nie przez JavaScript, ponieważ dokumenty w DOM nie muszą koniecznie dotyczyć JavaScript. Ale XUL jest całą inną bestią, więc dygresuję.Mówiąc o
.innerHTML
Dobrą radą, o której należy pamiętać, jest to, że używanie
.innerHTML
jest na ogół niechlujne. UżyjappendChild
zamiast tego.Chociaż dwa przypadki, w których nadal uważam
.innerHTML
się za przydatne, obejmują wstawienie zwykłego tekstu do małego elementu ...... i opróżnianie pojemnika ...
źródło
undefined behavior
.document.querySelector.apply
, poważnie?Korzystanie z document.title to sposób na osiągnięcie tego w JavaScript, ale jak to ma pomóc w SEO? Boty zazwyczaj nie wykonują kodu javascript podczas przeglądania stron.
źródło
Nowoczesne roboty indeksujące są w stanie analizować dynamicznie generowane treści w DOM, więc korzystanie z nich
document.title = ...
jest całkowicie w porządku.źródło
Będziesz musiał ponownie wyświetlić stronę z nowym tytułem, aby każdy robot mógł zauważyć zmianę. Robiąc to za pomocą javascript, przyniesie korzyść tylko ludzkiemu czytelnikowi, roboty nie zamierzają wykonać tego kodu.
źródło
dla tych, którzy szukają wersji npm, jest do tego cała biblioteka:
źródło
Być może możesz załadować do tytułu wszystkie tytuły zakładek w jednym ciągu, a następnie po załadowaniu jednej z zakładek zmień tytuł za pomocą javascript
np .: najpierw ustaw tytuł
po załadowaniu jednej z kart uruchom:
źródło
Jednym ze sposobów, który przychodzi na myśl, który może pomóc w SEO i nadal ma strony kart, ponieważ są, to użycie nazwanych kotwic, które odpowiadają każdej karcie, jak w:
http://www.example.com/mypage#tab1, http://www.example.com/mypage#tab2, etc.
Trzeba będzie mieć przetwarzanie po stronie serwera, aby przeanalizować adres URL i ustawić początkowy tytuł strony, gdy przeglądarka wyświetli stronę. Chciałbym też zrobić tę kartę „aktywną”. Gdy strona zostanie załadowana, a rzeczywisty użytkownik przełącza karty, możesz użyć javascript do zmiany,
document.title
jak stwierdzili inni użytkownicy.źródło
Zastosowanie
document.title
. Przyda się w większości rzeczy, ale zniszczy SEO na twojej stronie.Przykład:
źródło
Możesz użyć JavaScript. Niektóre boty, w tym Google, wykonają JavaScript dla korzyści SEO (pokazując poprawny tytuł w SERP).
Jest to jednak bardziej skomplikowane, ponieważ wyświetlasz i ukrywasz karty bez odświeżania strony lub zmiany adresu URL. Może dodanie kotwicy pomoże, jak twierdzą inni. Może być konieczne cofnięcie mojej odpowiedzi.
Artykuły przedstawiające pozytywne wyniki: http://www.aukseo.co.uk/use-javascript-to-generate-seo-friendly-title-tags-1275/ http://www.ifinity.com.au/2012/10 / 04 / Changing_a_Page_Title_with_Javascript_to_update_a_Google_SERP_Entry
Nie zawsze zakładaj, że bot nie uruchomi JavaScript. http://searchengineland.com/tested-googlebot-crawls-javascript-heres-learned-220157 Google i inne wyszukiwarki wiedzą, że najlepsze wyniki do indeksowania to wyniki, które zobaczy rzeczywisty użytkownik końcowy w przeglądarce, w tym JavaScript.
źródło
Ponieważ wyszukiwarki ignorują większość skryptów javascript, musisz to zrobić, aby wyszukiwarki mogły indeksować się przy użyciu kart bez użycia Ajax. Ustaw każdą kartę jako link z odnośnikiem, który ładuje całą stronę z wybraną kartą. Wtedy strona może mieć ten tytuł w tagu.
Program obsługi zdarzeń onclick może nadal ładować strony za pośrednictwem ajax dla osób przeglądających.
Aby zobaczyć strony tak, jak je widzą większość wyszukiwarek, wyłącz Javascript w swojej przeglądarce i postaraj się, aby klikanie kart powodowało załadowanie strony z wybraną kartą i poprawnym tytułem.
Jeśli ładujesz za pośrednictwem ajax i chcesz dynamicznie zmienić tytuł strony za pomocą samego Javascript, to:
Jednak wyszukiwarki nie zobaczą tej zmiany w javascript.
źródło
Ale w celu uzyskania SEO pasuje
Musisz przeładować stronę, gdy strona się zmieni, aby wyszukiwarka zobaczyła różne tytuły itp.
Upewnij się więc, że przeładowanie strony działa najpierw, a następnie dodaj zmiany document.title
źródło
Chcę tylko coś tutaj dodać: zmiana tytułu za pomocą JavaScript jest faktycznie przydatna, jeśli aktualizujesz bazę danych za pomocą AJAX, więc tytuł zmienia się bez konieczności odświeżania strony. Tytuł faktycznie zmienia się za pomocą języka skryptowego po stronie serwera, ale zmiana go za pomocą JavaScript jest tylko użytecznością i interfejsem użytkownika, który sprawia, że użytkownik jest bardziej przyjemny i płynny.
Teraz, jeśli zmieniasz tytuł za pomocą JavaScript tylko do cholery, nie powinieneś tego robić.
źródło
Google wspomniał, że wszystkie pliki js są renderowane, ale w rzeczywistości straciłem tytuł i inne metatagi, które zostały dostarczone przez Reactjs na tej stronie i faktycznie straciłem pozycję w Google! Dużo szukałem, ale wydaje się, że wszystkie strony muszą być wstępnie renderowane lub za pomocą SSR (renderowania po stronie serwera), aby mieć przyjazny dla SEO protokół!
Rozwija się do Reactjs, Angularjs itp.
Krótko mówiąc, każda strona, która ma źródło widoku strony w przeglądarce, jest indeksowana przez wszystkie roboty, jeśli prawdopodobnie Google nie może indeksować, ale inni pomijają indeksowanie!
źródło
Najprostszym sposobem jest usunięcie
<title>
tagu z index.html i dołączeniena każdej stronie w sieci. Pająki to znajdą i będą wyświetlane w wynikach wyszukiwania :)
źródło