कई वेबसाइटों पर मुझे ऐसे लिंक दिखाई देते हैं जो हैं href="#"
। इसका क्या मतलब है? इसका क्या उपयोग है?
कई वेबसाइटों पर मुझे ऐसे लिंक दिखाई देते हैं जो हैं href="#"
। इसका क्या मतलब है? इसका क्या उपयोग है?
जवाबों:
एंकर टैग का मुख्य उपयोग - <a></a>
- हाइपरलिंक के रूप में है । मूल रूप से इसका मतलब है कि वे आपको कहीं ले जाते हैं। हाइपरलिंक्स को href
संपत्ति की आवश्यकता होती है , क्योंकि यह एक स्थान निर्दिष्ट करता है।
एक हैश - #
एक हाइपरलिंक के भीतर एक HTML एलिमेंट आईडी निर्दिष्ट करता है जिसमें विंडो को स्क्रॉल किया जाना चाहिए।
href="#some-id"
वर्तमान पृष्ठ जैसे तत्व पर स्क्रॉल करेगा <div id="some-id">
।
href="https://stackoverflow.com//site.com/#some-id"
site.com
उस पेज पर आईडी पर जाना और स्क्रॉल करना होगा ।
href="#"
एक आईडी नाम निर्दिष्ट नहीं करता है, लेकिन उसका एक स्थान होता है - पृष्ठ का शीर्ष। एंकर पर क्लिक करने href="#"
से स्क्रॉल स्थिति शीर्ष पर चली जाएगी।
यह w3 प्रलेखन के अनुसार अपेक्षित व्यवहार है ।
एक उदाहरण जहां हाइपरलिंक प्लेसहोल्डर समझ में आता है, टेम्पलेट पूर्वावलोकन के भीतर है। टेम्प्लेट के लिए सिंगल पेज डेमो पर, मैंने अक्सर देखा <a href="#">
है कि एंकर टैग हाइपरलिंक है, लेकिन कहीं भी नहीं जाता है। href
संपत्ति को खाली क्यों नहीं छोड़ते ? एक खाली href
संपत्ति वास्तव में वर्तमान पृष्ठ के लिए हाइपरलिंक है। दूसरे शब्दों में, यह पृष्ठ को ताज़ा करने का कारण होगा। जैसा कि मैंने चर्चा की, href="#"
यह भी एक हाइपरलिंक है, और स्क्रॉल करने का कारण बनता है। इसलिए, हाइपरलिंक प्लेसहोल्डर्स के लिए सबसे अच्छा समाधान वास्तव में href="#!"
यह है कि यहां विचार यह है कि उम्मीद के साथ पृष्ठ पर कोई तत्व नहीं है id="!"
(जो ऐसा करता है !?) और हाइपरलिंक इसलिए कुछ भी नहीं संदर्भित करता है - इसलिए कुछ भी नहीं होता है।
एक और सवाल जो आप सोच रहे होंगे, "क्यों न सिर्फ href प्रॉपर्टी को छोड़ दिया जाए?"। एक आम प्रतिक्रिया जो मैंने सुनी है वह यह है कि href
संपत्ति की आवश्यकता है, इसलिए यह "लंगर" पर मौजूद होना चाहिए। यह गलत है! href
संपत्ति वास्तव में एक हाइपरलिंक होने के लिए एक लंगर के लिए केवल आवश्यक है! इसे w3 से पढ़ें। तो, क्यों न सिर्फ इसे प्लेसहोल्डर्स के लिए छोड़ दिया जाए? तत्व के लिए ब्राउजर डिफ़ॉल्ट शैलियों को प्रस्तुत करता है और एंकर टैग की डिफ़ॉल्ट शैली को बदल देगा जिसमें href प्रॉपर्टी नहीं है। इसके बजाय, इसे नियमित पाठ की तरह माना जाएगा। यह तत्व के संबंध में ब्राउज़र के व्यवहार को भी बदल देता है। Href प्रॉपर्टी के बिना एंकर पर मँडराते समय स्टेटस बार (स्क्रीन के नीचे) प्रदर्शित नहीं होगा। यह सुनिश्चित करने के लिए कि एक हाइपरलिंक के रूप में व्यवहार किया जाता है, एंकर पर प्लेसहोल्डर href मान का उपयोग करना सबसे अच्छा है।
इस प्रदर्शन शैली और व्यवहार के अंतर को देखें।
.click()
एक पर jQuery की विधि का उपयोग करना चाहते हैं <div></div>
, यह काम नहीं करेगा। या तो एक लंगर पर होना चाहिए या आपको touch
घटनाओं का उपयोग करना होगा।
"#" प्रतीक को किसी चीज़ के लिए href के रूप में रखने का अर्थ है कि यह एक अलग URL पर नहीं, बल्कि उसी पृष्ठ पर किसी अन्य आईडी या नाम टैग की ओर इंगित करता है। उदाहरण के लिए:
<a href="#bottomOfPage">Click to go to the bottom of the page</a>
blah blah
blah blah
...
<a id="bottomOfPage"></a>
हालांकि, अगर कोई आईडी या नाम नहीं है, तो यह "नहीं कहां" है।
इसी तरह का एक और प्रश्न HTML एंकर ने 'नाम' या 'आईडी' के साथ पूछा है ?
<a href="#">...</a>
"कहीं नहीं जा रहा था" यह पृष्ठ छोड़ कर लोड हो रहा था site.com/#
। वो कैसे संभव है?
onclick
घटना हैंडलर उस तत्व से बंधा हुआ था, जिससे एक जावास्क्रिप्ट फ़ंक्शन को उस पृष्ठ पर पुनः निर्देशित किया जा सकता है।
यह एक ऐसा लिंक है जो अनिवार्य रूप से कहीं भी लिंक करता है (यह URL पर "#" जोड़ता है)। इसका उपयोग कई अलग-अलग कारणों से किया जाता है। उदाहरण के लिए, यदि आप किसी प्रकार के जावास्क्रिप्ट / jQuery का उपयोग कर रहे हैं और वास्तविक HTML को कहीं भी लिंक नहीं करना चाहते हैं।
इसका उपयोग पेज एंकर के लिए भी किया जाता है, जिसका उपयोग पेज के एक अलग हिस्से को रीडायरेक्ट करने के लिए किया जाता है।
दुर्भाग्य से, सबसे आम उपयोग <a href="#">
आलसी प्रोग्रामर्स द्वारा किया जाता है, जो क्लिक करने योग्य गैर-हाइपरलिंक जावास्क्रिप्ट-कोडेड तत्व चाहते हैं जो एंकर की तरह व्यवहार करते हैं, लेकिन उन्हें अपने गैर-हाइपरलिंक तत्वों के लिए एक वर्ग में जोड़ने cursor: pointer;
या :hover
शैलियों के लिए तर्क नहीं दिया जा सकता है और इसके अतिरिक्त हैं सेट href
करने के लिए बहुत आलसी javascript:void(0);
।
इसके साथ समस्या यह है कि एक <a href="#" onclick="some_function();">
या किसी अन्य अनिवार्य रूप से एक जावास्क्रिप्ट त्रुटि के साथ समाप्त होता है, और एक onclick जावास्क्रिप्ट त्रुटि वाला एक लंगर हमेशा इसके बाद समाप्त होता है href
। आम तौर पर यह ऊपर पृष्ठ के शीर्ष पर एक कष्टप्रद कूद जा रहा समाप्त होता है, लेकिन का उपयोग कर साइटों के मामले में <base>
, <a href="#">
के रूप में नियंत्रित किया जाता है <a href="[base href]/#">
, एक अप्रत्याशित नेविगेशन में जिसके परिणामस्वरूप। यदि कोई लॉग करने योग्य त्रुटियां उत्पन्न हो रही हैं, तो आप उन्हें बाद वाले मामले में नहीं देखेंगे जब तक कि आप लगातार लॉग को सक्षम न करें।
यदि एक लंगर तत्व का उपयोग गैर-लंगर के रूप में किया जाता है, तो इसे सुंदर गिरावट के लिए इसका सेट होना चाहिए ।href
javascript:void(0);
मैंने अभी दो दिन बर्बाद कर दिए हैं एक यादृच्छिक अप्रत्याशित पृष्ठ को पुनर्निर्देशित किया गया है जिसे केवल पृष्ठ को रीफ्रेश करना चाहिए था, और अंत में इसे एक फ़ंक्शन पर क्लिक किया गया, जिसमें से क्लिक की घटना को उठाया गया था <a href="#">
। इसे ठीक करने के #
साथ प्रतिस्थापित javascript:void(0);
।
पहली बात जो मैं सोमवार कर रहा हूं वह सभी उदाहरणों की परियोजना को शुद्ध कर रहा है <a href="#">
।
<base>
वास्तव में के लिए एक बड़ा फर्क पड़ता है #
। इशारा करने के लिए धन्यवाद!
अव्यवस्थित सूचियों को अक्सर मेनू के रूप में उपयोग करने के इरादे से बनाया जाता है, लेकिन एक li
सूची आइटम पाठ है। क्योंकि सूची li
आइटम पाठ है, माउस पॉइंटर एक तीर नहीं होगा, बल्कि एक "आई कर्सर" होगा। जब कुछ क्लिक करने योग्य होता है, तो उपयोगकर्ता माउस पॉइंटर के लिए एक इंगित उंगली देखने के आदी होते हैं। टैग के a
अंदर एंकर टैग का उपयोग li
करने से माउस पॉइंटर को पॉइंटिंग फिंगर में बदलने का कारण बनता है। मेनू के रूप में सूची का उपयोग करने के लिए इंगित करने वाली उंगली बहुत बेहतर है।
<ul id="menu">
<li><a href="#">Menu Item 1</a></li>
<li><a href="#">Menu Item 2</a></li>
<li><a href="#">Menu Item 3</a></li>
<li><a href="#">Menu Item 4</a></li>
</ul>
यदि सूची मेनू के लिए उपयोग की जा रही है, और लिंक की आवश्यकता नहीं है, तो एक URL को निर्दिष्ट करने की आवश्यकता नहीं है। लेकिन समस्या यह है कि यदि आप href
विशेषता को छोड़ देते हैं , तो <a>
टैग में पाठ को पाठ के रूप में देखा जाता है, और इसलिए माउस पॉइंटर वापस आई-कर्सर में आता है। आई-कर्सर उपयोगकर्ता को लगता है कि मेनू आइटम क्लिक करने योग्य नहीं है। इसलिए, आपको अभी भी एक की आवश्यकता है href
, लेकिन आपको कहीं भी लिंक की आवश्यकता नहीं है।
आप मेनू सूची के लिए बहुत सारे div
या p
टैग का उपयोग कर सकते हैं , लेकिन माउस पॉइंटर भी उनके लिए एक आई-कर्सर होगा।
आप मेनू सूची के लिए एक दूसरे के ऊपर ढेर सारे बटनों का उपयोग कर सकते हैं, लेकिन सूची बेहतर लगती है। और शायद यही कारण है href="#"
कि सूची के टैग के अंदर एंकर टैग में कहीं भी उस बिंदु का उपयोग नहीं किया जाता है।
आप सीएसएस में पॉइंटर स्टाइल सेट कर सकते हैं, इसलिए यह एक और विकल्प है। href="#"
कहीं नहीं करने के लिए बस कुछ स्टाइल सेट करने के लिए आलसी तरीका हो सकता है।
खाली लिंक के लिए href = "#" का उपयोग करने में समस्या यह है कि यह आपको पृष्ठ के शीर्ष पर ले जाएगा जो वांछित कार्रवाई नहीं हो सकती है। इससे बचने के लिए, पुराने ब्राउज़रों या गैर-HTML5 सिद्धांतों के लिए उपयोग करें
<a href="javascript:void(0)">Goes Nowhere</a>
जहां तक मुझे पता है कि आमतौर पर लिंक के लिए एक प्लेसहोल्डर होता है, जिसमें कुछ जावास्क्रिप्ट उनके साथ जुड़े होते हैं। लिंक का मुख्य बिंदु जावास्क्रिप्ट कोड निष्पादित करके परोसा जाता है; जेएस समर्थन वाले ब्राउज़र तब वास्तविक लिंक लक्ष्य को अनदेखा करते हैं। यदि ब्राउज़र जेएस का समर्थन नहीं करता है, तो हैश मार्क अनिवार्य रूप से लिंक को। ऑप में बदल देता है। विनीत जावास्क्रिप्ट भी देखें ।
जैसा कि अन्य जवाबों में से कुछ ने बताया है, a
तत्व को एक href
विशेषता की आवश्यकता होती है और #
इसका उपयोग प्लेसहोल्डर के रूप में किया जाता है, लेकिन यह एक ऐतिहासिक कलाकृति भी है।
href
यह हाइपरटेक्स्ट स्रोत लिंक को परिभाषित करने वाले एंकरों के लिए एकल आवश्यक विशेषता थी, लेकिन अब HTML5 में आवश्यक नहीं है। इस विशेषता को स्वीकार करने से एक प्लेसहोल्डर लिंक बन जाता है। Href विशेषता लिंक लक्ष्य को इंगित करता है, या तो URL या URL टुकड़ा। URL टुकड़ा एक हैश मार्क (#) से पहले का नाम है, जो वर्तमान दस्तावेज़ के भीतर एक आंतरिक लक्ष्य स्थान (एक आईडी) को निर्दिष्ट करता है।
इसके अलावा, HTML5 कल्पना के अनुसार :
यदि किसी तत्व में कोई href विशेषता नहीं है, तो तत्व एक प्लेसहोल्डर का प्रतिनिधित्व करता है, जहां एक लिंक अन्यथा रखा जा सकता है, अगर यह प्रासंगिक था, जिसमें केवल तत्व की सामग्री शामिल है।
Href विशेषता किसी लिंक के संसाधन के URL को परिभाषित करती है। अगर एंकर टैग में href टैग नहीं है तो वह हाइपरलिंक नहीं बनेगा। Href विशेषता के निम्नलिखित मान हैं:
1. Absolute path: move to another site like href="http://www.google.com"
2. Relative path: move to another page within the site like herf ="defaultpage.aspx"
3. Move to an element with a specified id within the page like href="#bottom"
4. href="javascript:void(0)", it does not move anywhere.
5. href="#" , it does not move anywhere but scroll on the top of the current page.
6. href= "" , it will load the current page but some browsers causes forbidden errors.
Note: When we do not need to specified any url inside a anchor tag then use
<a href="javascript:void(0)">Test1</a>