2010-05-14 12 views
12

संभव डुप्लिकेट:
Is it possible to use javascript to change the meta-tags of the page?मेटा टैग सेट करने के लिए jQuery का उपयोग कर कोई समस्या हो रही महत्व देता

मैं jQuery का उपयोग कर मेटा टैग सेट करने के लिए कोशिश कर रहा हूँ (जवाब न दें कि इस करता ' खोज इंजन blah-blah-blah के बाद से समझ में नहीं आता ... मैं तीसरे पक्ष जावास्क्रिप्ट कार्यों का आह्वान कर रहा हूं जो इन वैल्यू की जांच करते हैं, जैसे ट्वीटमेम और फेसबुक)।

अगर मैं का उपयोग करें:

$('meta[name=some-name]').attr('content', 'some value'); 

यह एक मौजूदा मेटा टैग का मान सेट करने के लिए काम करता है, लेकिन अगर इस तरह के एक नामित एक अस्तित्व में नहीं है एक मेटा टैग नहीं बनाता है।

आप इस के साथ अंतर्दृष्टि या अनुभव है, तो जवाब दें ...

+0

टैग बनाने के लिए आप किस jQuery कोड का उपयोग कर रहे हैं? – Luke

उत्तर

12

आप ऐसा कर सकते हैं, नहीं साफ है, लेकिन तुम क्या करने की कोशिश कर रहे हैं बहुत अजीब है तो वहाँ एक शानदार तरीका को संभालने के लिए नहीं है यह:

var mt = $('meta[name=some-name]'); 
mt = mt.length ? mt : $('<meta name="some-name" />').appendTo('head'); 
mt.attr('content', 'some value'); 

वहाँ चेकों .length, जो 0 या false है अगर नहीं मिला, यदि यह मामला हम तत्व बना सकते हैं और सिर से संलग्न है, चाहे वह जोड़ा गया है या मूल रूप से पाया जाता है, mt में सशर्त अभिव्यक्ति उस नाम के साथ अब <meta> पर सेट है, और आप attrib सेट कर सकते हैं उटे।

+0

कोड निक के लिए धन्यवाद। मैं जो कर रहा हूं वह अजीब लग सकता है, लेकिन यह 100% क्लाइंट-साइड ऐप है और जैसे उपयोगकर्ता चीजें करता है, मेटा टैग के मूल्य को वर्तमान स्थिति को प्रतिबिंबित करने के लिए बदलने की आवश्यकता है। – Zhami

+0

नमस्ते, यह नहीं होना चाहिए: mt.attr ('कुछ नाम', 'कुछ मूल्य'); –

+1

@Andresch - नहीं, हम 'सामग्री =' '' टैग के कुछ मूल्य "विशेषता" सेट कर रहे हैं, यह उस तत्व की एक विशिष्ट विशेषता है ... आप यहां इसके बारे में अधिक पढ़ सकते हैं: http: // www .w3.org/TR/html4/struct/global.html # h-7.4.4.2 –

6

निक के कोड का लाभ उठाने के बाद, मैंने मेटा टैग सेटिंग करने के लिए एक फ़ंक्शन बनाया, यदि आवश्यक हो तो बनाना। इस किसी को उपयोग की होना चाहिए ...

function setOrCreateMetaTag(metaName, name, value) { 
     var t = 'meta['+metaName+'='+name+']'; 
     var mt = $(t); 
     if (mt.length === 0) { 
      t = '<meta '+metaName+'="'+name+'" />'; 
      mt = $(t).appendTo('head'); 
     } 
     mt.attr('content', value); 
    } 

metaName सबसे अधिक बार ग्रहण किया जा सकता है होना करने के लिए "नाम" लेकिन मैं यह भी "संपत्ति" स्थापित करने के लिए हो रहा है और साथ ही, इसलिए समारोह एक मेटा मेटा संभाल बनाया -name।

+0

क्या मैं 'mt' वापस करने के लिए फ़ंक्शन को बदलने का सुझाव दे सकता हूं? आप भी इस पर अन्य कार्रवाइयां करना चाहेंगे। – nickf

+0

आह, निश्चित रूप से चेनिंग। पैटर्न की याद दिलाने के लिए धन्यवाद! – Zhami

6

मैं बस आईओएस पर थोड़ा सा प्रयोग कर रहा था। ज़ूमिंग

$('<meta>', { 
name: 'viewport', 
content: 'width=device-width, minimum-scale=1, maximum-scale=1' 
}).appendTo('head'); 

लेकिन यह निकाला जा रहा है, पुन: सक्षम नहीं किया::

$('meta[name=viewport]').remove(); 

लेकिन अधिलेखन यह पता चला कि यह संभव था गतिशील तो जैसे iOS पर जूमिंग को रोकने के लिए एक मेटा टैग सेट करने के लिए मेटा टैग:

$('meta[name=viewport]').attr(
'content', 
'width=980, minimum-scale=0.25, maximum-scale=1.6' 
); 

इसके डिफ़ॉल्ट मानों के साथ।

+0

मुझे विश्वास है कि पिछले कोड ब्लॉक की पहली पंक्ति होना चाहिए:। /* $ ('मेटा [नाम = व्यूपोर्ट]') attr (*/ मैं एक जोड़ा ' – KatieK

+0

@KatieK फिक्स्ड, धन्यवाद।! – Matijs

संबंधित मुद्दे