আমার প্রয়োজনীয় তথ্যগুলি একটি মেটা ট্যাগে রয়েছে। আমি "content"
কখন মেটা ট্যাগের ডেটা অ্যাক্সেস করতে পারি property="video"
?
এইচটিএমএল:
<meta property="video" content="http://video.com/video33353.mp4" />
আমার প্রয়োজনীয় তথ্যগুলি একটি মেটা ট্যাগে রয়েছে। আমি "content"
কখন মেটা ট্যাগের ডেটা অ্যাক্সেস করতে পারি property="video"
?
এইচটিএমএল:
<meta property="video" content="http://video.com/video33353.mp4" />
উত্তর:
আপনি এটি ব্যবহার করতে পারেন:
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'));
document.querySelector("meta[property='og:url']").getAttribute('content')
const
/ let
সমর্থন করে .querySelector
!
অন্যান্য উত্তরগুলি সম্ভবত কৌশলটি করা উচিত, তবে এটি উত্তর সহজ এবং jQuery প্রয়োজন হয় না:
document.head.querySelector("[property~=video][content]").content;
মূল প্রশ্নটিতে একটি গুনযুক্ত একটি আরডিএফএ ট্যাগ ব্যবহার করা property=""
হয়েছে। সাধারণ এইচটিএমএল <meta name="" …>
ট্যাগগুলির জন্য আপনি এমন কিছু ব্যবহার করতে পারেন:
document.querySelector('meta[name="description"]').content
document.head.querySelector
আমাকে দিয়েছেন null
কিন্তু document.querySelector
পুরোপুরি কাজ করেছেন
[content]
নির্বাচককে অন্তর্ভুক্ত করে সেই ব্যতিক্রমটি প্রসারিত করে যেখানে কোনও ম্যাচিং ট্যাগের কোনও সামগ্রীর বৈশিষ্ট্যের অভাব রয়েছে। নোংরা ফলাফল পেতে আইএমও এটি আরও বোধগম্য করে তবে এটি আমার অনুমানকারী প্রয়োগকারীর পছন্দ অনুসারে।
একটি সহজ উপায় আছে:
document.getElementsByName('name of metatag')[0].getAttribute('content')
document.querySelector
সংস্করণ IE8 সব পথ কাজ করে, তাই এটা প্রচুর
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
এবং একটি চেষ্টা স্টেটমেন্ট মোড়কে দিয়েছি যাতে আমি ""
ত্রুটির ক্ষেত্রে ডিফল্টরূপে পেতে পারি ।
আপনি যদি JQuery ব্যবহার করেন তবে আপনি ব্যবহার করতে পারেন:
$("meta[property='video']").attr('content');
জ্যাকুরিতে আপনি এটি দিয়ে এটি অর্জন করতে পারেন:
$("meta[property='video']");
জাভাস্ক্রিপ্ট এ আপনি এটি অর্জন করতে পারেন:
document.getElementsByTagName('meta').item(property='video');
document.getElementsByTagName('meta')['video'].getAttribute('content');
<meta name="video" content="http://video.com/video33353.mp4" />
উপায় - [ 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
, এটি ভাল।
সহজ, তাই না?
document.head.querySelector("meta[property=video]").content
এই কোডটি আমার পক্ষে কাজ করে
<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/
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;
}
এখানে একটি ফাংশন যা কোনও মেটা ট্যাগের সামগ্রী ফেরত দেবে এবং ফলাফলটি স্মরণ করবে, ডিওএমের অপ্রয়োজনীয় জিজ্ঞাসা এড়ানো হবে।
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"
ফাংশনের আমার রূপ:
const getMetaValue = (name) => {
const element = document.querySelector(`meta[name="${name}"]`)
return element?.getAttribute('content')
}
আমি ব্যক্তিগতভাবে কেবলমাত্র সেগুলিকে একটি বস্তুর হ্যাশগুলিতে পেতে পছন্দ করি, তারপরে আমি এগুলি যে কোনও জায়গায় অ্যাক্সেস করতে পারি। এটি সহজেই একটি ইনজেক্টেবল ভেরিয়েবলে সেট করা যেতে পারে এবং তারপরে সমস্ত কিছু এটি থাকতে পারে এবং এটি কেবল একবারে ধরা পড়ে।
ফাংশন মোড়ানো দ্বারা এটি ওয়ান লাইনার হিসাবেও করা যেতে পারে।
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;
})();
এফওয়াইআই https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta গ্লোবাল বৈশিষ্ট্যগুলি বৈধ, যার অর্থ id
বৈশিষ্ট্যটি ব্যবহার করা যেতে পারেgetElementById
।
<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>
সমস্ত মেটা ট্যাগ পেতে আপনি যদি আরও সুদূরপ্রসারী সমাধানে আন্তরিক হন তবে আপনি এই টুকরা কোডটি ব্যবহার করতে পারেন
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());
যদি মেটা ট্যাগ হয়:
<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" />'
<meta>
একটিname
বৈশিষ্ট্য আছে বলে মনে করা হয় , নাproperty
। স্ট্যান্ডার্ড অ্যাট্রিবিউট ব্যবহার করে বিকাশকারীদের বেশিরভাগ উত্তরের দেওয়া কোডটি মানিয়ে নিতে হবে।