Wie kann man den Titel einer Webseite dynamisch ändern?

Lesezeit: 9 Minuten

Wie kann man den Titel einer Webseite dynamisch andern
Benutzer12129

Ich habe eine Webseite, die eine Reihe von Registerkarten implementiert, die jeweils unterschiedliche Inhalte anzeigen. Die Tab-Klicks aktualisieren die Seite nicht, sondern blenden Inhalte auf der Client-Seite ein/aus.

Jetzt besteht die Anforderung, den Seitentitel entsprechend der auf der Seite ausgewählten Registerkarte zu ändern (aus SEO-Gründen). Ist das möglich? Kann jemand eine Lösung vorschlagen, um den Seitentitel dynamisch über Javascript zu ändern, ohne die Seite neu zu laden?

  • document.title = "new title"; aber wenn die Seite Iframes hat, können Sie Folgendes verwenden: window.top.document.title

    – S. Serpooshan

    12. April 2021 um 8:25 Uhr

  • Wie gestalten Sie Ihre Registerkarten individuell und unverwechselbar?

    – Sunil Schah

    7. Mai 2021 um 3:41 Uhr

1646263332 963 Wie kann man den Titel einer Webseite dynamisch andern
Alex Fort

Aktualisieren: gemäß den Kommentaren und Verweis auf SearchEngineLand
Die meisten Web-Crawler indizieren den aktualisierten Titel. Die folgende Antwort ist veraltet, aber der Code ist immer noch anwendbar.

Sie können einfach so etwas tun, document.title = "This is the new
page title.";
, aber das würde den Zweck von SEO völlig zunichte machen. Die meisten Crawler werden Javascript von vornherein nicht unterstützen, also nehmen sie den Inhalt des Elements als Seitentitel.

Wenn Sie möchten, dass dies mit den meisten wichtigen Crawlern kompatibel ist, müssen Sie tatsächlich das Titel-Tag selbst ändern, was ein Neuladen der Seite (PHP oder ähnliches) beinhalten würde. Daran kommen Sie nicht vorbei, wenn Sie den Seitentitel so ändern wollen, dass ein Crawler ihn sehen kann.

  • Wenn Sie den pushState von html5 verwenden, um den Verlauf bereits beim Aktualisieren Ihrer Seite zu ändern, warum aktualisieren Sie nicht auch den Titel. Wenn die Crawler richtig eingerichtet sind, erhalten sie immer noch die richtigen Ergebnisse, und Sie möchten immer noch, dass der Benutzer den Titel sieht, der der Ansicht entspricht, in der er sich befindet. Für die meisten Web-Apps usw. scheint es eine gute Lösung zu sein, dies weiterhin zu verwenden. Vielleicht habe ich aber eine andere Funktion übersehen?

    – Mathijs Segers

    7. August 2013 um 8:55 Uhr

  • Das ist nicht ganz richtig. Google indiziert Javascript-Änderungen an document.title. Sehen searchengineland.com/…

    – CpnCrunch

    29. Oktober 2015 um 1:11 Uhr

  • @CpnCrunch ist richtig! Google indexiert den Titel, der durch JavaScript geändert wurde. Ich habe keine anderen Such-Bots getestet. Gehen Sie nicht immer davon aus, dass ein Bot kein JavaScript ausführt. Ich habe unten eine neue Antwort erstellt und dann festgestellt, dass das einfache Ein- und Ausblenden von Registerkarten ohne Änderung der URL dies komplexer macht.

    – Yazzer

    25. November 2015 um 21:24 Uhr


  • @CpnCrunch ist richtig. Wir schreiben das Jahr 2016. SEO hat sich stark verändert und Google und andere Suchmaschinen passen sich an Single-Page-Apps und Javascript im Allgemeinen an.

    – Pilau

    5. Januar 2016 um 17:50 Uhr

  • Das bedeutet also, dass diese Antwort ziemlich veraltet ist. StackOverflow sollte jetzt die Funktion “Obsolete” für Antworten hinzufügen: D

    – Allen Linatoc

    14. März 2016 um 7:42 Uhr

1646263332 739 Wie kann man den Titel einer Webseite dynamisch andern
JLarky

Ich möchte Hallo aus der Zukunft sagen 🙂 Dinge, die kürzlich passiert sind:

  1. Google führt jetzt Javascript aus, das sich auf Ihrer Website befindet1
  2. Die Leute verwenden jetzt Dinge wie React.js, Ember und Angular, um komplexe Javascript-Aufgaben auf der Seite auszuführen, und sie wird immer noch von Google indiziert1
  3. Sie können die HTML5-Verlaufs-API (PushState, React-Router, Ember, Angle) verwenden, mit der Sie beispielsweise separate URLs für jede Registerkarte haben, die Sie öffnen möchten, und Google wird diese indizieren1

