2009-09-19 6 views
46

मैं एक एएसपी आवेदन और कोड, टेम्पलेट और फाइलों पर काम कर रहा हूँ एक तरीका है कि मुझे बॉडी टैग के बाहर कुछ भी परिवर्तन करने के लिए अनुमति नहीं है में व्यवस्थित होते हैं। इसलिए मैं शरीर के अंदर मेटा टैग सम्मिलित के बारे में सोच रहा हूँ - इस तरह:क्या होता है यदि दस्तावेज़ निकाय में मेटा टैग मौजूद हैं?

<!-- FEW ASP INCLUDES --> 
<html> 
    <head> 
    <!-- FALLBACK TITLE AND DESCRIPTION --> 
    <title>Default Title</title> 
    <meta name="description" content="Default Description"> 
</head> 
<body> 
    <!-- SOME HTML MARKUP --> 
    <div class="dynamic-content"> 
     <!-- InstanceBeginEditable name="dynamic-content" --> 
     <!-- THIS IS WHERE I CAN WRITE ASP CODE --> 
     <title><%= Page.Meta.GetTitle(yada, yada) %></title> 
     <meta name="description" content="<%= Page.Meta.GetDescription(yada, yada) %>"> 
     <!-- InstanceEndEditable --> 
    </div> 
    <!-- SOME MORE HTML MARKUP --> 
</body> 
</html> 

मैं सोच रहा हूँ कितना अच्छा यह एक HTML दस्तावेज़ के शरीर के अंदर मेटा टैग कर देना है। यह कैसे प्रभावित करता है:

  1. खोज इंजन
  2. ब्राउज़रों

उत्तर

37

यह HTML4 के अनुसार पाठ्यक्रम अमान्य की है .01। मेटा टैग only allowed within HEAD (बस, कहें, TITLE) हैं इसलिए इसे एक बॉडी में डालकर, आप अनिवार्य रूप से एक अवैध मार्कअप बना रहे हैं।

सरसरी परीक्षण से, ऐसा लगता है कि कुछ ब्राउज़रों (जैसे Firefox 3.5 और सफारी 4) वास्तव में जब एक दस्तावेज पेड़ बनाने सिर में इन तत्वों डाल दिया। यह बहुत ही आश्चर्यजनक नहीं है: ब्राउज़र को सहन करने और सभी प्रकार के टूटे मार्कअप की व्याख्या करने की कोशिश करने के लिए जाना जाता है।

होने के कारण अवैध मार्कअप शायद ही कभी एक अच्छा विचार है। ब्राउज़र द्वारा गैर-मानक हैंडलिंग से कई हार्ड-टू-पिन प्रतिपादन (और व्यवहारिक) असंगतता हो सकती है। ब्राउज़र अनुमान पर भरोसा करने के बजाय, मानक का पालन करना सबसे अच्छा है।

मुझे नहीं पता कि खोज इंजन इस तरह के टैग सूप पर कैसे प्रतिक्रिया करते हैं, लेकिन मुझे पता लगाने के लिए प्रयोग करने का जोखिम नहीं होगा :) शायद वे केवल कुछ जानकारी के लिए हेड टैग पार्स करते हैं और आपके बॉडी-निहित टैग को पूरी तरह से छोड़ देंगे। या हो सकता है कि वे इन दुर्भावनापूर्ण जुआ प्रयासों और ब्लैक-लिस्ट पेजों जैसे मार्कअप वाले मानते हैं। कौन जाने।

लब्बोलुआब यह है - यह जब भी संभव हो बचें।

+2

श्वास, मैं सभी कोड फिर से व्यवस्थित कर दूंगा। कोई भी सुझाव जो इस प्रक्रिया को कम दर्दनाक बनाने में मदद करेगा, उसकी सराहना की जाएगी। –

+32

