SORU
17 AĞUSTOS 2010, Salı


&; javascript:void(0);" quot; vs "return false" vs "preventDefault()"


Bazı bağlantı hiç bir şey yapmadan sadece javascript eylemler için yanıt değil ben istediğim zaman bağlantı sayfanın üst kenarına kaydırma önlemek için en iyi yolu nedir ?
Bunu yapmanın bir sürü yolu biliyorum, iyi çalışmıyor gibi görünüyor :

<a href="javascript:void(0)">Hello</a>

ya

<a id="hello" href="#">Hello</a>
<script type="text/javascript>
  $(document).ready(function() {
    $("#toto").click(function(){
      //...
      return false;
    });
  });
</script>

ve hatta :

<a id="hello" href="#">Hello</a>
<script type="text/javascript>
  $(document).ready(function() {
    $("#toto").click(function(event){
      event.preventDefault();          
      //...
    });
  });
</script>

Herhangi bir tercihiniz var mı ? neden ? hangi koşullar ?

PS: tabii ki yukarıdaki örnekler jquery kullanıyorsun ama mootools veya prototip için benzerleri var varsayalım.

CEVAP
17 AĞUSTOS 2010, Salı


Etmektedir

  • javascript: URL her zaman Kaçınılması gereken bir korku
  • satır içi olay işleyicisi öznitelikleri parlak değil, ama OK hızlı bir gelişme/biraz test sürüşü için;
  • script bağlama, işaretleme temiz bırakarak, genellikle en iyi yöntem olarak kabul edilir. jQuery bu teşvik, ama düz JS herhangi bir kütüphane bunu yapamazsın sebep yok.

Yanıt:

  • Bir WordPress kullanmak return false preventDefault stopPropagation, anlamını, hem ana unsurlar önem veriyorsan farklı olay bildirim almak anlamına gelir;
  • bir WordPress kullanmak burada saklanıyor ama preventDefault/stopPropagation farklı genelde(returnValue/cancelBubble)YANİ yazılmış olması.

Ancak:

  • Bir bağlantısı olmayan bir bağlantı var. Herhangi bir bağlantı yok; bir eylem. <a> gerçekten bu iş için ideal bir işaretleme değil. Eğer birisi orta-tıklayın, veya yer imi eklemek için çalışırsa yanlış olur, ya da başka herhangi bir bağlantı vardır zorluklar.
  • İçin durumlarda gerçekten nokta bir şey, ne zaman açar/kapatır başka bir öğe üzerinde sayfa, set bağlantı noktası #thatelementsid kullanım ve dikkat çekmeyen dizileri kapmak öğesi KİMLİĞİ bağlantıyı adı. Ayrıca bağlantıyı diğer bağlamlarda yararlı olur belge yükleme location.hash bu öğeyi açmak için kokladık.
  • Aksi takdirde, sadece bir eylem için hiçbir şey, iyi bir şekilde işaretlemek olacaktır: <input type="button"> <button type="button">. CSS ile Eğer bir düğme yerine bir bağlantı gibi görünmek için stil.
  • Ancak oldukça IE kurtulup, Firefox alamazsın düğmesi tasarımı bazı yönleri vardır. Genellikle önemli değil, ama eğer gerçekten mutlak görsel kontrol gerekirse bir uzlaşma <span> yerine kullanmaktır. Bu gerçekten düzgün bir standart olmamasına rağmen tabindex bir mülk-erişilebilir klavye çoğu tarayıcıda bir şekilde yapabilirsiniz. Ayrıca Boşluk veya Girin etkinleştirmek için tuşa basma gibi algılayabilirsiniz. Bu biraz yetersiz, ama yine de oldukça popüler (YANİ, biri için, böyle yapıyor).
  • Başka bir olasılık <input type="image">. Bu saf görüntü düğmeleri için tam bir görsel kontrol, ama sadece düğmeye erişilebilirlik avantajları vardır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Chuck Testa

    Chuck Testa

    14 AĞUSTOS 2011
  • Justin Schenck

    Justin Schen

    24 Kasım 2006
  • RaverX DouBle StAg XI

    RaverX DouBl

    23 Mayıs 2008