2010-05-19 16 views

उत्तर

5

असल में क्या होता है onclick समारोह ProcessResponse() कहा जाता है और hrefडिफ़ॉल्ट व्यवहार लिंक की निष्क्रिय करने के लिए javascript:void(null) को तैयार है।

अधिकांश डेवलपर बस यह भी लिखने के लिए उपयोग किया जाता है:

<a onclick="ProcessResponse(); return false;" href="#" >Accept Data</a> 

उदाहरण:

मान लीजिए हम जगह में इस लिंक है:

<a onclick="ProcessResponse(); return false;" href="http://www.google.com" >Accept Data</a> 

ध्यान दें कि href पर सेट है www.google.com लेकिन जब आप वास्तव में उस लिंक पर क्लिक करते हैं, तो यह केवलपर कॉल करेगाफ़ंक्शन और www.google.com पर नहीं जाएंगे क्योंकि return falseProcessResponse() के बाद डाला गया है जो www.google.com पर जा रहे लिंक के डिफ़ॉल्ट व्यवहार को अक्षम करता है। आपके द्वारा पोस्ट किए गए लिंक के लिए वही मामला है।

+4

यह तकनीकी रूप से गलत है। यह "लिंक के डिफ़ॉल्ट व्यवहार को अक्षम नहीं करता" है, यह एक खाली लिंक होने की तरह है। बस 'जावास्क्रिप्ट:' या 'जावास्क्रिप्ट: अपरिभाषित' आज़माएं। –

+0

किसी को href में "http: //" उपसर्ग को नहीं भूलना चाहिए। –

+2

@ एंडी ई का सिर: मैं href सेट # के बारे में बात कर रहा हूं। – Sarfraz

4

javascript:void(null) = कुछ भी नहीं।

नोटिस ऑनक्लिक ईवेंट हैंडलर में एक जावास्क्रिप्ट कॉल है - यह कुछ करता है (मुझे लगता है कि यह प्रतिक्रिया को संसाधित करके डेटा स्वीकार करता है;)।

14

void एक जावास्क्रिप्ट ऑपरेटर है लेकिन इसे कभी-कभी फ़ंक्शन के लिए गलत किया जाता है क्योंकि इसका अनुसरण करने वाले ब्रैकेट के सामान्य उपयोग के कारण होता है। void का उद्देश्य उद्देश्य किसी मूल्य को वापस किए बिना अभिव्यक्ति का मूल्यांकन करना है। इसलिए, किसी भी अभिव्यक्ति को void एड हो सकता है, यह null होना आवश्यक नहीं है और अक्सर आप void(0) या कम बार, void 0 देखते हैं।

जब आप javascript:href विशेषता में उपयोग करते हैं, तो निम्नलिखित अभिव्यक्ति का मूल्यांकन किया जाएगा और इसका परिणाम वापस कर दिया जाएगा। यह आपके ब्राउज़र को पता बॉक्स में निम्न दर्ज करके देखा जा सकता है: दिखाई देने वाले बॉक्स और enter/ओके क्लिक करें में

javascript:prompt("test"); 

प्रकार कुछ भी। आप देखेंगे कि पृष्ठ गायब हो जाएगा और जो कुछ भी आपने लिखा होगा वह दिखाई देगा। अब देखना है कि अगर हम void 0; क्या होता है:

javascript:prompt("test"); void 0; 

संकेत में ठीक क्लिक करने के बाद, कुछ नहीं होता। यह void 0 की हैंडवर्क है, यह undefined देता है और इसलिए ब्राउज़र इसके बारे में कुछ भी नहीं करता है। यह लिंक में href पर भी लागू होता है (इसे आज़माने के लिए स्वतंत्र महसूस करें)। पूरी चीज को अभी भी javascript:void prompt("test"); के रूप में लिखा जा सकता है।

जैसा कि अन्य ने उल्लेख किया है, href में void का उपयोग करने के बजाय किसी ईवेंट हैंडलर से return false; का उपयोग करना सबसे अच्छा है। वास्तव में, javascript:href विशेषता में उपयोग न करने की अनुशंसा की जाती है।

1

जावास्क्रिप्ट निर्देशों के लिए void(0) जोड़ना एक आम चाल है जब आप कोड चलाने के लिए javascript: छद्म-यूआरएल का उपयोग करते हैं। यदि आप ऐसा करने से चूक जाते हैं, और स्क्रिप्ट के अलावा कुछ अन्य लौटाती है, तो यह माना जाएगा कि यह document.write पर भेजा गया था - यानी, ब्राउज़र एक खाली पृष्ठ पर नेविगेट करेगा।

इस चाल के लिए वैध अनुप्रयोग हैं (अर्थात्, बुकमार्कलेट हमेशा इस तरह समाप्त होना चाहिए), लेकिन उदाहरण में आपने यह गलत किया है, क्योंकि दूसरों द्वारा पहले से समझाया गया कारण है।

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