यदि आप एचटीएमएल 5 ** का उपयोग कर रहे हैं तो इसे '' टैग के अंदर ' 'टैग का उपयोग करने की अनुमति है जब तक कि' itemprop' विशेषता मौजूद न हो। [Spec] देखें (http://www.whatwg.org/specs/web-apps/current-work/multipage/semantics.html#the-meta-element)। – Husky

+1

इसे spec में नहीं ढूंढ सकता है लेकिन w3.org validator भी html5 –

7

मैं यह कर नहीं होगा। ऐसा नहीं है कि वे टैग कहां जाते हैं, और खोज इंजन इसे स्पैमिंग के रूप में देख सकते हैं। यदि आप मास्टर पेज को पुनर्गठित कर सकते हैं तो आप हमेशा हेड सेक्शन में कंटेंट प्लेसहोल्डर जोड़ सकते हैं। मैं यह तुच्छता से किया है के साथ:

<asp:ContentPlaceHolder ID="HeadTags" runat="server" /> 

इस तरह से आप जोड़ सकते हैं जो कुछ भी सामग्री आप अपने पृष्ठ पर वापस शीर्ष अनुभाग में पसंद:

<asp:Content ID="Whatever" ContentPlaceHolderID="HeadTags" runat="server" > 

    <meta ... > 

</asp:Content> 
+0

क्लासिक एएसपी समाधान नहीं है हालांकि – AnthonyWJones

+1

नहीं, शायद नहीं। लेकिन क्रोधित जवाब के रूप में यह न केवल उत्पादन में काम करता है, इसमें चार वोट हैं। –

+0

शास्त्रीय एएसपी समाधान ... यह सवाल का सार है! –

27

जब भी संभव हो तो जब यह DOCTYPE इसे मना करता है तो इससे बचने के लिए नीचे की रेखा है। मुझे लगता है कि यह निश्चित रूप से एचटीएमएल 5 में अनुमत है और microdata का उपयोग कर मामलों में बहुत उपयोगी है। उदाहरण: http://schema.org/Event

+0

W3S का उपयोग करते समय संपत्ति (rdfa-lite) विशेषताओं के साथ मेटा टैग को अनुमति देता है, जो कि 'हमेशा '' में होना चाहिए: http: // www .w3schools.com/टैग/tag_meta.asp लेकिन मुझे यह नहीं लगता कि एचटीएमएल 5 spec में सच है: https://www.w3.org/TR/html5/document-metadata.html#the-meta-element। फिर भी मैं उन्हें उसी कारण से उपयोग करता हूं: मेटाडेटा (ब्लॉग पोस्ट करने के लिए) जोड़ने के लिए। लगता है कि खुशी से पर्याप्त रूप से मान्य है। –

+0

... हालांकि मुझे अभी एहसास हुआ है कि मुझे एक्सएचटीएमएल का उपयोग करने के लिए मजबूर किया गया है, इसलिए मुझे वास्तव में पता नहीं है। मैं निश्चित रूप से सादा HTML5 पसंद करते हैं! –

+0

यदि एचटीएमएल 5 टैग 'टैग' के भीतर टैग 'x' की अनुमति देता है, तो एक्सएचटीएमएल 5 टैग 'y' टैग' y' के भीतर भी अनुमति देता है। बड़ा अंतर यह है कि एक्सएचटीएमएल 5 मान्य एक्सएमएल (यानी कोई खुला टैग नहीं होना चाहिए), जिससे एचटीएमएल की तुलना में पार्स करना आसान हो जाता है। – RavuAlHemio

2

मैं आप इसे उपयोग करने के लिए कह सकते हैं कि। मुझे विभिन्न वेबपृष्ठों पर शरीर के अंदर मेटा टैग मिले, और वे शीर्ष 10 खोजों में से एक पर (Google पर) हैं। यह दिखाता है कि, कम से कम मेरे लिए, अगर आपने इस दृष्टिकोण का उपयोग किया है तो खोज इंजन को कोई फर्क नहीं पड़ता।

आप आगे जाना चाहिए हो, तो चारों ओर कोई दूसरा रास्ता नहीं।

5

अपने उद्देश्य खोज इंजन अनुकूलन है, तो यह शायद एक अच्छा विचार मानकों का पालन और <head> में आपके सभी मेटा टैग कर देना है। हालांकि, जहां तक ​​ब्राउज़र व्यवहार होता है, यदि आप <meta> टैग्स को अपने <body> में रखते हैं तो वे अभी भी कार्य करेंगे।मैंने अन्यथा मानक-अनुपालन दस्तावेज़ में एकाधिक <meta http-equiv="refresh"/> टैग और <title> टैग का उपयोग करके इसका परीक्षण करने का निर्णय लिया।

मेरी परीक्षणों के परिणाम:

फ़ायरफ़ॉक्स 18, Firefox 3.6, फ़ायरफ़ॉक्स मोबाइल, क्रोम 24, मोबाइल के लिए Chrome, ओपेरा 12, IE6, IE8, IE10:

  • के सभी <meta> टैग शरीर संसाधित किया गया था।
  • दस्तावेज़ में पहला <title> टैग संसाधित किया गया था, भले ही यह शरीर में था। बाद में <title> टैग अनदेखा कर दिए गए।
  • सबसे पुराना मेटा रीफ्रेश निर्देश प्रभावी हुआ, जिसका अर्थ है कि दोनों संसाधित किए गए थे।

IE9: ऊपर के रूप में

  • ही, शरीर में सभी <title> टैग को छोड़कर नजरअंदाज कर दिया गया।
  • IE9 मानक मोड में IE10 भी इस तरह व्यवहार करता है।
  • आईई 8 मानक मोड में आईई 9 आईई 8 के समान व्यवहार करता है, जिससे शरीर में 1 <title> टैग की अनुमति मिलती है।

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

+0

कृपया ध्यान दें कि आपको सचमुच प्रदर्शित करने के लिए बैकटिक्स के साथ HTML कोड बिट्स को घेरना होगा। –

3

कुछ मेटा टैग जो खोज इंजन के लिए हैं, पृष्ठ के मुख्य भाग में खोज इंजन द्वारा सम्मानित नहीं किए जाएंगे।

उदाहरण के लिए Google कहता है कि यह पृष्ठ के शरीर में एक rel = canonical का सम्मान नहीं करेगा, बल्कि केवल पृष्ठ के प्रमुख में। Here is what Matt Cutts from Google says:

हम शरीर में rel = canonical की अनुमति नहीं है (क्योंकि जैसा कि मैंने उल्लेख किया है, लोगों की है कि स्पैम होता है),

0

मैं शरीर में कुछ मेटा टैग डाल दिया है, लेकिन वह यह है कि माइक्रोडाटा प्रौद्योगिकी के कारण। जब मेरे पास जानकारी के साथ नियमित तत्व नहीं है, तो मुझे schema.org शब्दावली के अनुसार ऑब्जेक्ट का वर्णन करने की आवश्यकता है, मैंने इस सामग्री के साथ मेटा टैग सेट किया है। मैं प्रदर्शन के साथ एक तत्व सेट करने के लिए, इस तरह से ऐसा करना पसंद करता हूं: कोई नहीं। डिस्प्ले के साथ रास्ता: जहां तक ​​मुझे पता है, इसके बजाय कोई भी अधिक Google समस्याएं पैदा नहीं कर सकता है। मैं मानता हूं कि यह सबसे अच्छा अभ्यास नहीं है, लेकिन जब मैं अपना दस्तावेज़ (HTML5) मान्य करता हूं तो मैं शून्य त्रुटियों के साथ सत्यापन पास करता हूं। मैंने कई परियोजनाओं के लिए यह चाल भी की है और उनमें से कोई भी Google या अन्य खोज इंजन में समस्या नहीं है। यहां तक ​​कि microdata खोज इंजन रैंकिंग में सुधार। मुझे नहीं पता कि आप शरीर में इस मेटा टैग के साथ वास्तव में क्या करना चाहते हैं, क्योंकि मैंने आपके कोड में कोई माइक्रोडैटा नहीं देखा है। अगर आपको इस दृष्टिकोण के लिए इसकी ज़रूरत है तो मुझे लगता है कि यह ठीक है, लेकिन अन्य मामलों में मेटा तत्वों को मुख्य अनुभाग में होना चाहिए!

0

वेबसाइटों में मेटा विवरण टैग रखना अवैध मार्कअप है, हालांकि यह एक बड़ी समस्या नहीं है क्योंकि खोज इंजन नियमित रूप से टैग को नियमित रूप से ढूंढ सकते हैं।मेरी वेबसाइट से करता है, मेरे एचटीएमएल पर एक नजर है

http://cameras.specced.co.uk/compare/268/Canon_EOS_200D

मेटा वेबसाइट शरीर हालांकि यह गूगल और पेज मेटा वर्णन द्वारा अनुक्रमित किया गया है गूगल खोज में क्लिक हालांकि पाठ के रूप में स्थापित किया गया है परिणाम है।

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