ejemplos content javascript greasemonkey

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");