जब किसी लिंक में एक पाउंड "#" चिन्ह होता है तो वह क्या होता है


93

मैंने कुछ साइटों का निरीक्षण किया है और उनके पास url में एक पाउंड (#) चिन्ह है। यह क्या करता है?

 <a href="#" >Link name</a>

जवाबों:


105

यह एक "टुकड़ा" या "लंगर नाम" है। आप किसी दस्तावेज़ के भाग से लिंक करने के लिए उपयोग कर सकते हैं । आमतौर पर जब आप किसी पृष्ठ से लिंक करते हैं, तो ब्राउज़र उसे पृष्ठ के शीर्ष पर खोलता है। लेकिन आप किसी अनुभाग को आधे-अधूरे तरीके से लिंक करते हैं, आप उस शीर्षक (या जो भी) से लिंक करने के लिए टुकड़े का उपयोग कर सकते हैं।

यदि <a name="whatever"/>पृष्ठ के भीतर कोई टैग नहीं है , तो ब्राउज़र बस पृष्ठ के शीर्ष पर लिंक करेगा। यदि टुकड़ा खाली है, तो यह केवल पृष्ठ के शीर्ष पर भी लिंक करेगा।

केवल एक खंड के लिए <a href="#">Link name</a>, फिर वह वर्तमान पृष्ठ के शीर्ष पर एक लिंक है ।

आप अक्सर जावास्क्रिप्ट के साथ संयोजन में उपयोग किए जाने वाले लिंक को देखते हैं। मानकों के अनुरूप HTML के लिए एक hrefविशेषता की आवश्यकता होती है , लेकिन यदि आप जावास्क्रिप्ट के साथ अनुरोध को संभालने की योजना बना रहे हैं तो "#" एक उचित स्थान धारक के रूप में कार्य करता है।


1
+1 यद्यपि आधिकारिक शब्द एक URL टुकड़ा है, "हैश संदर्भ" नहीं: w3.org/TR/WD-html40-970708/htmlweb.html#h-4.1.1
जेसन हॉल

हाँ, मैंने इसे अपने उत्तर में "टुकड़े" में बदल दिया, क्योंकि यही वह है जो ज्यादातर लोग उपयोग करते हैं। मुझे कभी नहीं पता था कि इसका "आधिकारिक" नाम था :)
डीन हार्डिंग

2
क्यों ब्राउज़र इसे 'पेज के ऊपर जाएं' के रूप में मानते हैं: तकनीकी रूप से, आपने पृष्ठ को बदल दिया है। लिंक पर क्लिक करने के बाद, आप देखेंगे कि पता बार में URL में # वास्तव में जोड़ा गया है, और यदि आप बैक बटन पर क्लिक करते हैं, तो यह आपको फिर से हटा देगा। मैं यह नहीं कहूंगा कि यह दस्तावेज़ का एक हिस्सा है, दस्तावेज़ के अंदर किसी स्थान के लिए अधिक लिंक। अन्यथा, मूल रूप से वही चीज जो मैं टाइप कर रहा था ...
एनिमेशन

# के साथ समाप्त होने वाले URI को जेनेरिक सिंटैक्स द्वारा अनुमति दी जाती है और इसे एक प्रकार का खाली टुकड़ा माना जा सकता है। MIME दस्तावेज़ प्रकारों में जैसे कि टेक्स्ट / html या कोई XML प्रकार, इस पहचान योग्य कानूनी निर्माण से मेल खाने के लिए खाली पहचानकर्ताओं की अनुमति नहीं है। वेब ब्राउज़र आमतौर पर दस्तावेज़ के शीर्ष को एक खाली टुकड़े के लिए प्रदर्शित करते हैं। - en.wikipedia.org/wiki/Fragment_identifier
IcyBrk

