Pregunta ¿Es posible usar JavaScript para cambiar las metaetiquetas de la página?


Si pongo un div en la cabeza y visualizo: ninguno, entonces uso JavaScript para visualizarlo, ¿funcionará?

Editar:

Tengo cosas cargadas en AJAX. Y como mi AJAX cambia la parte "principal" del sitio, también quiero cambiar las metaetiquetas.


74
2018-04-02 19:33


origen


Respuestas:


Si tu puedes hacerlo.

Hay algunos casos de uso interesantes: algunos navegadores y complementos analizan meta elementos y cambian su comportamiento para diferentes valores.

Ejemplos

Skype: apaga el analizador del número de teléfono

<meta name="SKYPE_TOOLBAR" content="SKYPE_TOOLBAR_PARSER_COMPATIBLE">

iPhone: apaga el analizador del número de teléfono

<meta name="format-detection" content="telephone=no">

Google Chrome Frame

<meta http-equiv="X-UA-Compatible" content="chrome=1">

Definición de la vista para dispositivos móviles

<meta name="viewport" content="width=device-width, initial-scale=1.0">

Este puede ser cambiado por JavaScript. Ver: Una solución para el error de balanza de ventana de iPhone

Metadescripción

Algunos agentes de usuario (Opera, por ejemplo) usan la descripción para marcadores. Puede agregar contenido personalizado aquí. Ejemplo:

<!DOCTYPE html>
<title>Test</title>
<meta name="description" content="this is old">
<script type='text/javascript' src='http://code.jquery.com/jquery-1.8.2.js'></script>

<button>Change description</button>

<script type='text/javascript'>
$('button').on('click', function() {
    // Just replacing the value of the 'content' attribute will not work.
    $('meta[name=description]').remove();
    $('head').append( '<meta name="description" content="this is new">' );
});
</script>

Entonces, no se trata solo de los motores de búsqueda.


143
2018-04-02 20:08



Utilizarías algo como (con jQuery):

$('meta[name=author]').attr('content', 'New Author Name');

Pero eso sería en gran medida inútil ya que las metaetiquetas normalmente solo se raspan cuando se carga el documento, generalmente sin ejecutar ningún JavaScript.


61
2018-04-02 19:41



Sí lo es.

P.ej. para establecer la metadescripción:

document.querySelector('meta[name="description"]').setAttribute("content", _desc);

58
2018-03-17 22:52



Puede cambiar meta con, por ejemplo, llamadas jQuery, como esta:

$('meta[name=keywords]').attr('content', new_keywords);
$('meta[name=description]').attr('content', new_description);

lo pienso hace importa por ahora, desde google dijo que indexarán el contenido de Ajax a través de #!hashes y _escaped_fragment_ llamadas. Y ahora ellos poder verificarlo (incluso automáticamente, con navegadores sin cabeza, ver el enlace 'Crear instantáneas HTML' en la página mencionada anteriormente), así que creo que es el camino para los chicos hardcore de SEO.


32
2017-11-23 01:29



Debería ser posible así (o usar jQuery como $('meta[name=author]').attr("content");)

<html>
<head>
<title>Meta Data</title>
<meta name="Author" content="Martin Webb">
<meta name="Author" content="A.N. Other">
<meta name="Description" content="A sample html file for extracting meta data">
<meta name="Keywords" content="JavaScript, DOM, W3C">

</head>

<body>
<script language="JavaScript"><!--
if (document.getElementsByName) {
  var metaArray = document.getElementsByName('Author');
  for (var i=0; i<metaArray.length; i++) {
    document.write(metaArray[i].content + '<br>');
  }

  var metaArray = document.getElementsByName('Description');
  for (var i=0; i<metaArray.length; i++) {
    document.write(metaArray[i].content + '<br>');
  }

  var metaArray = document.getElementsByName('Keywords');
  for (var i=0; i<metaArray.length; i++) {
    document.write(metaArray[i].content + '<br>');
  }
}
//--></script>
</body>

</html>

11
2018-04-02 19:40



Las metaetiquetas son parte de la dom y se puede acceder y, supongo, cambiar, pero los motores de búsqueda (los principales consumidores de metaetiquetas) no verán el cambio ya que la javascript no se ejecutará. entonces, a menos que esté cambiando una metaetiqueta (la actualización viene a la mente) que tiene implicaciones en el navegador, ¿podría ser de poca utilidad?


9
2018-04-02 19:39



$(document).ready(function() {
  $('meta[property="og:title"]').remove();
  $('meta[property="og:description"]').remove();
  $('meta[property="og:url"]').remove();
  $("head").append('<meta property="og:title" content="blubb1">');
  $("head").append('<meta property="og:description" content="blubb2">');
  $("head").append('<meta property="og:url" content="blubb3">');
});

9
2018-04-17 17:26



var metaTag = document.getElementsByTagName('meta');
for (var i=0; i < metaTag.length; i++) {
    if (metaTag[i].getAttribute("http-equiv")=='refresh')
        metaTag[i].content = '666';
    if (metaTag[i].getAttribute("name")=='Keywords')
        metaTag[i].content = 'js, solver';
}

5
2018-03-20 15:21