2011-01-12 14 views
22

मैं बस अपना वास्तविक एक्सएचटीएमएल सख्त 1.0 W3C Validator सेवा के साथ दस्तावेज़ मान्य .. और यह कहते हैं कि,एक्सएचटीएमएल सख्त 1.0 - लक्ष्य = "_ खाली" मान्य नहीं है?

<ul id="socialnetwork"> 
      <li><a href="http://www.twitter.com" target="_blank"></a></li> 
      <li><a href="http://www.flickr.com" target="_blank"></a></li> 
      <li><a href="http://www.xing.com" target="_blank"></a></li> 
      <li><a href="http://www.rss.com" target="_blank"></a></li> 
</ul> 

target = "_ blank" मान्य नहीं है .. लेकिन मैं तो एक नया लक्ष्य खाली की जरूरत है ब्राउज़र ब्राउज़र में खुल जाएगा, ताकि उपयोगकर्ता मुख्य पृष्ठ नहीं छोड़े।

मैं क्या कर सकता हूं? यह वैध क्यों नहीं है?

उत्तर

15

आप डब्ल्यू 3 सवाल जवाब की जाँच करने के लिए चाहते हो सकता है: http://www.w3.org/MarkUp/2004/xhtml-faq#target

क्यों लक्ष्य विशेषता एक्सएचटीएमएल 1.1 से हटा दिया गया था?

यह नहीं था। एक्सएचटीएमएल 1.0 तीन संस्करणों में आता है: सख्त, संक्रमणकालीन, और फ्रेमसेट। इनमें से सभी तीन जानबूझकर एचटीएमएल 4.01 के करीब जितना संभव हो सके थे क्योंकि एक्सएमएल अनुमति देगा। एक्सएचटीएमएल 1.1 एक्सएचटीएमएल 1.0 सख्त का एक अद्यतन संस्करण है, और एचटीएमएल सख्त के किसी भी संस्करण में कभी भी लक्षित विशेषता शामिल नहीं है। अन्य दो संस्करण, संक्रमणकालीन और फ्रेमसेट अपडेट नहीं किए गए थे, क्योंकि अपडेट करने के लिए कुछ भी नहीं था। यदि आप लक्ष्य विशेषता का उपयोग करना चाहते हैं, तो एक्सएचटीएमएल 1.0 संक्रमण का उपयोग करें।

+0

ठीक है तो मुझे सख्त ड्रॉप करना है .. अब संक्रमण के लिए इसका समय है। – Tomkay

+4

इस परिदृश्य में, लक्ष्य विशेषता के बिना, और जावास्क्रिप्ट के बिना, आप एक नए टैब में एक लिंक कैसे खोलते हैं? – user1886419

+0

कृपया इस तरह के अच्छे उपयोगी उत्तरों को हटाने का प्रयास न करें। भले ही आप SO के साथ किए जाते हैं, फिर भी वे दूसरों को लाभ देते हैं। – hvd

1

जबकि मैं यह नहीं कह सकता कि इस विशेषता को वर्कअराउंड के रूप में क्यों अमान्य माना जाता है, यदि आप अपनी साइट को एक्सएचटीएमएल सख्त के रूप में मान्य करना चाहते हैं तो आप जावास्क्रिप्ट के साथ यह विशेषता जोड़ सकते हैं।

5

मैं लक्ष्य विशेषता में जोड़कर सुझाव देता हूं। यह पहुँच कारणों की वजह से हटा दिया गया था, और मैं इसे पसंद नहीं जब पेजमुझे कैसे अपने ब्राउज़र टैग खुला के लिए फैसला करता है। बेशक, यदि आप चाहें तो ऐसा करने के लिए स्वतंत्र हैं। मैं तुम्हें एक JavaScript विधि कि डैरिन कि ऊपर उल्लेख किया है आप XHTML 1.0 स्ट्रिक्ट या एक्सएचटीएमएल 1.1 के रूप में मान्य करने के लिए अनुमति देता है दिखाएगा:

एचटीएमएल कोड:

<!-- Added link titles for better testing purposes --> 
<ul id="socialnetwork"> 
    <li><a href="http://www.twitter.com/" class="targetblank">Twitter</a></li> 
    <li><a href="http://www.flickr.com/" class="targetblank">Flickr</a></li> 
    <li><a href="http://www.xing.com/" class="targetblank">XING</a></li> 
    <li><a href="http://www.rss.com/" class="targetblank">RSS</a></li> 
</ul> 

जावा स्क्रिप्ट कोड:

