Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

214
Vistas
¿Cómo puedo cambiar el título de la ventana de un video de YouTube abierto para incluir el nombre del canal?

Básicamente, lo que quiero que haga la extensión es que, cuando abra un video de YouTube, tome el nombre del canal de YouTube y lo agregue al título de la ventana para poder bloquear videos de YouTube de solo algunos canales. Entonces, si el nombre del canal de YouTube fuera "Mark Rober" y el título del video (y por lo tanto también el título de la ventana) fuera "¿Es la NASA una pérdida de dinero?" Quiero cambiar el título de la ventana por algo como "¿Es la NASA una pérdida de dinero? - Mark Rober".

Traté de escribir una extensión de Chrome para esto, pero no puedo encontrar la manera de obtener el nombre del canal de YouTube para ponerlo en el título de la ventana. Intenté usar document.querySelector y document.getElementById y ambos devolvieron "nulo" o indefinido. Probablemente porque no sé cómo acceder específicamente al nombre del canal porque en realidad no tiene una identificación única en el HTML.

También pensé en hacer esto a través de la API de YouTube, pero eso requiere un token de OAuth. Y dado que esta extensión sería muy útil para usar junto con muchos bloqueadores web, me encantaría compartirla cuando funcione y con un token que podría ser menos accesible (creo).

Así que si alguien me puede ayudar a hacer esto, estaría muy agradecido :)

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

No estoy seguro de qué está pasando en su código, tal vez las ID no sean únicas o algo así, pero de todos modos, logré obtener el nombre del canal usando la expresión más fea:

 document.getElementById("primary-inner").children[7].children[1].children[0].children[0].children[0].children[0].children[1].children[0].children[0].children[0].children[0].children[0].innerHTML

(¿Conoce el problema de que la página tarda en cargarse y si la secuencia de comandos se ejecuta antes de que la página haya terminado de cargarse, puede obtener un null ? Existen técnicas para superar este problema, en caso de que sea nuevo para usted).


Editar:

El código completo de una extensión de Chrome que funciona para mí:

displayChannelName.js :

 console.log("displayChannelName started."); let nodeLoaded = setInterval(function () { let node = document.getElementById("primary-inner"); if (node != undefined) { let channelName = node.children[7].children[1].children[0].children[0].children[0].children[0].children[1].children[0].children[0].children[0].children[0].children[0].innerHTML; console.log("channel name: " + channelName); document.title = document.title + " - " + channelName; clearInterval(nodeLoaded); }; }, 500);

manifest.json :

 { "name": "YouTube Channel Name", "version": "1", "description": "Display YouTube Channel Name", "manifest_version": 3, "content_scripts": [ { "matches": ["https://www.youtube.com/watch*"], "js": ["displayChannelName.js"] } ] }

Editar:

Con MutationObserver:

displayChannelName.js :

 console.log("displayChannelName script started."); let currTitle; function updateTitle(node) { if (document.title != currTitle) { console.log("updateTitle function called."); if (node == undefined) { node = document.getElementById("primary-inner"); }; setTimeout(function () { // wait a little in case title changes before the node reloads let channelName = node.children[7].children[1].children[0].children[0].children[0].children[0].children[1].children[0].children[0].children[0].children[0].children[0].innerHTML; document.title += " - " + channelName; currTitle = document.title; }, 500); }; }; let nodeLoaded = setInterval(function () { // update title on page load let node = document.getElementById("primary-inner"); if (node != undefined) { updateTitle(node); clearInterval(nodeLoaded); }; }, 500); // listen for future changes new MutationObserver(function (mutations) { updateTitle(undefined); }).observe( document.querySelector("title"), { subtree: true, characterData: true, childList: true } );
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda