通过选择`property`属性获取`Meta`属性`content`

问题描述 投票:0回答:3

在 jQuery 中你可以这样做:

$("meta[property='fb:app_id']").attr("content");

这将为您提供带有

content
属性“fb:app_id”的
meta
标签中的
property
属性值。

我怎样才能用简单的Javascript做到这一点?

提前谢谢您。 :-)

肯尼思

javascript jquery meta-tags
3个回答
15
投票
document.querySelector('meta[property~="fb:app_id"][content]').content

15
投票

恐怕不如 JQuery 优雅......

var metaTags=document.getElementsByTagName("meta");

var fbAppIdContent = "";
for (var i = 0; i < metaTags.length; i++) {
    if (metaTags[i].getAttribute("property") == "fb:app_id") {
        fbAppIdContent = metaTags[i].getAttribute("content");
        break;
    }
}

console.log(fbAppIdContent);

3
投票

注意:有些使用

property
属性:

<meta property="fb:app_id" content="13181996">

而其他人则使用

name
属性:

 <meta name="fb:app_id" content="1234567890">

我使用以下方法从两个变体中获取值:

var appId = (function(c) { for (var a = document.getElementsByTagName("meta"), b = 0;b < a.length;b++) {
  if (c == a[b].name || c == a[b].getAttribute("property")) { return a[b].content; } } return false;
})("fb:app_id");

console.log(appId); //(bool)false if meta tag "fb:app_id" not exists.

同样的方法也可以用于其他所有元标记 - 只需更改闭包函数上的输入值(例如从“fb:app_id”到“description”)。
**编辑:** 或者作为更通用的函数:
function getContentByMetaTagName(c) {
  for (var b = document.getElementsByTagName("meta"), a = 0; a < b.length; a++) {
    if (c == b[a].name || c == b[a].getAttribute("property")) { return b[a].content; }
  } return false;
}

console.log(getContentByMetaTagName("og:title"));
© www.soinside.com 2019 - 2024. All rights reserved.