如何从JavaScript中获取元标记的信息?

我需要的信息是在一个元标记。 当property =“video”时,如何访问meta标签的“内容”数据?

HTML:

<meta property="video" content="http://video.com/video33353.mp4" /> 

你可以使用这个:

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

其他答案应该可以做到这一点,但这个更简单,不需要jQuery:

 document.head.querySelector("[property=video]").content; 

很多很难阅读的答案在这里。 一个class轮在这里

 document.querySelector("meta[property='og:image']").getAttribute("content"); 
 function getMetaContentByName(name,content){ var content = (content==null)?'content':content; return document.querySelector("meta[name='"+name+"']").getAttribute(content); } 

用这种方式:

 getMetaContentByName("video"); 

本页面上的示例:

 getMetaContentByName("twitter:domain"); 
 $("meta[property='video']").attr('content'); 

有一个更简单的方法:

 document.getElementsByName('name of metatag')[0].getAttribute('content') 

在JQuery中,你可以通过以下方式实现这一点:

 $("meta[property='video']"); 

在JavaScript中,你可以通过以下方式来实现

 document.getElementsByTagName('meta').item(property='video'); 
 function getDescription() { var info = document.getElementsByTagName('meta'); return [].filter.call(info, function (val) { if(val.name === 'description') return val; })[0].content; } 

更新版本:

 function getDesc() { var desc = document.head.querySelector('meta[name=description]'); return desc ? desc.content : undefined; } 

这段代码适用于我

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

示例小提琴: http : //jsfiddle.net/muthupandiant/ogfLwdwt/

这是一个函数,它将返回任何元标记的内容,并记忆结果,避免不必要的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 */ 

这里是一个扩展版本,也查询开放graphics标签 ,并使用数组#一些 :

 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" 

我个人更喜欢把它们放在一个对象哈希中,然后我可以在任何地方访问它们。 这可以很容易地设置为一个注射variables,然后一切都可以拥有它,它只抓住一次。

通过包装function,这也可以作为一个class轮完成。

 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; })();