আমি কীভাবে জাভাস্ক্রিপ্টের একটি মেটা ট্যাগ থেকে তথ্য পেতে পারি?


136

আমার প্রয়োজনীয় তথ্যগুলি একটি মেটা ট্যাগে রয়েছে। আমি "content"কখন মেটা ট্যাগের ডেটা অ্যাক্সেস করতে পারি property="video"?

এইচটিএমএল:

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

2
নোট যে <meta>একটি nameবৈশিষ্ট্য আছে বলে মনে করা হয় , না property। স্ট্যান্ডার্ড অ্যাট্রিবিউট ব্যবহার করে বিকাশকারীদের বেশিরভাগ উত্তরের দেওয়া কোডটি মানিয়ে নিতে হবে।
জেনস বনম্ন

উত্তর:


128

আপনি এটি ব্যবহার করতে পারেন:

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

6
আপনি যা চান তা হ'ল তাদের স্থানীয়ভাবে সংজ্ঞায়িত করা যাক;)
২১

22
আপনি যদি ক্যোয়ারী নির্বাচন করতে পারেন, আপনি এই জাতীয় কিছু করতে পারেন: document.querySelector("meta[property='og:url']").getAttribute('content')
নিশচল গৌতম

3
আমি মনে করি এই উত্তরটি আরও প্রাসঙ্গিক নয় এবং আপনার সত্যিকারের
স্ট্যাকওভারফ্লো.com/

এই উত্তরটি এড়িয়ে যান। এটি ওপি-র [স্বীকারোক্তিযুক্ত বিজোড়] ক্ষেত্রে কাজ করে না কারণ এটি "সম্পত্তি" বৈশিষ্ট্যের চেয়ে "নাম" দেখায়। এবং এর বর্তমান অবস্থায় এটি অত্যধিক জটিল তবে কোনও পিছনের সামঞ্জস্যতার সুবিধা ছাড়াই - কোনও ব্রাউজার যা সমর্থন করে const/ letসমর্থন করে .querySelector!
natevw

শুধুমাত্র একটি মেটা অ্যাট্রিবিউটের জন্য, কেন একাধিকবার লুপ করবেন? এটিতে কয়েকশ মেটা ট্যাগ থাকতে পারে বা একাধিকবার এটি মেটা মান পেতে হতে পারে।
এসকেআর

212

অন্যান্য উত্তরগুলি সম্ভবত কৌশলটি করা উচিত, তবে এটি উত্তর সহজ এবং jQuery প্রয়োজন হয় না:

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

মূল প্রশ্নটিতে একটি গুনযুক্ত একটি আরডিএফএ ট্যাগ ব্যবহার করা property=""হয়েছে। সাধারণ এইচটিএমএল <meta name="" …>ট্যাগগুলির জন্য আপনি এমন কিছু ব্যবহার করতে পারেন:

document.querySelector('meta[name="description"]').content

16
সরল, মার্জিত এবং এর কোনও নির্ভরতা নেই। গৃহীত উত্তর
ইমোর

6
যদিও আমার মেটা <হেড> ট্যাগে রয়েছে, document.head.querySelectorআমাকে দিয়েছেন nullকিন্তু document.querySelectorপুরোপুরি কাজ করেছেন
রবিন ভ্যান বালেন

10
এটি ওজি ট্যাগের সাথে কাজ করার জন্য এটিতে এই জাতীয় উদ্ধৃতি যুক্ত করুন: var শিরোনাম = ডকুমেন্ট.হেড.কোয়ারী নির্বাচনকারী ('[সম্পত্তি = "ওগ: শিরোনাম"]');
আরপো

1
খুশী হলাম। "[বিষয়বস্তু]" অংশটি কোন উদ্দেশ্যে কাজ করে? এটি ছাড়া, আমি মেটা এলিমেন্টটিও পাই।
সিটিকিড

1
@ সিটিকিড এটি কিছুটা অতিরিক্তহীন বলে মনে হচ্ছে। স্নিপেট যদি ট্যাগটির "সম্পত্তি" দ্বারা পাওয়া না যায় তবে সর্বদা একটি টাইপরর ফেলে দেয়। [content]নির্বাচককে অন্তর্ভুক্ত করে সেই ব্যতিক্রমটি প্রসারিত করে যেখানে কোনও ম্যাচিং ট্যাগের কোনও সামগ্রীর বৈশিষ্ট্যের অভাব রয়েছে। নোংরা ফলাফল পেতে আইএমও এটি আরও বোধগম্য করে তবে এটি আমার অনুমানকারী প্রয়োগকারীর পছন্দ অনুসারে।
নাতিভ

93

এখানে উত্তর পড়া খুব কঠিন। এখানে একটি লাইনার

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

23

একটি সহজ উপায় আছে:

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

এটি কমপক্ষে IE11 এ ফিরে কাজ করে যা এটি আরও দরকারী করে তোলে।
rprez

1
document.querySelectorসংস্করণ IE8 সব পথ কাজ করে, তাই এটা প্রচুর
fregante

এই একটি প্রশংসনীয় ভাল উপায় স্বাভাবিকভাবে কিন্তু মনে রাখবেন যে ওপি RDFa "সম্পত্তি" অ্যাট্রিবিউট আরো মৌলিক "নাম" অ্যাট্রিবিউট (পরিবর্তে ব্যবহার করা হয় stackoverflow.com/questions/22350105/... )
natevw

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

এইভাবে ব্যবহৃত:

getMetaContentByName("video");

এই পৃষ্ঠায় উদাহরণ:

getMetaContentByName("twitter:domain");