window.onload = function() { 
    // Code if document.getElementByClassName() doesn't exist 
    if (document.getElementsByClassName == undefined) { 
     document.getElementsByClassName = function(className) { 
      var hasClassName = new RegExp("(?:^|\\s)" + className + "(?:$|\\s)"); 
      var allElements = document.getElementsByTagName("*"); 
      var results = []; 

      var element; 
      for (var i = 0; (element = allElements[i]) != null; i++) { 
       var elementClass = element.className; 
       if (elementClass && elementClass.indexOf(className) != -1 && hasClassName.test(elementClass)) 
        results.push(element); 
      } 

      return results; 
     } 
    } 

    var anchorList = document.getElementsByClassName('targetblank'); 
    for (var i in anchorList) { 
     anchorList[i].target = '_blank'; 
    } 
} 

बेशक, आप window.onload अगर आप पहले से ही इसे कहीं और शामिल छोड़ सकते हैं, लेकिन मैं इस तरह के JQuery के ०१२३०८०६३४५ के रूप में उपयोग (या किसी अन्य लोड समारोह उपयोग करने की अनुशंसा,) इसलिए पृष्ठ लोड होने पर जावास्क्रिप्ट लोड हो जाता है। अब, तुम सब करने की जरूरत है प्रत्येक लंगर लिंक "targetblank" के एक वर्ग देना है, और लिंक एक नए टैब में खुल जाना चाहिए।

3

इस स्थिति मैं एक सरल jQuery समाधान है कि यह एक्सएचटीएमएल साथ सत्यापित करता सख्त, और नए विंडो को प्रदर्शित करने की अनुमति देता है का उपयोग करें।

<a href="http://www.example.com" class="linkExternal">Example URL</a> 

<script type="text/javascript"> 
$(function(){ 
    $('a.linkExternal').on('click',function(e){ 
     e.preventDefault(); 
     window.open($(this).attr('href')); 
    }); 
}); 
0

इस प्रयास करें:

<a href="#" onclick="window.open('urlgoeshere');">Link</a> 
+3

2 मुद्दे; 1- href = '#' पृष्ठ के शीर्ष पर कूद जाएगा। 2- आपने एसईओ को मार डाला। –

9

सवाल आप खुद से पूछ चाहिए नहीं है कि किस तरह "नाकाम" के लिए सख्त प्रतिबंध है, लेकिन आप पहली जगह में एक्सएचटीएमएल सख्त 1.0 उपयोग करने के लिए क्यों करना चाहते हैं?

आपके मामले में मैं बस DTD के रूप में संक्रमणकालीन का प्रयोग करेंगे।बेशक आप एक विशिष्ट ऑपरेटिंग सिस्टम के लिए विकसित नहीं हो रहे हैं, उदाहरण के लिए कार सिस्टम, मोबाइल फोन या अधिक विदेशी उपकरणों में उदाहरण के लिए कई विंडो खोलने की अनुमति नहीं है। कौन सा है, बीटीडब्ल्यू, एचटीएमएल सख्त में लक्ष्य अनुपस्थित क्यों है।

लेकिन आप "सामान्य" उपयोग अपने दस्तावेज़ प्रकार के लिए विकसित करने के लिए है कि प्रतिबिंबित करना चाहिए लगते हैं और आप का उपयोग करना चाहिए के रूप में:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd"> 

भी why was target removed from xhtml चियर्स देखें जम्मू

-1

मैं इस

पसंद करते हैं
<a href="http://myurl.com" onclick="this.target='_blank'">Anchor text</a> 
0

एक्सएचटीएमएल STRICT में लक्ष्य का उपयोग करने का सबसे अच्छा तरीका है: onclick="target='_blank';"

<a href="http://botje.tnhteam.com/" onclick="target='_blank';">Botje is overal</a> 

उदाहरण: click the STRICT button at the bottom

आप _self या किसी अन्य लक्ष्य आप _blank बदल सकते हैं की जरूरत है, उदाहरण के लिए _self रहे हैं: onclick="target='_self';"

मुझे आशा है कि इस सवाल का जवाब आप में से कुछ के लिए उपयोगी है ...

+1

स्थिर सत्यापन को पारित करने के लिए विशेषता को हटाने से यह सही नहीं होता है। – Brad

+0

हाँ जब यह विशेषता हटा दी गई है तो वह मान्य होगा लेकिन वह एक नई विंडो या टैब में यूआरएल खोलना चाहता है, इसलिए _blank का उपयोग करने के लिए सबसे अच्छा विकल्प 'onclick = "target =' _ self 'का उपयोग करना है;" पृष्ठ को पाने के लिए मान्य करें और यह एसईओ को मारता नहीं है, 'href' का वैध मान है। 'Href' में कभी भी '#' का उपयोग न करें, मुझे लगता है कि यह एसईओ के लिए अच्छा नहीं है ... – jagb

+0

आपके पास 'एक्सएचटीएमएल 1.0 सख्त 'और *** पेजपेड_no_defer *** स्क्रिप्ट पेजपेड_no_defer =" "' ** मान्य नहीं है ** _XHTML 1.0 Strict_ – Kiquenet

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