Es gibt viele Möglichkeiten, wie Sie den Titel ändern können, die beiden wichtigsten sind folgendermaßen:
Die fragwürdige Methode
Setzen Sie ein Title-Tag in HTML (z.B. Hello
), dann in Javascript:
let title_el = document.querySelector("title");
if(title_el)
title_el.innerHTML = "Welt";
Die offensichtlich richtige Methode
Das einfachste von allen ist tatsächlich die Methode zu verwenden, die vom Document Object Model (DOM) bereitgestellt wird.
document.title = "Hallo Welt";
Die erste Methode ist im Allgemeinen das, was Sie tun würden, um Tags im Body des Dokuments zu ändern. Diese Methode zu verwenden, um Meta-Daten-Tags wie diejenigen im Kopf (wie z.B. title
) zu verändern, ist bestenfalls fragwürdig, ist nicht idiomatisch, nicht sehr guter Stil von Anfang an und könnte sogar nicht portabel sein. Sicher ist jedoch, dass es andere Entwickler ärgern wird, wenn sie title.innerHTML = ...
in dem von ihnen gewarteten Code sehen.
Wofür Sie sich entscheiden möchten, ist die letztere Methode. Diese Eigenschaft wird im DOM-Spezifikation explizit für den Zweck des Titelwechsels bereitgestellt.
Beachten Sie auch, dass, wenn Sie mit XUL arbeiten, möglicherweise überprüfen möchten, ob das Dokument geladen wurde, bevor Sie versuchen, den Titel zu setzen oder abzurufen, da Sie andernfalls ein undefiniertes Verhalten
aufrufen (hier gibt es Drachen), was an sich schon ein beängstigendes Konzept ist. Dies kann oder kann nicht über JavaScript erfolgen, da sich die Dokumentation des DOM nicht unbedingt auf JavaScript bezieht. Aber XUL ist ein ganz anderes Biest, also verliere ich mich.
Von .innerHTML
sprechend
Ein guter Tipp, den Sie im Hinterkopf behalten sollten, ist, dass die Verwendung von .innerHTML
im Allgemeinen schlampig ist. Verwenden Sie stattdessen appendChild
.
Obwohl es zwei Fälle gibt, in denen ich .innerHTML
immer noch nützlich finde, um reinen Text in ein kleines Element einzufügen...
label.innerHTML = "Hallo Welt";
// im Gegensatz zu...
label.appendChild(document.createTextNode("Hallo Welt"));
// Beispiel:
el.appendChild(function(){
let el = document.createElement("span");
el.className = "label";
el.innerHTML = label_text;
return el;
}());
... und wenn Sie einen Container leeren...
container.innerHTML = "";
// im Gegensatz zu... ähm... okay, ich denke, ich mache mein eigenes Ding
[...container.childNodes].forEach(function(child){
container.removeChild(child);
});
17 Stimmen
document.title = "neuer Titel";
, aber wenn die Seite IFrames hat, können Sie verwenden:window.top.document.title
0 Stimmen
Wie machen Sie Ihre Registerkartensammlung individuell und einzigartig?