जावास्क्रिप्ट को कॉल करने के लिए लिंक का उपयोग कैसे करें?


166

जावास्क्रिप्ट कोड को कॉल करने के लिए लिंक का उपयोग कैसे करें?

जवाबों:


192
<a onclick="jsfunction()" href="#">

या

<a onclick="jsfunction()" href="javascript:void(0);">

संपादित करें:

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


11
मैं दूसरे को सलाह दूंगा, क्योंकि पहले वाला आपको पृष्ठ के शीर्ष पर स्क्रॉल करता है।
मैट ग्रांडे

7
हाँ, यह निश्चित रूप से होगा, जब तक कि आप "गलत रिटर्न न करें;" अपने समारोह के बाद।
चेल्सी

26
यह 1998 का ​​कोड है। विनीत समाधानों में से एक का उपयोग करें। कृप्या।
एंड्रयू हेजेस ने

7
कोई भी उपयोग करें! लिंक जोड़ने के लिए हैं, वे जावास्क्रिप्ट को कॉल करने के लिए डमी तत्व नहीं हैं।
.देवरास

4
यदि आपकी जावास्क्रिप्ट इनलाइन डालने जा रही है, तो इसे इस तरह से करें: <a onclick="jsfunction/return false" href="linkasnormal">
अग्नि क्रॉ

201

विनीत जावास्क्रिप्ट, कोई पुस्तकालय निर्भरता नहीं:

<html>
<head>
    <script type="text/javascript">

        // Wait for the page to load first
        window.onload = function() {

          //Get a reference to the link on the page
          // with an id of "mylink"
          var a = document.getElementById("mylink");

          //Set code to run when the link is clicked
          // by assigning a function to "onclick"
          a.onclick = function() {

            // Your code here...

            //If you don't want the link to actually 
            // redirect the browser to another page,
            // "google.com" in our example here, then
            // return false at the end of this block.
            // Note that this also prevents event bubbling,
            // which is probably what we want here, but won't 
            // always be the case.
            return false;
          }
        }
    </script>
</head>
<body>
    <a id="mylink" href="http://www.google.com">linky</a>        
</body>
</html>

26
क्या आप बता सकते हैं कि यह वर्तमान में स्वीकृत उत्तर से बेहतर क्यों है, और स्क्रिप्ट को पृष्ठ में कहां जाना चाहिए (क्योंकि यह स्पष्ट रूप से एक शुरुआती स्तर का प्रश्न है)?
छिपकली

8
ज़रूर। अपडेट किया गया।
१५:०२ पर लुप्तप्राय

6
hrefयदि मैं उपयोगकर्ता को पुनर्निर्देशित नहीं करना चाहता और केवल कुछ कोड चलाना चाहता हूं तो मैं इसमें क्या डालूंगा ? संपादित करें: मैं देखता हूं कि इसे खाली छोड़ा जा सकता है href="":।
सब्रेवुल्फी

6
टैग में सीधे डालने के बजाय, onclickईवेंट को जोड़ना बेहतर क्यों है ? window.onloadonclick<a>
नाथन रीड

10
क्या होगा अगर आपकी कोई चिंता यह है कि आप अपनी कार्यात्मक इकाई को अपनी स्रोत फ़ाइल में अलग-अलग भौतिक स्थानों में अलग नहीं करना चाहते हैं, या अन्य फ़ाइलों पर फैल नहीं सकते हैं। यदि आप अपने href टैग में एक जावास्क्रिप्ट कॉल डालते हैं तो यह एक लाइन को देखकर स्पष्ट रूप से स्पष्ट है कि क्या चल रहा है। मैं उस कार्यक्षमता को अलग-अलग भौतिक स्थानों में अलग करने के बारे में चिंतित हूँ जहाँ यह क्या हो रहा है की एक तस्वीर प्राप्त करना कठिन है। शायद बस यही मेरा स्टाइल है।
स्टू

47
<a href="javascript:alert('Hello!');">Clicky</a>

संपादित करें, वर्षों बाद: नहीं! ऐसा कभी मत करो! मैं युवा और बेवकूफ था!

संपादित करें, फिर से: कुछ लोगों ने पूछा है कि आपको ऐसा क्यों नहीं करना चाहिए। कुछ कारण हैं:

  1. प्रस्तुति: HTML प्रस्तुति पर ध्यान केंद्रित करना चाहिए। JS को HREF में रखने का अर्थ है कि आपका HTML अब, थोथा है, जो व्यापारिक तर्क के साथ काम कर रहा है।

  2. सुरक्षा: आपके HTML में जावास्क्रिप्ट जैसे सामग्री सुरक्षा नीति (CSP) का उल्लंघन करता है । सामग्री सुरक्षा नीति (CSP) सुरक्षा की एक अतिरिक्त परत है जो क्रॉस-साइट स्क्रिप्टिंग (XSS) और डेटा इंजेक्शन हमलों सहित कुछ प्रकार के हमलों का पता लगाने और उन्हें कम करने में मदद करती है। इन हमलों का उपयोग डेटा चोरी से लेकर साइट डिफेक्शन या मालवेयर के वितरण तक हर चीज के लिए किया जाता है। यहां अधिक पढ़ें

  3. अभिगम्यता: एंकर टैग अन्य दस्तावेजों / पृष्ठों / संसाधनों से जोड़ने के लिए हैं। यदि आपका लिंक कहीं नहीं जाता है, तो यह एक बटन होना चाहिए । यह स्क्रीन पाठकों, ब्रेल टर्मिनलों, आदि के लिए बहुत आसान बनाता है, यह निर्धारित करने के लिए कि क्या चल रहा है, और नेत्रहीनों को उपयोगी उपयोगी जानकारी दें।


