content - ¿Cómo obtengo la información de una metaetiqueta con javascript?
meta tags generator (12)
Aquí hay una función que devolverá el contenido de cualquier metaetiqueta y memorizará el resultado, evitando la consulta innecesaria del DOM.
var getMetaContent = (function(){
var metas = {};
var metaGetter = function(metaName){
var theMetaContent, wasDOMQueried = true;;
if (metas[metaName]) {
theMetaContent = metas[metaName];
wasDOMQueried = false;
}
else {
Array.prototype.forEach.call(document.getElementsByTagName("meta"), function(el) {
if (el.name === metaName) theMetaContent = el.content;
metas[metaName] = theMetaContent;
});
}
console.log("Q:wasDOMQueried? A:" + wasDOMQueried);
return theMetaContent;
}
return metaGetter;
})();
getMetaContent("description"); /* getMetaContent console.logs the content of the description metatag. If invoked a second time it confirms that the DOM was only queried once */
Y aquí hay una versión extendida que también consulta las etiquetas abiertas de gráficos , y usa Array#some :
var getMetaContent = (function(){
var metas = {};
var metaGetter = function(metaName){
wasDOMQueried = true;
if (metas[metaName]) {
wasDOMQueried = false;
}
else {
Array.prototype.some.call(document.getElementsByTagName("meta"), function(el) {
if(el.name === metaName){
metas[metaName] = el.content;
return true;
}
if(el.getAttribute("property") === metaName){
metas[metaName] = el.content;
return true;
}
else{
metas[metaName] = "meta tag not found";
}
});
}
console.info("Q:wasDOMQueried? A:" + wasDOMQueried);
console.info(metas);
return metas[metaName];
}
return metaGetter;
})();
getMetaContent("video"); // "http://video.com/video33353.mp4"
La información que necesito está en una metaetiqueta. ¿Cómo puedo acceder a los datos de "contenido" de la metaetiqueta cuando property = "video"?
HTML:
<meta property="video" content="http://video.com/video33353.mp4" />
En Jquery puedes lograr esto con:
$("meta[property=''video'']");
En JavaScript puedes lograr esto con:
document.getElementsByTagName(''meta'').item(property=''video'');
Este código funciona para mí
<meta name="text" property="text" content="This is text" />
<meta name="video" property="text" content="http://video.com/video33353.mp4" />
JS
var x = document.getElementsByTagName("META");
var txt = "";
var i;
for (i = 0; i < x.length; i++) {
if (x[i].name=="video")
{
alert(x[i].content);
}
}
Ejemplo de violín: http://jsfiddle.net/muthupandiant/ogfLwdwt/
Hay una manera más fácil:
document.getElementsByName(''name of metatag'')[0].getAttribute(''content'')
Las otras respuestas probablemente funcionen, pero esta es más simple y no requiere jQuery:
document.head.querySelector("[property=video]").content;
Personalmente prefiero ponerlos en un hash de objetos, luego puedo acceder a ellos en cualquier lugar. Esto podría establecerse fácilmente en una variable inyectable y luego todo podría tenerlo y solo se agarró una vez.
Al envolver la función, esto también se puede hacer como un trazador de líneas.
var meta = (function () {
var m = document.querySelectorAll("meta"), r = {};
for (var i = 0; i < m.length; i += 1) {
r[m[i].getAttribute("name")] = m[i].getAttribute("content")
}
return r;
})();
Puedes usar esto:
function getVideoContent() {
var metas = document.getElementsByTagName(''meta'');
for (var i=0; i<metas.length; i++) {
if (metas[i].getAttribute("property") == "video") {
return metas[i].getAttribute("content");
}
}
return "";
}
Una gran cantidad de respuestas difíciles de leer aquí. Un trazador de líneas aquí
document.querySelector("meta[property=''og:image'']").getAttribute("content");
Camino - [ 1 ]
function getMetaContent(property, name){
return document.head.querySelector("["+property+"="+name+"]").content;
}
console.log(getMetaContent(''name'', ''csrf-token''));
Camino - [ 2 ]
function getMetaContent(name){
return document.getElementsByTagName(''meta'')[name].getAttribute("content");
}
console.log(getMetaContent(''csrf-token''));
Camino - [ 3 ]
function getMetaContent(name){
name = document.getElementsByTagName(''meta'')[name];
if(name != undefined){
name = name.getAttribute("content");
if(name != undefined){
return name;
}
}
return null;
}
console.log(getMetaContent(''csrf-token''));
$("meta[property=''video'']").attr(''content'');
function getDescription() {
var info = document.getElementsByTagName(''meta'');
return [].filter.call(info, function (val) {
if(val.name === ''description'') return val;
})[0].content;
}
Versión actualizada:
function getDesc() {
var desc = document.head.querySelector(''meta[name=description]'');
return desc ? desc.content : undefined;
}
function getMetaContentByName(name,content){
var content = (content==null)?''content'':content;
return document.querySelector("meta[name=''"+name+"'']").getAttribute(content);
}
Usado de esta manera:
getMetaContentByName("video");
El ejemplo en esta página:
getMetaContentByName("twitter:domain");