আমি এই খোশগল্প ব্যবহৃত হয়েছে, কিন্তু একটি নির্দিষ্ট পৃষ্ঠায় একটি পেয়ে ছিল type errorহিসাবে undefinedকারণ মেটা ট্যাগটি নিজেই অনুপস্থিত ছিল। আমি সমাধান করেছি যে একটি ভেরিয়েবল বরাদ্দ করে document.queryselectorএবং একটি চেষ্টা স্টেটমেন্ট মোড়কে দিয়েছি যাতে আমি ""ত্রুটির ক্ষেত্রে ডিফল্টরূপে পেতে পারি ।
বিজিএম কোডার

ফাংশন getMetaContentByName (নাম, সামগ্রী) content var সামগ্রী = (বিষয়বস্তু == নাল)? 'সামগ্রী': সামগ্রী; {ডকুমেন্টটি ফেরত চেষ্টা করুন qu } ক্যাচ {রিটার্ন নাল; }}
devMariusz

15

আপনি যদি JQuery ব্যবহার করেন তবে আপনি ব্যবহার করতে পারেন:

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

9
ধরে নিচ্ছি jquery, বা কিছু লাইব্রেরি; জাভাস্ক্রিপ্ট নয়
ILMostro_7

12

জ্যাকুরিতে আপনি এটি দিয়ে এটি অর্জন করতে পারেন:

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

জাভাস্ক্রিপ্ট এ আপনি এটি অর্জন করতে পারেন:

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

10
এটি কাজ করে বলে মনে হচ্ছে (ক্রোমে document.getElementsByTagName('meta')['video'].getAttribute('content');<meta name="video" content="http://video.com/video33353.mp4" />
অন্ততপক্ষে

1
@ সামদেভ, এটি এখানকার সমস্ত সমাধানের মধ্যে সবচেয়ে পরিষ্কার। এটি আপনার নিজের উত্তর হিসাবে জমা দিন। :)
ফ্রেন্ড্রয়েড

1
@ সামাদেভ, এছাড়াও আপনার .getAttribute ('বিষয়বস্তু') এর দরকার নেই, আপনি কেবল পারেন। কনটেন্ট: ডকুমেন্ট.সেটমেন্টস বিট্যাগনেম ('মেটা') ['ভিডিও']। সামগ্রী। আমি কেবল পরীক্ষা করেছি, এটি ফায়ারফক্সেও ঠিক কাজ করে।
ফ্রেন্ড্রয়েড

আমাকে এখন অবহিত করা হয়েছে যে এটি সাফারিটিতে কাজ করে না। ধুর! ছাই.
ফ্রেন্ড্রয়েড

4

উপায় - [ 1 ]

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

আপনি ত্রুটি পেতে পারেন: আনকচড টাইপ এরির: নাল এর সম্পত্তি 'getAttribute' পড়তে পারে না


উপায় - []

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

আপনি ত্রুটি পেতে পারেন: আনকচড টাইপ এরির: নাল এর সম্পত্তি 'getAttribute' পড়তে পারে না


উপায় - [ 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, এটি ভাল।



2

এই কোডটি আমার পক্ষে কাজ করে

<meta name="text" property="text" content="This is text" />
<meta name="video" property="text" content="http://video.com/video33353.mp4" />

জাতীয়

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/


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

1

এখানে একটি ফাংশন যা কোনও মেটা ট্যাগের সামগ্রী ফেরত দেবে এবং ফলাফলটি স্মরণ করবে, ডিওএমের অপ্রয়োজনীয় জিজ্ঞাসা এড়ানো হবে।

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"


0

আমি ব্যক্তিগতভাবে কেবলমাত্র সেগুলিকে একটি বস্তুর হ্যাশগুলিতে পেতে পছন্দ করি, তারপরে আমি এগুলি যে কোনও জায়গায় অ্যাক্সেস করতে পারি। এটি সহজেই একটি ইনজেক্টেবল ভেরিয়েবলে সেট করা যেতে পারে এবং তারপরে সমস্ত কিছু এটি থাকতে পারে এবং এটি কেবল একবারে ধরা পড়ে।

ফাংশন মোড়ানো দ্বারা এটি ওয়ান লাইনার হিসাবেও করা যেতে পারে।

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


0
<html>
<head>
<meta property="video" content="http://video.com/video33353.mp4" />
<meta name="video" content="http://video.com/video33353.mp4" />
</head>
<body>

<script>
var meta = document.getElementsByTagName("meta");
    size = meta.length;

for(var i=0; i<size; i++) {
    if (meta[i].getAttribute("property") === "video") {
        alert(meta[i].getAttribute("content"));
    }
}
meta = document.getElementsByTagName("meta")["video"].getAttribute("content");
alert(meta);
</script>
</body>
</html>

ডেমো


0

সমস্ত মেটা ট্যাগ পেতে আপনি যদি আরও সুদূরপ্রসারী সমাধানে আন্তরিক হন তবে আপনি এই টুকরা কোডটি ব্যবহার করতে পারেন

function getAllMetas() {
    var metas = document.getElementsByTagName('meta');
    var summary = [];
    Array.from(metas)
        .forEach((meta) => {
            var tempsum = {};
            var attributes = meta.getAttributeNames();
            attributes.forEach(function(attribute) {
                tempsum[attribute] = meta.getAttribute(attribute);
            });
            summary.push(tempsum);
        });
    return summary;
}

// usage
console.log(getAllMetas());

-2

যদি মেটা ট্যাগ হয়:

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

JQuery হবে:

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

জাভাস্ক্রিপ্টটি হবে: (এটি পুরো এইচটিএমএল ফিরিয়ে দেবে)

const metaHtml = document.getElementsByTagName('meta').url // metaHtml = '<meta name="url" content="www.google.com" />'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.