Si pongo un div en el encabezado y visualizo: ninguno, entonces uso JavaScript para mostrarlo, ¿funcionará?
Editar:
Tengo cosas cargadas en AJAX. Y como mi AJAX cambia la parte "principal" del sitio, también quiero cambiar las metaetiquetas.
Si pongo un div en el encabezado y visualizo: ninguno, entonces uso JavaScript para mostrarlo, ¿funcionará?
Editar:
Tengo cosas cargadas en AJAX. Y como mi AJAX cambia la parte "principal" del sitio, también quiero cambiar las metaetiquetas.
Respuestas:
Si tu puedes hacerlo.
Hay algunos casos de uso interesantes: algunos navegadores y complementos analizan los meta elementos y cambian su comportamiento para diferentes valores.
<meta name="SKYPE_TOOLBAR" content="SKYPE_TOOLBAR_PARSER_COMPATIBLE">
<meta name="format-detection" content="telephone=no">
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
Este se puede cambiar mediante JavaScript. Ver: Una solución para el error de escala de la ventana gráfica del iPhone
Algunos agentes de usuario (Opera, por ejemplo) utilizan la descripción para los 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 motores de búsqueda.
keywords
y description
.
document.write
el encabezado, es demasiado tarde para cambiarlo una vez que se cargue la página, ya que Skype ya habrá destrozado el DOM, ¡cosa horrible!
$('meta[property="og:title"]').replaceWith('<meta property="og:title" content="New Title">');
const meta = document.querySelector('meta[name=theme-color]'); meta.setAttribute("content", colors[slideIndex]);
Chrome en Android detecta la actualización y cambia el color
Sí lo es.
Por ejemplo, para establecer la metadescripción:
document.querySelector('meta[name="description"]').setAttribute("content", _desc);
property
atributo, no el name
atributo, es decirmeta[property="og:title"]
Usaría algo como (con jQuery):
$('meta[name=author]').attr('content', 'New Author Name');
Pero eso sería en su mayoría inútil ya que las metaetiquetas generalmente solo se raspan cuando se carga el documento, generalmente sin ejecutar JavaScript.
$('meta[property=og:somestuff]')
, que sospeché que entraría en conflicto con la sintaxis de selección de jQuery debido a los dos puntos.
Puede cambiar meta con, por ejemplo, llamadas de jQuery, como estas:
$('meta[name=keywords]').attr('content', new_keywords);
$('meta[name=description]').attr('content', new_description);
Creo que hace cuestión por ahora, ya que Google dijo que lo harán a través de indexar el contenido ajax #!hashes
y _escaped_fragment_
llamadas. Y ahora pueden verificarlo (incluso automáticamente, con navegadores sin cabeza, consulte el enlace 'Creación de instantáneas HTML' en la página mencionada anteriormente), así que creo que es el camino para los expertos en SEO.
Definitivamente es posible usar Javascript para cambiar las metaetiquetas de la página. Aquí hay un enfoque solo de Javascript:
document.getElementsByTagName('meta')["keywords"].content = "My new page keywords!!";
document.getElementsByTagName('meta')["description"].content = "My new page description!!";
document.title = "My new Document Title!!";
He verificado que Google indexa estos cambios del lado del cliente para el código anterior.
element = collection[name]
sintaxis.
Las metaetiquetas son parte del 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 no se ejecutará el javascript. Entonces, a menos que esté cambiando una metaetiqueta (se le viene a la mente una actualización) que tiene implicaciones en el navegador, ¿esto podría ser de poca utilidad?
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>
$(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">');
});
jQuery('meta[property="og:title"]').attr('content', "blubb1");
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';
}
Puede utilizar una solución más sencilla y ligera:
document.head.querySelector('meta[name="description"]').content = _desc
simple atributo add y div para cada ejemplo de metaetiqueta
<meta id="mtlink" name="url" content="">
<meta id="mtdesc" name="description" content="" />
<meta id="mtkwrds" name="keywords" content="" />
ahora como un cambio div normal por ej. n clic
<a href="#" onClick="changeTags(); return false;">Change Meta Tags</a>
función cambiar etiquetas con jQuery
function changeTags(){
$("#mtlink").attr("content","http://albup.com");
$("#mtdesc").attr("content","music all the time");
$("#mtkwrds").attr("content","mp3, download music, ");
}
Para cualquiera que intente cambiar las metaetiquetas og: title (o cualquier otra). Me las arreglé para hacerlo de esta manera:
document.querySelector('meta[property="og:title"]').setAttribute("content", "Example with og title meta tag");
Tenga en cuenta que 'meta [propiedad = "og: título"]' contiene la palabra PROPIEDAD y no NOMBRE.
No, un div es un elemento del cuerpo, no un elemento principal
EDITAR: Entonces lo único que obtendrán los SE es el HTML base, no el modificado ajax.
Sí, es posible agregar metaetiquetas con Javascript. Lo hice en mi ejemplo
¿Android no respeta la eliminación de metaetiquetas?
Pero, no sé cómo cambiarlo aparte de quitarlo. Por cierto, en mi ejemplo ... cuando haces clic en el botón 'AGREGAR', agrega la etiqueta y la ventana gráfica cambia respectivamente, pero no sé cómo revertirla (eliminarla, en Android) ... Ojalá hubiera Firebug para Android, así que Vi lo que estaba pasando. Firefox elimina la etiqueta. Si alguien tiene alguna idea sobre esto, tenga en cuenta mi pregunta.
tener esto en el índice
<link rel="opengraph" href="{http://yourPage.com/subdomain.php}"/>
tener esto en ajaxfiles og: escriba "og: título" og: descripción y og: imagen
y agrega esto también
<link rel="origin" href={http://yourPage.com}/>
luego agregue js después de ajaxCall
FB.XFBML.parse();
Editar: luego puede mostrar el título y la imagen correctos en Facebook en douments txt / php (los míos se llaman simplemente .php como extensiones, pero son más archivos txt). Luego tengo las metaetiquetas en estos archivos, y el enlace al índice en cada documento, también un metaenlace en el archivo de índice para cada subarchivo.
Si alguien conoce una mejor manera de hacer esto, agradecería cualquier adición :)
Esto parece funcionar para una pequeña aplicación configurada de forma geométrica rígida donde debe ejecutarse tanto en navegadores móviles como en otros navegadores con pocos cambios, por lo que es necesario encontrar el estado del navegador móvil / no móvil y para móviles configurar la ventana gráfica al ancho del dispositivo. Como los scripts se pueden ejecutar desde el encabezado, el js a continuación en el encabezado parece cambiar la metaetiqueta para el ancho del dispositivo antes de que se cargue la página. Se podría notar que el uso de navigator.userAgent está estipulado como experimental. La secuencia de comandos debe seguir la entrada de la metaetiqueta para ser cambiada, por lo que uno debe elegir algún contenido inicial y luego cambiar en alguna condición.
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script>
var userAgentHeader = navigator.userAgent ;
var browserIsMobileOrNot = "mobileNOT" ;
if( userAgentHeader.includes( "Mobi" ) ) {
browserIsMobileOrNot = "mobileYES" ;
//document.querySelector('meta[name="viewport"]').setAttribute( "content", "width=device-width, initial-scale=1.0" );
} else {
browserIsMobileOrNot = "mobileNOT" ;
document.querySelector('meta[name="viewport"]').setAttribute( "content", "");
}
</script>
<link rel="stylesheet" href="css/index.css">
. . . . . .