2010-06-26 33 views
18

Ben a çapa (bağlantı) Onları tüm tarayıcılarda aynı davranan ama ne olduğunu görmekjavascript :; vs javascript: void (0);

<a href="javascript:;" onclick="DoSomething();">Link</a> 

<a href="javascript:void(0);" onclick="DoSomething();">Link</a> 

için href attribure bunları kullanırsanız javascript:; ve javascript:void(0); arasındaki fark nedir bilmek istiyorum teknik farktır ?

Selamlar, Magdy

+0

Önemli not: Buradaki her yanıt, "onclick" özelliklerinin artık kullanılmaması gerektiğini işaret etmektedir. Sadece bunu kullanarak gösteren ediyorum, sen tanıdığım – Matchu

+1

:) bilginin çok önemli bir parça kaçırmayın emin olun ama benim kodda hep bu modeli olarak azaltmak için HTML işaretlemesi –

cevap

15

Bir, hiçbir ifadeleri vardır JavaScript çalışan diğer açıklama 0 değerlendirir JavaScript çalıştırır ve sonra undefined döndürür.

Neither should be used.

+2

1 doğrudan koyarak değil olay işleyicisi kullanmak . Gerçekten pedantic olmak, aslında ilk * tek * ifadesini içerir, [Boş Bildirimi] (http://bclary.com/2004/11/07/#a-12.3) ';: P – CMS

+0

+1, ayrıca cesaret kırıcı bu kalıbın –

+3

İlk durumda hiçbir ifadenin değerlendirilmediği doğru değildir. Yarı-kolon, ** bir ifadedir, boş bir ifadeyi temsil eder. –

5

ikincisi javascript:void(0); daha okunabilir ve bu kod hiçbir şey yapar diyor kabul edilen bir kongre olduğunu Sadece bu.

Bu endüstri standartları bu sözdizimini ilgili uzun bir yol kat olduğunu belirtmek gerekir. Progressive Enhancement'a bakmalısın.

5

David'e, ne kullanılması gerektiğine katılıyorum. Javascript sözde protokolü, bazı tarayıcılarda sayfayı beklenmeyen sonuçlara yol açabilecek bir bekleme durumuna getirebilir. Bir örnek olarak, birisi bir javascript'i tıkladığında IE6'yı kilitleyen bir web uygulamasında hata ayıklamaya çalışıyorum: sayfa yüklendikten kısa bir süre sonra bağlantı. Bekleyen duruma giren sayfanın başlatmaya çalışırken bir Flash filmi ile çakıştığı ortaya çıktı. Bu formatta biriyle bağlantıyı değiştirerek sorunu çözüldü:

<a href="#" onclick="DoSomething(); return false;">Link</a> 

aslında takip ediliyor bağlantıyı engeller "return false".

+2

Eğer JavaScript varsa, 'DoSomething' olacak ve eğer değilse… sayfanın üst kısmına bağlanır. Bu neredeyse her zaman korkunç bir geri dönüş pozisyonu olacak. – Quentin

+0

Gelecek için not: Tanrıya şükür, artık IE6 hakkında endişelenmenize gerek yok! –