Bağlantının içinde pound "#" işareti olduğunda ne olur?


97

Bazı siteleri inceledim ve url'de pound (#) işareti var. Bu ne işe yarıyor?

 <a href="#" >Link name</a>

Yanıtlar:


107

Bu bir "parça" veya "adlandırılmış çapa". Bir belgenin bir kısmına bağlanmak için kullanabilirsiniz . Tipik olarak bir sayfaya bağlantı oluşturduğunuzda, tarayıcı onu sayfanın en üstünde açar. Ancak yarı yolda bir bölüme bağlantı oluşturursunuz, parçayı o başlığa (veya her neyse) bağlamak için kullanabilirsiniz.

Sayfada <a name="whatever"/>etiket yoksa, tarayıcı yalnızca sayfanın üst kısmına bağlanacaktır. Parça boşsa, sadece sayfanın üst kısmına da bağlanacaktır.

Yalnızca bir parça için<a href="#">Link name</a> , o zaman bu yalnızca geçerli sayfanın üst kısmına bir bağlantıdır .

Bu tür bir bağlantının javascript ile birlikte kullanıldığını sıklıkla görürsünüz. Standartlarla uyumlu HTML bir hreföznitelik gerektirir , ancak isteği javascript ile ele almayı planlıyorsanız, "#" makul bir yer tutucu işlevi görür.


1
+1 Resmi terim bir "hash referansı" değil, bir URL parçası olmasına rağmen: w3.org/TR/WD-html40-970708/htmlweb.html#h-4.1.1
Jason Hall

Evet, cevabımda onu "parça" olarak değiştirdim, çünkü çoğu insan bunu kullanıyor. Yine de "resmi" bir adı olduğunu bilmiyordum :)
Dean Harding

2
Tarayıcılar bunu neden 'sayfanın başına git' olarak ele alıyor: Teknik olarak, sayfayı değiştirdiniz. Bağlantıyı tıkladıktan sonra, # işaretinin adres çubuğundaki URL'ye gerçekten eklendiğini fark edeceksiniz ve geri düğmesini tıklarsanız onu tekrar kaldıracaktır. Bunun bir belgenin bir kısmına, daha çok belgenin içindeki bir yere bağlantı olduğunu söyleyemem. Aksi takdirde, temelde yazdığım şeyin aynısı ...
animuson

# İle biten bir URI'ye genel sözdizimi tarafından izin verilir ve bir tür boş parça olarak düşünülebilir. Metin / html veya herhangi bir XML türü gibi MIME belge türlerinde, bu sözdizimsel olarak yasal yapıya uyacak boş tanımlayıcılara izin verilmez. Web tarayıcıları genellikle boş bir bölüm için belgenin üst kısmını görüntüler. - en.wikipedia.org/wiki/Fragment_identifier
IcyBrk

Ayrıca tarafından "Böyle bir temsilidir varsa, o zaman fragmanının semantik bilinmeyen olarak ve etkin bir şekilde serbest olan vardır." RFC3986 kaynaktan ( tools.ietf.org/html/rfc3986#page-24 )
IcyBrk

23

... sadece birkaç ekstra yararlı ipucu eklemek için.

document.location.hashJavaScript'e ile erişebilir ve değiştirebilirsiniz .

Adlandırılmış bir bağlantıya (ör. <a name="top"></a>) Veya karşılık gelen bir kimliğe sahip bir öğeye (ör. <div id="top"></div>) İşaret edebilir .

Birini kendi başına görmek (örneğin <a href="#" onclick="pop()">popup</a>), genellikle bir bağlantının yalnızca JavaScript'i çalıştırmak için kullanıldığı anlamına gelir. Bu kötü bir uygulamadır.

Herhangi bir aöğe, hrefgeçerli bir kaynağa işaret eden bir a sahip olmalıdır . Eğer biri yoksa, gibi başka bir eleman kullanmayı düşünün button.


1
Bu, özellikle iyi bir uygulama değil, iyi bir nokta ... ama iyi olmaması, onu her yerde bu şekilde kullanmayacağınız anlamına gelmez :)
Dean Harding

1
@alex, eğer kötü bir uygulama ise, bunun yerine iyi uygulamanın ne olacağını bize söyleyin .
Ryan Lundy

@Kyralessa Bir sonraki paragrafta tam oradaydı. Her neyse, umarım daha anlaşılır bir düzenleme yaptım.
alex

2
@alex, muhtemelen insanların düğmeler yerine bağlantılar kullanmalarının bir nedeni, bağlantıların görünümünü istemeleridir. Bir düğmenin nasıl bağlantı gibi görüneceğini açıklayan bir sayfaya bağlantıya ne dersiniz? Örneğin, HTML düğme testi
Ryan Lundy

1
@alex, bir bağlantıda # kullanmanın kötü bir uygulama olduğunu söylemekten fazlası değil. Tüm OP'nin sorduğu şey ne yaptığıdır.
Ryan Lundy

11

# bir bağlantıya giden bağlantıyı gösterir.

Ayrıca başka bir şeyden de söz edeceğimi düşündüm:

JavaScript'i etkinleştiren bir bağlantı için href olarak '#' kullanmak kötüdür çünkü sayfayı en üste kaydırır - ki bu muhtemelen istediğiniz şey değildir. Bunun yerine kullanın javascript:void(0).


Bu bağlantılara tıklamanın sayfayı en üste kaydırmaya zorladığını belirten +1.
Chris Calo

4
Artık bir çapaya ihtiyacınız yok. HTML5'ten (ve belki HTML 4'ten) itibaren <id> etiketine sahip herhangi bir öğe, bir parça tanımlayıcı tarafından hedeflenebilir. HTML5 belgelerine bakın: whatwg.org/specs/web-apps/current-work/multipage/…
Basil Bourque

2
İkisini de kullanmayın javascript:void(0)- buttonbağlantı değilse a kullanın.
alex

11

Pound işareti ( #), sayfada bir çapanın bulunduğunu belirtir. Örneğin, bunu sayfada bir yere eklerseniz:

<a name="foo"></a>

veya daha yakın zamanda:

<div id="foo">*part of page*</div>

ve sonra href'in bulunduğu sayfadaki bir bağlantıya tıklarsanız #foo, ad veya divid ile bağlantıya gidecektir foo.

Ancak, yalnızca href'e sahipseniz #, sayfanın en üstüne götürür.


2

Bu, sayfanın kendisine geri bağlanır. Genellikle aslında JavaScript çalıştıran bağlantılarla kullanılır.

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.