16
शायद इस विधि के साथ समस्याओं का कुछ वर्णन? इस से भी बदतर है href='#'और alert()में onclick?
थॉमस अहले २ Thomas

3
मैं जावास्क्रिप्ट के लिए नया हूं और समझ नहीं आ रहा है कि इसमें क्या गलत है .. कोई भी स्पष्टीकरण अच्छा होगा
nilanjanaLodh

1
नमस्ते, मैं भी अनिश्चित हूँ क्यों नहीं इस का उपयोग करने के लिए? मैं एक ऐसे परिदृश्य में फंस गया हूँ जहाँ मुझे JS फ़ंक्शन को कॉल करने की आवश्यकता है, लेकिन मैं जो भी निर्दिष्ट कर सकता हूं वह एक लिंक है। और आपका समाधान काम कर गया।
skapie19

43

और, jQuery के साथ विनीत क्यों नहीं:

  $(function() {
    $("#unobtrusive").click(function(e) {
      e.preventDefault(); // if desired...
      // other methods to call...
    });
  });

एचटीएमएल

<a id="unobtrusive" href="http://jquery.com">jquery</a>

2
क्या यह एसईओ के लिए काम करेगा जैसे क्रॉलर लिंक को ढूंढेंगे और उसका पालन करेंगे?
एहि तुना

11
क्योंकि हर कोई jquery का उपयोग नहीं करता है।
स्टू

1
@GregMiernicki हाँ और क्या आप लिंक से मतलब पर निर्भर करता है। HTML को देखो। एक वेबक्रॉलर या जावास्क्रिप्ट के साथ कोई भी क्लाइंट दिया गया HREF का दौरा करेगा। जावास्क्रिप्ट सक्षम क्लाइंट क्लिक एक्शन को चलाएगा और यदि लिंक उस फ़ंक्शन का अनुसरण नहीं करता है तो वह गलत मान नहीं लौटाता है और न ही निवारण को कॉल करता है। इस मामले में, href एक गिरावट है, इसलिए इसे "विनीत" क्यों कहा जाता है
इवान लैंग्लिस

12

विनीत जावास्क्रिप्ट के बहुत सारे फायदे हैं, यहाँ कदम उठाए गए हैं और इसका उपयोग करना क्यों अच्छा है।

  1. लिंक लोड सामान्य के रूप में:

    <a id="DaLink" href="http://host/toAnewPage.html"> यहां क्लिक करें </a>

यह महत्वपूर्ण है क्योंकि यह उन ब्राउज़रों के लिए काम करेगा जिनके जावास्क्रिप्ट सक्षम नहीं हैं, या यदि जावास्क्रिप्ट कोड में कोई त्रुटि है जो काम नहीं करता है।

  1. जावास्क्रिप्ट पेज लोड पर चलता है:

     window.onload = function(){
            document.getElementById("DaLink").onclick = function(){
                   if(funcitonToCall()){
                       // most important step in this whole process
                       return false;
                   }
            }
     }
  2. यदि जावास्क्रिप्ट सफलतापूर्वक चलता है, हो सकता है कि वर्तमान पृष्ठ में सामग्री को जावास्क्रिप्ट के साथ लोड कर रहा हो, तो रिटर्न गलत लिंक लिंकिंग को रद्द कर देता है। दूसरे शब्दों में, गलत रिटर्न लगाने पर लिंक को निष्क्रिय करने का प्रभाव पड़ता है अगर जावास्क्रिप्ट सफलतापूर्वक चला। जावास्क्रिप्ट को चलाने की अनुमति नहीं देता है, तो एक अच्छा बैकअप बनाते हुए, ताकि आपकी सामग्री को सर्च इंजन के लिए या तो रास्ता मिल जाए और यदि आपका कोड टूट जाए, या एक गैर-जावास्क्रिप्ट सिस्टम पर देखा जाए।

इस विषय पर सर्वश्रेष्ठ पुस्तक जेरेमी कीथ द्वारा "डॉम सेक्शन" है


9

या, यदि आप PrototypJS का उपयोग कर रहे हैं

<script type="text/javascript>
  Event.observe( $('thelink'), 'click', function(event) {
      //do stuff

      Event.stop(event);
  }
</script>

<a href="#" id="thelink">This is the link</a>

1
मुझे इवेंट हैंडलिंग कार्यों को लाइन में नहीं लगाना पसंद है।
मार्क बीकाक

1
यह एकमात्र रास्ता है। कृपया इनलाइन उत्तरों को वोट करें। यह एक अभ्यास है जिसके लिए इन दिनों कोई बहाना नहीं है।
एंड्रयू हेजेज

5
@ भारत: कृपया अपने डाउनवोट के साथ एक टिप्पणी छोड़ दें, जिसमें बताया गया है कि इनलाइन उत्तर खराब क्यों हैं।
छिपकली

8

मुझे लगता है कि आप इस onclickघटना का उपयोग कर सकते हैं , कुछ इस तरह से:

<a onclick="jsFunction();">

0

jquery के साथ @mister_lucky उत्तर उपयोग पर आधारित:

$('#unobtrusive').on('click',function (e) {
    e.preventDefault(); //optional
    //some code
});

HTML कोड:

<a id="unobtrusive" href="http://jquery.com">jquery</a>

-2

बस जावास्क्रिप्ट का उपयोग करें: ---- अनुकरणीय

javascript:var JFL_81371678974472 = new JotformFeedback({ formId: '81371678974472', base: 'https://form.jotform.me/', windowTitle: 'Photobook Series', background: '#e44c2a', fontColor: '#FFFFFF', type: 'false', height: 700, width: 500, openOnLoad: true })
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.