2011-03-08 16 views
11

मैंने href="javascript:void(0)" देखा है और मैंने href="javascript:;" देखा है क्या कोई कारण है कि मैं इसके बजाय href="javascript:" का उपयोग नहीं करूंगा?`जावास्क्रिप्ट के बजाय 'जावास्क्रिप्ट: शून्य (0)' का उपयोग क्यों करें: 'href के रूप में कुछ भी प्लेसहोल्डर नहीं है?

संपादित करें: मुझे करते हैं यह स्पष्ट: मैं एक onclick के साथ इस संयोजन कर रहा हूँ और return false का उपयोग कर अगर यह विकल्प का उपयोग करने के लिए आवश्यक हो जाता करने के लिए कोई आपत्ति नहीं। बेशक यह केवल तभी होता है जब विकल्प javascript: पर बेहतर समझ में आता है।

इसके अलावा, मुझे पहले पैराग्राफ में दिखाए गए मेरे प्रश्न (स्पष्ट रूप से मुझे लगता है) का जवाब देखने के लिए अभी तक कोई जवाब नहीं मिला है। धन्यवाद, डेविड। :)

मैं href="javascript:void(0)" देखा है और मैं href="javascript:;" देखा है तो ऐसा कोई कारण मैं सिर्फ बजाय href="javascript:" का उपयोग नहीं होता है?

+0

आप कितनी बार केवल 'http:' वाले URL देखते हैं? मुझे संदेह है क्योंकि यह मानदंड है कि जब प्रोटोकॉल या href प्रकार की घोषणा की जाती है, तो आपको इसके बाद कुछ डालना होगा! :-) –

+3

http://stackoverflow.com/questions/134845/href-for-javascript-links-or-javascriptvoid0 - एक ही विषय के बारे में, उपयोगी हो सकता है – Bakudan

+0

यह भी देखें: http://stackoverflow.com/questions/ 3666683/href-javascript-vs-href-javascriptvoid0 – Pang

उत्तर

8

आपके प्रश्न का उत्तर नहीं देता है लेकिन उस पर थोड़ी अधिक रोशनी डाल सकती है, तो नेटस्केप जैसे ब्राउज़र के शुरुआती संस्करणों में href के दौरान एक स्क्रिप्ट का उपयोग किया गया था।

void ऑपरेटर कुछ भी करने के लिए क्लिक को बल देने के लिए बहुत अधिक था।

अब ब्राउज़र के साथ "छद्म URL" को सही ढंग से कार्यान्वित करने के साथ, आप सुरक्षित रूप से केवल javascript:; का उपयोग कर सकते हैं।

+3

'जावास्क्रिप्ट:; 'जावास्क्रिप्ट क्यों नहीं:'? – dhblah

+0

मैं एचटीए (आई 7 मोड) देख रहा हूं 'href = "जावास्क्रिप्ट;;" एक नई विंडो में। – Marc

15

व्यक्तिगत रूप से मैं या तो उपयोग करने से बचूंगा। मेरे पास onclick='return false;' होगा, और बस href='#' सेट करें।

क्यों? क्योंकि यदि आप href में जावास्क्रिप्ट कोड डालते हैं, तो जब आप किसी भी अन्य यूआरएल की तरह लिंक पर होवर करते हैं तो ब्राउज़र की स्टेटस बार में दिखाई देता है। यह सिर्फ गन्दा लग रहा है।

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

लेकिन मुझे यह इंगित करना होगा: <a> एक शून्य के साथ जा रहे href के साथ टैग जावास्क्रिप्ट कोड को पहले स्थान पर <a> टैग होने के बिंदु को हराने के लिए लगता है। मैं देख सकता हूं कि आप रनटाइम पर एक लिंक को सक्षम और अक्षम कैसे करना चाहते हैं, लेकिन बस href को शून्य पर सेट करना कुछ हद तक व्यर्थ लगता है। यदि यह वास्तविक लिंक नहीं होने वाला है, तो क्यों न केवल <span> या कुछ अन्य टैग न करें। यदि आपको इसे एक लिंक की तरह दिखाना चाहिए, तो सीएसएस में ऐसा करना मुश्किल है।

+8

हैश प्रतीक इस उद्देश्य के बजाए एक एंकर के रूप में उपयोग किया जाना है। आपको समय-समय पर अवांछित प्रभाव मिलेगा जब आप इसे इस तरह इस्तेमाल करते हैं जैसे आपका पृष्ठ पूरे स्थान पर कूद रहा है। – RubyFanatic

+1

@ रूबीफैनाटिक - इसके बारे में pedantic होने के लिए, हैश प्रतीक एक * एंकर * के लिए एक लिंक है, लेकिन मैं आपके बिंदु को स्वीकार करते हैं। मैं हालांकि सहमत नहीं हूँ; जब तक जावक्रिप्ट सक्षम हो, तब तक आपको अवांछित प्रभाव नहीं मिलेगा, और यदि आप करते हैं, तो भी वर्तमान पृष्ठ के शीर्ष पर कूदना शायद ही कभी आपदा है। इसके अलावा, हैश प्रतीक पूरी तरह से अजाक्स कार्यक्षमता के उपयोग के लिए उपयोग किया गया है, इस बिंदु पर कि वास्तव में इसे अच्छी प्रैक्टिस के रूप में अनुशंसा की जाती है, इसलिए ऐसा करने से अनाज के खिलाफ शायद ही कभी जा रहा है। – Spudley

+0

बस अपने प्रश्न का उत्तर देने के लिए: मैं अवधि का उपयोग नहीं करता क्योंकि यह कीबोर्ड के साथ काम नहीं करता है और सीएसएस पर स्वचालित रूप से नीला/अंडरलाइन/पॉइंटर नहीं मिलता है। वास्तव में –

2

आदर्श स्थिति तत्व पर कोई भी कोड नहीं डालना है, बल्कि किसी स्क्रिप्ट टैग में या बाहरी फ़ाइल में जावास्क्रिप्ट का उपयोग करें और ईवेंट हैंडलर को बाध्य करें।

+0

हां। हाइपरलिंक पर बाध्यकारी जावास्क्रिप्ट ईवेंट को सबसे अधिक पढ़ने योग्य कोड और भविष्य के लिए बनाए रखने में आसान बनाना चाहिए। – RubyFanatic

2

या तो बेहतर उपयोग करना बेहतर नहीं है। href विशेषता एक यूआरएल इंगित करता है। वांछित व्यवहार प्राप्त करने के लिए ईवेंट हैंडलर का उपयोग करना बेहतर है, जो शायद onclick ईवेंट है।

इस मामले में वांछित व्यवहार स्पष्ट रूप से कुछ भी नहीं करना है। सबसे पहले, एंकर टैग का उपयोग क्यों करें जब यह कहीं भी लिंक न हो? दूसरा, यह onclick इवेंट हैंडलर रिटर्न false देकर ईवेंट बबलिंग को रोकने से संभाल सकता है। फिर href या तो # पर इंगित कर सकता है, या यह भी बेहतर है कि यह एक यूआरएल को इंगित करे कि कम से कम इवेंट हैंडलर के समान प्रभाव पड़ता है, इसलिए जब जावास्क्रिप्ट बंद हो जाता है तो यह शानदार ढंग से घट जाएगा।

+0

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

+1

सुधार: "शब्द" जावास्क्रिप्ट –

+4

@ जॉर्जबैली मुझे प्रभावित है कि आप 5 महीने बाद एक टाइपो को सही करने के लिए वापस आते हैं। +1 – n0nag0n