2010-06-05 12 views

उत्तर

3

onclick पहले चलेंगे पर क्लिक करें चलाया जाता है है। onclickfalse वापस नहीं करता है तो (इस मामले में यह नहीं है), तो href कार्रवाई की जाएगी।

+0

और जब href संसाधित होता है तो कौन सी स्क्रिप्ट बुलाया जाएगा? – ayush

+0

आपके उदाहरण में, इनलाइन जावास्क्रिप्ट ('जावास्क्रिप्ट:;') संसाधित किया जाएगा। अगर href एक नियमित यूआरएल था, तो ब्राउज़र बस उस पर नेविगेट करेगा। – Matt

+0

कुछ भी नहीं। लेखक शायद सोचते हैं कि अगर एंकर झूठी वापसी नहीं करता है तो एंकर को दूसरे पृष्ठ पर धक्का देने से रोकने का यह एक अच्छा तरीका है। आपको जावास्क्रिप्ट भी दिखाई देगा: शून्य() बहुत कुछ। यह सुनिश्चित करना वास्तव में सबसे अच्छा है कि ऑनक्लिक घटना झूठी वापसी करे और, यदि ऐसा नहीं होता है, तो सुनिश्चित करें कि href किसी प्रकार की फ़ॉलबैक पर चला जाता है। या, एंकर टैग का बिल्कुल उपयोग न करें। – Andrew

0

अपने संदेह सच है, तो आप "समारोह addItem (x)" एक जावास्क्रिप्ट फ़ाइल उस पृष्ठ से स्क्रिप्ट टैग से जुड़े हुए (आमतौर पर सिर टैग में)

+0

फ़ंक्शन addItem स्क्रिप्ट फ़ाइलों में से एक में है। मेरा संदेह यह है कि अगर Additem झूठी वापसी अगर क्या होगा? – ayush

0

"जावास्क्रिप्ट:" में मिल जाना चाहिए! Href अंदर। एक अलग पृष्ठ पर जाने के बजाए ब्राउज़र को जावास्क्रिप्ट निष्पादित करने के लिए ब्राउज़र को बताने का एक तरीका है।

इस लाइन, उदाहरण के लिए "परीक्षण" संदेश के साथ एक संदेश बॉक्स दिखाई देगा।

<a href="javascript:alert('testing');">Click me</a> 

और यह एक एक खाली जावास्क्रिप्ट बयान है कि

<a href="javacsript:;">Click me</a> 

onclick कोई कार्य नहीं करेगा निष्पादित करेंगे एक घटना जब लिंक पर क्लिक होने भी आग है। Href के विपरीत यह आपको किसी भिन्न पृष्ठ पर एक लिंक डालने की अनुमति नहीं देता है; यह केवल जावास्क्रिप्ट स्वीकार करता है।

ब्राउज़र्स पहले onclick ईवेंट सक्रिय करेगा और उसके बाद href विशेषता की प्रक्रिया। यदि यह एक यूआरएल है (खाली href का मतलब है वर्तमान यूआरएल; क्लिक पेज को रीफ्रेश करेगा) यह इसका पालन करेगा, अगर यह जावास्क्रिप्ट है तो यह इसे निष्पादित करेगा।

"जावास्क्रिप्ट :;" लाना या "जावास्क्रिप्ट: शून्य (शून्य);" अंदर href पुराना है और गलत तकनीक यह सुनिश्चित करने के लिए कि ब्राउजर ऑनक्लिक प्रक्रिया के बाद पृष्ठ को रीफ्रेश नहीं करता है।

आपके प्रश्न का उत्तर करने के लिए; दोनों स्क्रिप्ट निष्पादित हो जाएंगी, लेकिन href स्क्रिप्ट कुछ भी नहीं करेगी।

+0

उस तरह इतना आसान नहीं है, @ ल्यूक !! देखें कि क्या होता है यदि स्क्रिप्ट वास्तव में एक मूल्य देता है! – Pointy

2

javascripthref विशेषता में भाग प्रोटोकॉल है (आप जानते हैं, जैसे http, FTP या mailto)। यह क्या करता है यह ब्राउज़र को बताता है कि यूआरएल वास्तव में जावास्क्रिप्ट कोड है।

आम तौर पर, जब आप एक लिंक पर क्लिक करें, ब्राउज़र को निष्पादित करेंगे जो कुछ भी यह href विशेषता में पाता है। हालांकि, ब्राउज़र ईवेंट को से पहले ट्रिगर करेगा, यह href चीज़ को संभालता है। तो, एक ऑनक्लिक हैंडलर सेट करना सामान्य व्यवहार को ओवरराइड करेगा।

इस प्रकार, ईवेंट हैंडलर राजा बन जाता है और इसमें true (अनुमति) या false (रोकें) लौटकर डिफ़ॉल्ट ब्राउज़र व्यवहार को अनुमति देने या रोकने की संभावना है।

तो, उदाहरण के लिए, जब आप उस लिंक पर क्लिक करते हैं, तो ब्राउज़र addItem ट्रिगर करेगा। यदि यह false देता है, तो कुछ भी नहीं होता है। यदि यह true देता है, तो ब्राउज़र href विशेषता में कोड निष्पादित करेगा। लेकिन चूंकि इसमें वहां कोई बयान नहीं मिलता है (यानी खाली बयान), कुछ भी नहीं होता है।

<a href="http://google.com/" onclick="return false;">won't go to google.com</a> 
<a href="http://google.com/" onclick="return true;">will go to google.com</a>

है कि आप करने के लिए कोई मतलब:

निम्नलिखित कोड का प्रयास करें?

0

ध्यान दें कि जब ब्राउज़र की व्याख्या "जावास्क्रिप्ट:" एक "href" का मान, अगर वापसी मान तो यह <a> टैग के लिए वांछित दस्तावेज़ सामग्री के रूप में व्याख्या की है खाली नहीं है!

<a href='javascript:getLink()'>Click to go there!</a> 

समारोह "getLink: नीचे दिए गए लिंक शामिल

http://gutfullofbeer.net/jslink.html

कि पेज (यह वास्तव में कम है इसे देख) के लिए स्रोत: यहाँ एक परीक्षण पृष्ठ आप का आनंद लेने के लिए है() "इस प्रकार परिभाषित किया गया है:

function getLink() { 
    var sel = document.getElementById('sel'); 
    return sel.options[sel.selectedIndex].value; 
    } 

जैसा कि आप देख, समारोह पकड़ लेता हैकी वर्तमान चयनित मान पृष्ठ परतत्व और देता है। <select> तत्व कैसा दिखता है?

<select id='sel'> 
    <option value='<html><head><meta http-equiv="refresh" content="2;http://cnn.com"/></head><body>Redirecting to CNN ...</body></html>'>CNN</option> 

    <option value='<html><head><meta http-equiv="refresh" content="2;http://zombo.com"/><head><body>Redirecting to Zombocom ...</body></html>'>Zombocom</option> 
    <option value='<html><head><meta http-equiv="refresh" content="2;http://reddit.com"/></head><body>Redirecting to Reddit ...</body></html>'>Reddit</option> 
</select> 

उन विकल्पों के मान अनुरोधित साइट पर रीडायरेक्ट के साथ एक पृष्ठ के लिए पूर्ण HTML मार्कअप हैं। चूंकि यूआरएल एक मान देता है, ब्राउजर द्वारा यह मान नई पेज सामग्री के रूप में समझा जाता है।

यह बहुत मस्तिष्क-उड़ रहा है। मुझे यकीन नहीं है कि आप कभी ऐसा क्यों करेंगे।

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