2011-10-13 34 views
139

मैंने निम्नलिखित href को समय-समय पर वेबपृष्ठों में उपयोग किया है। हालांकि, मुझे समझ में नहीं आता कि यह क्या करने की कोशिश कर रहा है या तकनीक। क्या कोई कृपया विस्तार से बता सकता है?href अभिव्यक्ति <a href="javascript:;"></a> क्या करता है?

<a href="javascript:;"></a> 
+2

यदि आप गलत नहीं हैं तो आप इसके साथ एक जेएस विधि कॉल कर सकते हैं .. जावास्क्रिप्ट: कुछ फ़ंक्शन() – Rob

+1

यह कुछ भी करने की कोशिश नहीं कर रहा है जिसे उचित क्लिक हैंडलर के साथ बेहतर तरीके से संभाला जा सकता है। आपको इससे बचना चाहिए क्योंकि यह बदसूरत, अप्राप्य है और लोगों ने 'जावास्क्रिप्ट:' योजना का उपयोग किया है जहां इसे इस्तेमाल नहीं किया जाना चाहिए ('onclick =" जावास्क्रिप्ट: ... "' – Gareth

+1

इसे देखें: http: // stackoverflow। कॉम/ए/138233/908879 – ajax333221

उत्तर

150

एक <a> तत्व अमान्य HTML है जब तक कि उसके पास href या name विशेषता न हो।

यदि आप इसे एक लिंक (यानी रेखांकित, हाथ सूचक, आदि) के रूप में सही ढंग से प्रस्तुत करना चाहते हैं, तो यह केवल तभी होगा यदि उसके पास href विशेषता है।

इस तरह के कोड को कभी-कभी लिंक बनाने के तरीके के रूप में उपयोग किया जाता है, लेकिन href विशेषता में वास्तविक URL प्रदान किए बिना। डेवलपर स्पष्ट रूप से चाहता था कि लिंक स्वयं कुछ भी न करें, और यह वह सबसे आसान तरीका था जिसे वह जानता था।

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

कुछ डेवलपर्स एक ही उद्देश्य के लिए href='#' का उपयोग करते हैं, लेकिन इससे ब्राउज़र को पृष्ठ के शीर्ष पर कूदने का कारण बनता है, जो संभव नहीं हो सकता है। और वह आसानी से href खाली नहीं छोड़ सका, क्योंकि href='' वर्तमान पृष्ठ पर एक लिंक है (यानी यह पृष्ठ को ताज़ा करता है)।

इन चीजों के आस-पास के तरीके हैं। href में जावास्क्रिप्ट कोड का एक खाली बिट का उपयोग करना उनमें से एक है, और हालांकि यह सबसे अच्छा समाधान नहीं है, यह काम करता है।

+11

जिज्ञासा से बाहर, क्या ऐसा करने का एक बेहतर तरीका है? –

+20

ऐसा करने का एक बेहतर तरीका यह है कि यदि ईवेंट फ़ंक्शन 'झूठी वापसी' करता है, या 'event.preventDefault()' तो 'href' कार्रवाई कभी नहीं बुलाई जाएगी, इसलिए आप वहां कुछ और समझदार रख सकते हैं। – Spudley

+3

'''बिना' href' या 'name' के अवैध नहीं है; इसे एक सत्यापनकर्ता का उपयोग करके आसानी से चेक किया जा सकता है। –

3

क्लिक करने पर यह एक लिंक बनाने का एक तरीका है (जब तक जावास्क्रिप्ट घटनाएं इसके बाध्य न हों)।

<a href="Javascript: doStuff();">link</a> 

जब वहाँ वास्तव में (अपने उदाहरण की तरह) को चलाने के लिए जावास्क्रिप्ट नहीं है, यह कुछ नहीं करता है:

यह जावास्क्रिप्ट चल बजाय किसी लिंक का अनुसरण करने का एक तरीका है।

+0

हाँ, इसलिए यह जेएस घटनाओं/विधियों को कॉल करता है .. – Rob

+0

आह, मैं देखता हूं। यह प्रभावी रूप से लिंक को अक्षम करता है। –

-1
<a href="javascript:void(0);"></a> 

javascript: ब्राउज़र जावास्क्रिप्ट कोड

+1

http://stackoverflow.com/a/1293130/681538 – Alex

5
<a href="javascript:alert('Hello');"></a> 

लिखने वाला बताता है कि के लिए आशुलिपि है:, मूल रूप से करने के बजाय

<a href="" onclick="alert('Hello'); return false;"></a> 
+2

इस तरह की लेकिन यह "पसंद की तरह" तुलना में सच नहीं है। कुछ कारण यह है कि कुछ इसे पहले स्थान पर इस्तेमाल करने के जाल में पड़ते हैं। – Lankymart

21

पृष्ठ (या एंकर) स्थानांतरित करने के लिए लिंक का उपयोग कर का उपयोग करते हुए इस विधि ने जावास्क्रिप्ट फ़ंक्शन लॉन्च किया है

<script> 
function doSomething() { 
    alert("hello") 
} 
</script> 
<a href="javascript:doSomething();">click me</a> 

लिंक पर क्लिक करने से अलर्ट आग लग जाएगी।

21

अपने गंतव्य तक पहुंचने के लिए लिंक से बचने के लिए कई तंत्र हैं। सवाल से एक बहुत सहज नहीं है।

एक क्लीनर विकल्प href="#no" का उपयोग करना है जहां #no दस्तावेज़ में एक गैर-परिभाषित एंकर है।

आप अधिक से अधिक अर्थपूर्ण नाम जैसे # अक्षम, या # प्रतिक्रिया को पढ़ने योग्यता बढ़ाने के लिए उपयोग कर सकते हैं।

दृष्टिकोण के लाभ:

  • बचते खाली href = "#" के प्रभाव
  • जावास्क्रिप्ट

कमियां से दूर रहता है "शीर्ष करने के लिए आगे बढ़" :

  • आपको यह सुनिश्चित करना होगा कि दस्तावेज़ में एंकर नाम का उपयोग नहीं किया गया है।

के बाद से <a> तत्व एक कड़ी के रूप में कार्य नहीं कर रहा है, इन मामलों में सबसे अच्छा विकल्प एक <a> तत्व लेकिन एक <div> का उपयोग करने और वांछित लिंक की तरह शैली प्रदान नहीं कर रहा है।

+6

मुझे गैर परिभाषित एंकर भी पसंद है। हालांकि, एक और नकारात्मक बात यह है कि यह आपके ब्राउज़र इतिहास में एंकर जोड़ता है, इसलिए मैं ओपी में रिक्त जेएस विधि का उपयोग करने का विकल्प चुनता हूं। –

5

इस का संदर्भ लें:

<a href="Http://WWW.stackoverflow.com">Link to the website opened in different tab</a> 
<a href="#MyDive">Link to the div in the page(look at the chaneged url)</a> 
<a href="javascript:;">Nothing happens if there is no javaScript to render</a> 
3

पुराना धागा लेकिन सोचा था कि मैं सिर्फ जोड़ना होगा कि कारण डेवलपर्स का उपयोग इस संरचना एक मरे हुए लिंक बनाने के लिए नहीं है, लेकिन क्योंकि किसी कारण से जावास्क्रिप्ट यूआरएल संदर्भ में उत्तीर्ण नहीं होते सक्रिय एचटीएमएल तत्व सही ढंग से करने के लिए।

उदा। handler_function(this.id)onClick के रूप में काम करता है लेकिन जावास्क्रिप्ट यूआरएल के रूप में नहीं।

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

a {cursor: pointer !important} 

एक गैर-आवश्यक चीजों का पालन करने के धागे में उल्लेख किया है की तरह से बचना चाहिए:

0

सबसे अच्छा तरीका हमेशा ठीक से एक लिंक रेंडर करने के लिए इस प्रकार है सीएसएस के साथ है।

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