Подтвердить что ты не робот

Как получить информацию из метатега с помощью JavaScript?

Информация, которая мне нужна, находится в метатеге. Как я могу получить доступ к данным "content" метатега, когда property="video"?

HTML:

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

Ответ 1

Вы можете использовать это:

function getMeta(metaName) {
  const metas = document.getElementsByTagName('meta');

  for (let i = 0; i < metas.length; i++) {
    if (metas[i].getAttribute('name') === metaName) {
      return metas[i].getAttribute('content');
    }
  }

  return '';
}

console.log(getMeta('video'));

Ответ 2

Другие ответы, вероятно, должны сработать, но этот проще и не требует jQuery:

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

Ответ 3

Здесь много трудного для чтения ответа. Один вкладыш здесь

document.querySelector("meta[property='og:image']").getAttribute("content");

Ответ 4

Существует более простой способ:

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

Ответ 5

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

Используется следующим образом:

getMetaContentByName("video");

Пример на этой странице:

getMetaContentByName("twitter:domain");

Ответ 6

Если вы используете JQuery, вы можете использовать:

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

Ответ 7

В JQuery вы можете добиться этого с помощью

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

В JavaScript вы можете достичь этого с помощью

document.getElementsByTagName('meta').item(property='video');

Ответ 8

Путь - [ 1 ]

function getMetaContent(property, name){
    return document.head.querySelector("["+property+"="+name+"]").content;
}
console.log(getMetaContent('name', 'csrf-token'));

Вы можете получить ошибку: Uncaught TypeError: Невозможно прочитать свойство 'getAttribute' из null


Путь - [ 2 ]

function getMetaContent(name){
    return document.getElementsByTagName('meta')[name].getAttribute("content");
}
console.log(getMetaContent('csrf-token'));

Вы можете получить ошибку: Uncaught TypeError: Невозможно прочитать свойство 'getAttribute' из null


Путь - [ 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'));

Вместо того, чтобы получить ошибку, вы получаете null, это хорошо.

Ответ 9

Этот код работает для меня

<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/

Ответ 10

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

Ответ 11

Здесь функция, которая вернет содержимое любого метатега и будет меморировать результат, избегая ненужного запроса 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 */

И здесь расширенная версия, которая также запрашивает открытые графические теги и использует Массив # некоторые:

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"

Ответ 12

Я лично предпочитаю просто получать их в одном хеше объекта, тогда я могу получить к ним доступ в любом месте. Это можно легко установить на инъекционную переменную, и тогда все может иметь ее, и она будет только однажды схвачена.

Обернув функцию, это также можно сделать как один лайнер.

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

Ответ 14

если метатег:

<meta name="url" content="www.google.com" />

JQuery будет:

const url = $('meta[name="url"]').attr('content'); // url = 'www.google.com'

JavaScript будет: (вернет весь HTML)

const metaHtml = document.getElementsByTagName('meta').url // metaHtml = '<meta name="url" content="www.google.com" />'