इसके अलावा द्वारा "ऐसी कोई प्रतिनिधित्व मौजूद है, तो टुकड़ा के शब्दों अज्ञात माना जाता है और प्रभावी रूप से स्वेच्छापूर्ण कर रहे हैं।" Rfc3986 से ( tools.ietf.org/html/rfc3986#page-24 )
IcyBrk

23

... बस कुछ अतिरिक्त उपयोगी सुझाव जोड़ने के लिए।

आप इसे document.location.hashजावास्क्रिप्ट में एक्सेस और बदल सकते हैं ।

यह एक नामित लंगर (उदाहरण के लिए <a name="top"></a>) या एक संबंधित आईडी (जैसे <div id="top"></div>) के साथ एक तत्व को इंगित कर सकता है ।

अपने दम पर (उदाहरण के लिए <a href="#" onclick="pop()">popup</a>) एक को देखने का मतलब है कि जावास्क्रिप्ट को विशेष रूप से चलाने के लिए एक लिंक का उपयोग किया जा रहा है। यह बुरा अभ्यास है।

किसी भी aतत्व के पास hrefवैध संसाधन के लिए एक बिंदु होना चाहिए । यदि कोई मौजूद नहीं है, तो किसी अन्य तत्व का उपयोग करने पर विचार करें, जैसे कि button


1
इसके बारे में एक अच्छी बात यह है कि यह विशेष रूप से अच्छा अभ्यास नहीं है ... लेकिन सिर्फ इसलिए कि यह अच्छा नहीं है इसका मतलब यह नहीं है कि आप इसे इस तरह से इस्तेमाल नहीं करेंगे :)
डीन हार्डिंग

1
@alex, अगर यह बुरा अभ्यास है, तो हमें बताएं कि इसके बजाय अच्छा अभ्यास क्या होगा।
रेयान लुंडी

@Kyralessa यह अगले पैराग्राफ में वहीं था। वैसे भी, मैंने एक संपादन किया तो उम्मीद है कि यह स्पष्ट है।
एलेक्स

2
@alex, संभवतः एक कारण है कि लोग बटन के बजाय लिंक का उपयोग कर रहे हैं, यह है कि वे लिंक का रूप चाहते हैं। किसी पृष्ठ के लिंक के बारे में यह वर्णन करना कि बटन को लिंक की तरह कैसे बनाया जाए? उदाहरण के लिए एचटीएमएल बटन परीक्षण
रयान ल्यूडी

1
@alex, इससे अधिक नहीं कह रहा है कि किसी लिंक पर # का उपयोग करना बुरा अभ्यास है। सभी ओपी ने पूछा कि यह क्या करता है।
रेयान लुंडी

11

# एक एंकर के लिए एक लिंक इंगित करता है।

मैं आपको कुछ और भी बताऊंगा:

जावास्क्रिप्ट को सक्रिय करने वाले लिंक के लिए '#' को href के रूप में उपयोग करना बुरा है क्योंकि यह पृष्ठ को शीर्ष पर स्क्रॉल करता है - जो शायद आप नहीं चाहते हैं। इसके बजाय, उपयोग करें javascript:void(0)


+1 यह उल्लेख करने के लिए कि इन लिंक पर क्लिक करने से पृष्ठ शीर्ष पर स्क्रॉल होता है।
क्रिस कैलो

4
अब आपको एंकर की जरूरत नहीं है। HTML5 के रूप में (और शायद HTML 4) <id> टैग के साथ किसी भी तत्व को एक टुकड़ा पहचानकर्ता द्वारा लक्षित किया जा सकता है। HTML5 डॉक्स देखें: whatwg.org/specs/web-apps/current-work/multipage/…
बासील

2
javascript:void(0)या तो उपयोग न करें - buttonयदि यह लिंक नहीं है तो उपयोग करें।
एलेक्स

10

पाउंड साइन ( #) पृष्ठ पर एक एंकर का पता लगाने के लिए इंगित करता है। उदाहरण के लिए, यदि आप इसे पृष्ठ पर कहीं शामिल करते हैं:

<a name="foo"></a>

या, हाल ही में:

<div id="foo">*part of page*</div>

और फिर आप उस पृष्ठ पर एक लिंक पर क्लिक करें जिसमें href है #foo, यह एंकर को नाम के divसाथ या आईडी के साथ नेविगेट करेगा foo

हालाँकि, यदि आपके पास सिर्फ href है #, तो यह पृष्ठ के शीर्ष पर ले जाएगा।


2

यह पृष्ठ पर वापस लिंक करता है। इसका उपयोग अक्सर उन लिंक्स के साथ किया जाता है जो वास्तव में कुछ जावास्क्रिप्ट चलाते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.