Um Ihre Frage zu beantworten, können Sie den Titel und andere Meta-Tags sicher aus Javascript ändern (Sie können auch etwas hinzufügen wie https://prerender.io Wenn Sie Nicht-Google-Suchmaschinen unterstützen möchten), machen Sie sie einfach als separate URLs zugänglich (woher würde Google sonst wissen, dass dies unterschiedliche Seiten sind, die in den Suchergebnissen angezeigt werden sollen?). Das Ändern von SEO-bezogenen Tags (nachdem der Benutzer die Seite durch Klicken auf etwas gewechselt hat) ist einfach:

if (document.title != newTitle) {
    document.title = newTitle;
}
$('meta[name="description"]').attr("content", newDescription);

Stellen Sie einfach sicher, dass CSS und Javascript nicht in robots.txt blockiert sind, die Sie verwenden können Abrufen wie durch Google Dienst in den Google Webmaster-Tools.

1: http://searchengineland.com/tested-googlebot-crawls-javascript-heres-learned-220157

  • Hallo in die Zukunft! Wollte fragen, warum Sie dort immer noch jQuery verwenden und was für diesen Vergleich benötigt wird (document.title != newTitle)

    – Wolodymyr I.

    4. Dezember 2020 um 17:31 Uhr

  • Es war die Zukunft im Jahr 2016, wohlgemerkt 🙂 Der Vergleich ist nur für den Fall vorhanden, dass sich der Titel beim Navigieren zwischen den Seiten nicht geändert hat. Ich denke, die Beschreibung hätte gleich bleiben können, aber es war nur als kurze Demonstration gedacht

    – JLarky

    5. Dezember 2020 um 5:56 Uhr

  • Hallo! Bist du noch in der Zukunft? Was waren die Lottozahlen vom Freitag?

    – Steve

    31. Januar um 19:22 Uhr

1646263332 422 Wie kann man den Titel einer Webseite dynamisch andern
lc.

Verwenden document.title.

Sehen diese Seite auch für ein rudimentäres Tutorial.

  • Ich liebe den Link, er hat Netscape-Navigator-Screenshots 🙂

    – Aran Mulholland

    13. Juni 2012 um 4:43 Uhr

  • Ich würde hoffen, dass Spinnen kein Javascript verwenden. Gute Möglichkeit, Google-Schadcode zu senden?

    – Lee Louviere

    3. August 2012 um 18:08 Uhr

  • @AdrianoVaroliPiazza Es mag nutzlos sein, aber es funktioniert und wird Leuten helfen, die von Suchmaschinen kommen. Sie müssen nicht abstimmen, wenn es die richtige Antwort ist!

    – its_notjack

    26. Juni 2015 um 19:24 Uhr

  • @its_notjack Ist es nicht. Es könnte die richtige Antwort für eine andere Frage sein.

    – Piazza Adriano Varoli

    26. Juni 2015 um 21:27 Uhr

  • Nun, dieses Thema kam zuerst für mich, als ich “javascript change title” in Google eingab. Ich entwickle eine Web-App, also kümmere ich mich nicht um SEO.

    – Maciej Krawczyk

    27. Mai 2016 um 10:26 Uhr

Ich kann nicht sehen, wie das Ändern des Seitentitels über Javascript SEO helfen wird. Die meisten (oder alle) Suchbots führen kein Javascript aus und lesen nur den anfänglich geladenen Titel, der das Markup ist.

Wenn Sie SEO unterstützen möchten, müssen Sie den Seitentitel im Backend ändern und verschiedene Versionen der Seite bereitstellen.

Wie kann man den Titel einer Webseite dynamisch andern
Kev

Der Code ist
document.title="test"

  • Ich verwende top.document.title, um auf das Fenster selbst zu verweisen (ich habe Framesets …)

    – Dror

    5. Januar 2009 um 15:29 Uhr

  • @AdrianoVaroliPiazza keine Notwendigkeit, auf -1 zu gehen, was ist mit Anwendungen, die kein SEO erfordern, oder was ist mit Websites, die tatsächlich einige HTML5-Funktionen nutzen. Ich meine, wenn Sie Ihre Website richtig einrichten und Ajax verwenden und einen Fallback für Nicht-JS/Crawler haben, wird dies nur die Benutzererfahrung beschleunigen und auch den passenden Titel sichtbar halten. Scheint mir eine gute Idee zu sein.

    – Mathijs Segers

    7. August 2013 um 8:59 Uhr

  • Müssen Sie nicht ein hinzufügen ; bis zum Ende?

    – MineCMD

    3. März 2016 um 21:26 Uhr

  • @MineCMD, ein Semikolon (;) ist nur erforderlich, wenn Sie mehrere Befehle in einer einzigen Zeile haben. Angenommen, Sie haben nichts, was den Befehl offen hält (ein Punkt, ein Anführungszeichen, ein doppeltes Anführungszeichen, eine linke Klammer usw.), dann wird ein Zeilenumbruch als das Ende des Befehls angesehen. Ich bin mir nicht sicher, wie wahr das im Fall von alten Browsern ist, aber es hat sich in neueren Versionen von Chrome und Firefox als wahr erwiesen. (Ich verwende weder IE noch Edge, kann es also nicht sagen)

    – Wayne

    27. März 2016 um 6:57 Uhr

  • @Wayne Etwas richtig; Es gibt einige Randfälle, in denen ASI zu unerwartetem Verhalten führt, insbesondere wenn Sie ein anonymes Objekt zurückgeben.

    – David Newton

    7. Mai 2018 um 19:49 Uhr

Es gibt viele Möglichkeiten, den Titel zu ändern, die beiden wichtigsten sind wie folgt:

Die fragwürdige Methode

Fügen Sie ein Titel-Tag in den HTML-Code ein (z <title>Hello</title>), dann in Javascript:

let title_el = document.querySelector("title");

if(title_el)
    title_el.innerHTML = "World";

Die offensichtlich richtige Methode

Am einfachsten ist es, die vom Document Object Model (DOM) bereitgestellte Methode tatsächlich zu verwenden.

document.title = "Hello World";

Die erstere Methode ist im Allgemeinen das, was Sie tun würden, um Tags zu ändern, die in gefunden werden Karosserie des Dokuments. Verwenden Sie diese Methode, um Metadaten-Tags zu ändern, wie sie im Kopf gefunden werden (wie z title) ist bestenfalls eine fragwürdige Praxis, ist nicht idiomatisch, von Anfang an kein sehr guter Stil und möglicherweise nicht einmal portabel. Sie können sich jedoch sicher sein, dass es andere Entwickler ärgern wird, wenn sie es sehen title.innerHTML = ... im Code, den sie pflegen.

Was du will zu gehen ist die letztere Methode. Diese Eigenschaft ist in der DOM-Spezifikation bereitgestellt speziell zu dem Zweck, wie der Name schon sagt, den Titel zu ändern.

Beachten Sie auch, dass Sie, wenn Sie mit XUL arbeiten, vielleicht überprüfen möchten, ob das Dokument geladen wurde, bevor Sie versuchen, den Titel festzulegen oder zu erhalten, da Sie sonst aufrufen undefined behavior (hier seien Drachen), was an sich schon ein beängstigendes Konzept ist. Dies kann über JavaScript geschehen oder auch nicht, da sich die Dokumente im DOM nicht unbedingt auf JavaScript beziehen. Aber XUL ist ein ganz anderes Tier, also schweife ich ab.

Apropos .innerHTML

Ein guter Rat, den Sie beachten sollten, wäre die Verwendung .innerHTML ist generell schlampig. Verwenden appendChild stattdessen.

Obwohl zwei Fälle, wo ich noch finde .innerHTML nützlich sein, um einfachen Text in ein kleines Element einzufügen …

label.innerHTML = "Hello World";
// as opposed to... 
label.appendChild(document.createTextNode("Hello World"));
// example:
el.appendChild(function(){
    let el = document.createElement("span");
    el.className = "label";
    el.innerHTML = label_text;
    return el;
}());

… und einen Container ausräumen …

container.innerHTML = "";
// as opposed to... umm... okay, I guess I'm rolling my own
[...container.childNodes].forEach(function(child){
    container.removeChild(child);
});

  • Ich verwende top.document.title, um auf das Fenster selbst zu verweisen (ich habe Framesets …)

    – Dror

    5. Januar 2009 um 15:29 Uhr

  • @AdrianoVaroliPiazza keine Notwendigkeit, auf -1 zu gehen, was ist mit Anwendungen, die kein SEO erfordern, oder was ist mit Websites, die tatsächlich einige HTML5-Funktionen nutzen. Ich meine, wenn Sie Ihre Website richtig einrichten und Ajax verwenden und einen Fallback für Nicht-JS/Crawler haben, wird dies nur die Benutzererfahrung beschleunigen und auch den passenden Titel sichtbar halten. Scheint mir eine gute Idee zu sein.

    – Mathijs Segers

    7. August 2013 um 8:59 Uhr

  • Müssen Sie nicht ein hinzufügen ; bis zum Ende?

    – MineCMD

    3. März 2016 um 21:26 Uhr

  • @MineCMD, ein Semikolon (;) ist nur erforderlich, wenn Sie mehrere Befehle in einer einzigen Zeile haben. Angenommen, Sie haben nichts, was den Befehl offen hält (ein Punkt, ein Anführungszeichen, ein doppeltes Anführungszeichen, eine linke Klammer usw.), dann wird ein Zeilenumbruch als das Ende des Befehls betrachtet. Ich bin mir nicht sicher, wie wahr das im Fall von alten Browsern ist, aber es hat sich in neueren Versionen von Chrome und Firefox als wahr erwiesen. (Ich verwende weder IE noch Edge, kann es also nicht sagen)

    – Wayne

    27. März 2016 um 6:57 Uhr

  • @Wayne Etwas richtig; Es gibt einige Randfälle, in denen ASI zu unerwartetem Verhalten führt, insbesondere wenn Sie ein anonymes Objekt zurückgeben.

    – David Newton

    7. Mai 2018 um 19:49 Uhr

1646263333 660 Wie kann man den Titel einer Webseite dynamisch andern
Das TXI

Die Verwendung von document.title ist, wie Sie es in JavaScript erreichen würden, aber wie soll dies bei SEO helfen? Bots führen im Allgemeinen keinen Javascript-Code aus, wenn sie Seiten durchlaufen.

917190cookie-checkWie kann man den Titel einer Webseite dynamisch ändern?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy