JavaScript'i aramak için bir bağlantı nasıl kullanılır?


166

JavaScript kodunu aramak için bir bağlantı nasıl kullanılır?

Yanıtlar:


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

veya

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

Düzenle:

Yukarıdaki yanıt gerçekten iyi bir çözüm değil, başlangıçta yayınladığımdan beri JS hakkında çok şey öğrendim. Bkz EndangeredMassa cevabını bu sorunu çözmek için daha iyi bir yaklaşım için aşağıda.


11
Birincisi sizi sayfanın üstüne kaydırdığından ikincisini tavsiye ederim.
Matt Grande

7
Evet, bir "dönüş yanlış;" sonra.
Chelsea

26
Bu 1998 kodudur. Mütevazi çözümlerden birini kullanın. Lütfen.
Andrew Hedges

7
İkisini de kullanmayın! Bağlantılar bağlantı içindir, javascript'i aramak için kukla öğeler değildir.
I.devries

4
javascript'i satır içine koyacaksanız bunu şu şekilde yapın: <a onclick="jsfunction;return false" href="linkasnormal">
Fire Crow

201

Göze batmayan JavaScript, kitaplık bağımlılığı yok:

<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
Bunun şu anda kabul edilen cevaptan neden daha iyi olduğunu ve komut dosyasının sayfada nereye gitmesi gerektiğini açıklayabilir misiniz (çünkü bu başlangıç ​​seviyesinde bir sorudur)?
Kertenkele Bill

8
Tabi ki. Güncellenmiş.
EndangeredMassa

6
hrefKullanıcıyı yönlendirmek istemiyor ve sadece bazı kodları çalıştırmak istiyorsam ne yapmalıyım ? Düzenleme: Ben sol boş olabilir görüyoruz: href="".
SabreWolfy

6
onclickEtkinliği doğrudan etikete window.onloadkoymak yerine neden üzerinden eklemek daha iyidir ? onclick<a>
Nathan Reed

10
Endişelerinizden biri, işlevsel çalışma biriminizi kaynak dosyanızdaki farklı fiziksel yerlere ayırmak veya birçok kaynak dosyasına yaymak istememenizdir. Bir href etiketinize bir javascript çağrısı koyarsanız, ne olduğunu bir satıra bakarak acı verir. Bu işlevselliği, olup bitenlerin resmini çekmenin daha zor olduğu farklı fiziksel yerlere ayırmaktan endişe ediyorum. Belki de bu sadece benim tarzım.
stu

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

EDIT, yıllar sonra: HAYIR! Bunu asla yapma! Gençtim ve aptaldım!

Tekrar düzenleyin: Birkaç kişi bunu neden yapmamanız gerektiğini sordu . Bunun birkaç nedeni var:

  1. Sunum: HTML, sunuma odaklanmalıdır. JS'yi bir HREF'e koymak, HTML'nizin şu anda iş mantığıyla uğraştığı anlamına gelir.

  2. Güvenlik: HTML'nizdeki Javascript, İçerik Güvenliği Politikası'nı (CSP) ihlal eder . İçerik Güvenliği Politikası (CSP), Siteler Arası Komut Dosyası (XSS) ve veri enjeksiyon saldırıları gibi belirli saldırı türlerini algılamaya ve azaltmaya yardımcı olan ek bir güvenlik katmanıdır. Bu saldırılar veri hırsızlığından site tahrifatına veya kötü amaçlı yazılım dağıtımına kadar her şey için kullanılır. Daha fazlasını buradan okuyun .

  3. Erişilebilirlik: Bağlantı etiketleri diğer dokümanlara / sayfalara / kaynaklara bağlantı içindir. Bağlantınız hiçbir yere gitmezse, bir düğme olmalıdır . Bu, ekran okuyucularının, braille terminallerinin vb. Neler olup bittiğini belirlemesini ve görme engelli kullanıcılara faydalı bilgiler vermesini çok daha kolay hale getirir.


16
Belki de bu yöntemle ilgili sorunların bir açıklaması? Bundan daha kötü midir href='#'ve alert()de onclick?
Thomas Ahle

3
Javascript için yeniyim ve bunun neyin yanlış olduğunu anlamıyorum .. Herhangi bir açıklama iyi olurdu
nilanjanaLodh

1
Merhaba, neden kullanmama konusunda da emin değilim? Ben bir JS işlevi çağırmanız gereken bir senaryoda sıkışmış, ama tüm belirtebiliyorum bir bağlantıdır. Ve çözümünüz işe yaradı.
skapie19

43

Ve neden jQuery ile mütevazi değil:

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

HTML

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

2
Bu, SEO için tarayıcıların bağlantıyı bulup takip edeceği şekilde çalışır mı?
Ahi Tuna

11
çünkü herkes jquery kullanmıyor.
stu

1
@GregMiernicki Evet ve hayır bağlantı ile ne demek istediğinize bağlı olarak. HTML'ye bakın. Bir web tarayıcısı veya Javascript kapalı olan herhangi bir istemci, verilen HREF'i ziyaret eder. Javascript özellikli istemciler tıklama eylemini çalıştırır ve daha sonra bu işlev yanlış bir değer döndürmezse veya preventDefault'u çağırmazsa bağlantıyı takip eder. Bu durumda, href bir geri dönüş, bu yüzden neden "mütevazi" olarak adlandırılır
Evan Langlois

12

Göze batmayan Javascript'in birçok avantajı var, burada atılan adımlar ve neden kullanmanın iyi olduğu.

  1. bağlantı normal şekilde yüklenir:

    <a id="DaLink" href="http://host/toAnewPage.html"> burayı tıklayın </a>

javascript etkin olmayan tarayıcılarda çalışacağı için veya javascript kodunda çalışmayan bir hata varsa bu önemlidir.

  1. javascript sayfa yüklemesinde çalışır:

     window.onload = function(){
            document.getElementById("DaLink").onclick = function(){
                   if(funcitonToCall()){
                       // most important step in this whole process
                       return false;
                   }
            }
     }
  2. javascript başarılı bir şekilde çalışırsa, geçerli sayfadaki içeriği javascript ile yükleyebilirse, return false, bağlantı tetiklemeyi iptal eder. başka bir deyişle, return false koyarak, javascript başarıyla çalıştırılırsa bağlantıyı devre dışı bırakma etkisi vardır. Javascript çalışmazsa çalışmasına izin verirken, içeriğinizin her iki şekilde görüntülenmesi için güzel bir yedekleme yapmak, arama motorları ve kodunuz kırılırsa veya javascript olmayan bir sistemde görüntülenir.

konuyla ilgili en iyi kitap Jeremy Keith tarafından "Dom Scription"


9

Veya, PrototyJS kullanıyorsanız

<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
Olay işleme işlevlerini sıraya koymak zorunda kalmamayı seviyorum.
Mark Biek

1
Tek yol bu. Lütfen satır içi cevapları oylayın. Bu günlerde mazereti olmayan bir uygulamadır.
Andrew Hedges

5
@Andrew: Lütfen downvote'unuzla birlikte satır içi cevapların neden kötü olduğunu açıklayan bir yorum bırakın.
Kertenkele Bill

8

onclickOlayı şu şekilde kullanabileceğinizi düşünüyorum :

<a onclick="jsFunction();">

0

jister ile mister_lucky cevap kullanımına dayalı:

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

HTML Kodu:

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

-2

sadece javascript kullanın: ---- örnek

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 })
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.