Как получить информацию из метатега с помощью JavaScript? - PullRequest
101 голосов
/ 23 сентября 2011

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

HTML:

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

Ответы [ 13 ]

0 голосов
/ 13 января 2019

FYI согласно https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta глобальные атрибуты действительны, что означает, что атрибут id может использоваться с getElementById.

0 голосов
/ 01 октября 2016

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

0 голосов
/ 29 апреля 2015

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

А вот расширенная версия, которая также запрашивает открытые теги графика и использует 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"
...