Tengo una página web que implementa un conjunto de pestañas que muestran diferentes contenidos. Los clics en la pestaña no actualizan la página, sino que ocultan / muestran contenido en el lado del cliente.
Ahora hay un requisito para cambiar el título de la página de acuerdo con la pestaña seleccionada en la página (por razones de SEO). es posible? ¿Alguien puede sugerir una solución para alterar dinámicamente el título de la página a través de JavaScript sin volver a cargar la página?
fuente
Quiero saludar desde el futuro :) Cosas que sucedieron recientemente:
Por lo tanto, para responder a su pregunta, puede cambiar de forma segura el título y otras metaetiquetas desde javascript (también puede agregar algo como https://prerender.io si desea admitir motores de búsqueda que no sean de Google), simplemente haga que sean accesibles como URL separadas ( de lo contrario, ¿cómo sabría Google que son páginas diferentes para mostrar en los resultados de búsqueda?). Cambiar las etiquetas relacionadas con SEO (después de que el usuario haya cambiado de página haciendo clic en algo) es simple:
Solo asegúrese de que css y javascript no estén bloqueados en robots.txt, puede usar Fetch como servicio de Google en las Herramientas para webmasters de Google.
1: http://searchengineland.com/tested-googlebot-crawls-javascript-heres-learned-220157
fuente
No puedo ver cómo cambiar el título de la página a través de Javascript ayudará a SEO. La mayoría (o todos) los robots de búsqueda no ejecutan Javascript y solo leerán el título cargado inicialmente que es el marcado.
Si desea ayudar al SEO, deberá cambiar el título de la página en el back-end y mostrar diferentes versiones de la página.
fuente
window.history
es bueno para actualizar el título de la página y la URLUso
document.title
.Vea esta página para un tutorial rudimentario también.
fuente
El código es
document.title = 'test'
fuente
;
al final?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: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)
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 (como
title
) 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 ...... y limpiando un contenedor ...
fuente
undefined behavior
.document.querySelector.apply
, en serio?Usar el document.title es cómo lo lograrías en JavaScript, pero ¿cómo se supone que esto ayudará con el SEO? Los bots generalmente no ejecutan código javascript mientras atraviesan las páginas.
fuente
Los rastreadores modernos pueden analizar contenido generado dinámicamente en el DOM, por lo que el uso
document.title = ...
está perfectamente bien.fuente
Tendrá que volver a publicar la página con un nuevo título para que los rastreadores noten el cambio. Hacerlo a través de JavaScript solo beneficiará a un lector humano, los rastreadores no van a ejecutar ese código.
fuente
Para aquellos que buscan la versión npm, hay una biblioteca completa para esto:
fuente
Tal vez pueda cargar en su título todos los títulos de pestañas en una cadena, y luego, una vez que cargue una de las pestañas, cambie el título a través de javascript
Ej: al principio establezca su título en
una vez que cargue una de las pestañas, ejecute:
fuente
Una forma que viene a la mente que puede ayudar con el SEO y aún tener sus páginas de pestañas como es sería usar anclas con nombre que correspondan a cada pestaña, como en:
http://www.example.com/mypage#tab1, http://www.example.com/mypage#tab2, etc.
Debería tener un procesamiento del lado del servidor para analizar la url y establecer el título de la página inicial cuando el navegador la muestre. También seguiría adelante y convertiría esa pestaña en la "activa". Una vez que se carga la página y un usuario real está cambiando las pestañas, usaría JavaScript para cambiar,
document.title
como lo han dicho otros usuarios.fuente
Puedes usar JavaScript. Algunos bots, incluido Google, ejecutarán JavaScript en beneficio del SEO (mostrando el título correcto en el SERP).
Sin embargo, esto es más complejo ya que está mostrando y ocultando pestañas sin actualizar la página o cambiar la URL. Tal vez agregar un ancla ayudará como lo han dicho otros. Es posible que deba retractar mi respuesta.
Artículos que muestran resultados positivos: 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
No siempre asuma que un bot no ejecutará JavaScript. http://searchengineland.com/tested-googlebot-crawls-javascript-heres-learned-220157 Google y otros motores de búsqueda saben que los mejores resultados para indexar son los resultados que el usuario final real verá en su navegador, incluido JavaScript.
fuente
Utilizar
document.title
. Será útil para la mayoría de las cosas, pero destruirá el SEO en su sitio web.Ejemplo:
fuente
Dado que los motores de búsqueda ignoran la mayoría de javascript, deberá hacerlo para que los motores de búsqueda puedan rastrear usando las pestañas sin usar Ajax. Haga que cada pestaña sea un enlace con un href que cargue toda la página con esa pestaña seleccionada. Entonces la página puede tener ese título en la etiqueta.
El controlador de eventos onclick aún puede cargar las páginas a través de ajax para los espectadores humanos.
Para ver las páginas como la ve la mayoría de los motores de búsqueda, desactive Javascript en su navegador e intente hacerlo de modo que al hacer clic en las pestañas se cargue la página con esa pestaña seleccionada y el título correcto.
Si está cargando a través de ajax y desea cambiar dinámicamente el título de la página con solo Javascript, haga lo siguiente:
Sin embargo, los motores de búsqueda no verán este cambio realizado en javascript.
fuente
Pero para obtener los beneficios SEO
Debe volver a cargar la página cuando la página cambia para que el motor de búsqueda vea los diferentes títulos, etc.
Así que asegúrese de que la recarga de la página funcione primero y luego agregue cambios de document.title
fuente
Solo quiero agregar algo aquí: cambiar el título a través de JavaScript es realmente útil si está actualizando una base de datos a través de AJAX, por lo que el título cambia sin tener que actualizar la página. El título en realidad cambia a través del lenguaje de secuencias de comandos del lado del servidor, pero hacer que cambie a través de JavaScript es solo una cosa de usabilidad e interfaz de usuario que hace que la experiencia del usuario sea más agradable y fluida.
Ahora, si está cambiando el título a través de JavaScript solo por el placer de hacerlo, entonces no debería estar haciendo eso.
fuente
Google mencionó que todos los archivos js se procesaron, pero en realidad, ¡perdí mi título y otras metaetiquetas proporcionadas por Reactjs en este sitio web y realmente perdí mi posición en Google! He buscado mucho, ¡pero parece que todas las páginas deben haberse renderizado previamente o usar SSR (Representación del lado del servidor) para tener su protocolo compatible con SEO!
Se expande a Reactjs, Angularjs, etc.
Para abreviar, todas las páginas que han visto la fuente de la página en el navegador están indexadas por todos los robots, si no es probable que Google pueda indexar, pero otros omiten la indexación.
fuente
La forma más sencilla es eliminar la
<title>
etiqueta de index.html e incluiren cada página de la web. Las arañas encontrarán esto y se mostrarán en los resultados de búsqueda :)
fuente