Hay muchas formas de cambiar el título, las dos principales son las siguientes:
El método cuestionable
Ponga una etiqueta de título en el HTML (por ejemplo <title>Hello</title>
), luego en javascript:
let title_el = document.querySelector("title");
if(title_el)
title_el.innerHTML = "World";
El método obviamente correcto
Lo más simple de todo es usar el método provisto por el Modelo de Objetos del Documento (DOM)
document.title = "Hello World";
El método anterior generalmente es lo que haría para alterar las etiquetas que se encuentran en el cuerpo del documento. Usando este método para modificar etiquetas de metadatos como las que se encuentran en la cabeza (comotitle
) es una práctica cuestionable en el mejor de los casos, no es idiomático, no es un estilo muy bueno para empezar y puede que ni siquiera sea portátil. Sin embargo, una cosa de la que puede estar seguro es que molestará a otros desarrolladores si ventitle.innerHTML = ...
en el código que mantienen.
Con lo que quieres ir es con el último método. Esta propiedad es proporciona en la especificación DOM específicamente para, como su nombre indica, cambiar el título.
Tenga en cuenta también que si está trabajando con XUL, es posible que desee verificar que el documento se haya cargado antes de intentar establecer u obtener el título, ya que de lo contrario está invocando undefined behavior
(aquí hay dragones), que es un concepto aterrador por derecho propio. Esto puede o no suceder a través de JavaScript, ya que los documentos en el DOM no necesariamente pertenecen a JavaScript. Pero XUL es una bestia completamente diferente, así que me estoy desviando.
Hablando de .innerHTML
Un buen consejo a tener en cuenta sería que el uso .innerHTML
es generalmente descuidado. UtilizarappendChild
lugar.
Aunque dos casos en los que todavía me parece .innerHTML
útil incluyen insertar texto sin formato en un elemento pequeño ...
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;
}());
... y limpiando un contenedor ...
container.innerHTML = "";
// as opposed to... umm... okay, I guess I'm rolling my own
[...container.childNodes].forEach(function(child){
container.removeChild(child);
});