SORU
21 EKİM 2009, ÇARŞAMBA


Nasıl JavaScript tetikleyen bir bağlantı tıklandığında üst için kaydırma web sayfası durdurabilirim?

Bir bağlantı var o kadar kablolu jQuery veya JavaScript bir olay gibi

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

Nasıl üst için kaydırma sayfadan engellerim? Ben sayfaya bağlantı ama üstüne gidin gelmez çapa href özniteliği kaldırmak tıklayın-mümkün görünmüyor.

CEVAP
28 HAZİRAN 2012, PERŞEMBE


Kısa Cevap:

En basit şey # yerine #! href ayarlamaktır

Örneğin,

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

tıklandığında herhangi bir kaydırma değil.

Burada bir Keman bu gösteren (bir kaydırma çubuğu gelene kadar sadece tarayıcınızın şöyle dur):
http://jsfiddle.net/9dEG7/


Bu işleri neden spec inekler için:

Bu davranış Navigating to a fragment identifier bölümünde HTML5 spec belirtildi. "#" a href ile link belgenin üstüne gidin neden olan sebep bu davranış açıkça boş parça bir tanımlayıcı halletmenin yolu olarak belirtilen:

2. Eğerfragidboş dize, sonra belgenin belirtilen kısım belgenin üst

Bunun yerine "#!" a href kullanarak sadece bu kural önler, çünkü çalışır. Yok büyü hakkında ünlem işareti - sadece yapar uygun bir parça tanımlayıcı çünkü oldukça farklı bir tipik fragid ve olası hiç maç id name bir öğe üzerinde sayfa. Gerçekten de kullanabiliriz hemen hemen her şey sonra karma; tek fragids bu olmayacak kafi boş dize, kelime 'top', ya da dizeleri maçı name id öznitelikleri unsurları sayfada.

Daha doğrusu, biz sadece bize belirlemek için aşağıdaki algoritma 8 adım düşmesine neden olacak bir parça tanımlayıcı gerekirbelgenin bir parçası belirttifragid:

  1. URL URL ayrıştırıcı algoritması uygulamak ve izin verinfragidelde edilen ayrıştırılmış URL parçası bileşeni.

  2. Eğerfragidboş dize, sonra belgenin belirtilen kısım belgenin üst; algoritma burada dur.

  3. İzin verinfragid bytesyüzde çözümlenmesi sonucufragid.

  4. İzin verindecoded fragidUTF-8 kod çözücü algoritması uygulanması sonucu olabilirfragid bytes. Eğer UTF-8 kod çözücü kod çözücü bir hata verirse, dekoder iptal ve adım etiketli atlamak yerineno decoded fragid.

  5. Eğer DOM bir öğe varsa, bu KİMLİĞİ tam olarak eşitdecoded fragidsonra ağaç sırada ilk bu eleman belgenin belirtilen parçasıdır; algoritma burada dur.

  6. Hayır deşifre fragid: Eğer DOM öğesi ise orada tam olarak eşit olan bir name niteliği vardırfragid(21 ** değil), sonra ağaç sırada ilk bu eleman belgenin belirtilen parçasıdır; algoritma burada dur.

  7. Eğerfragidbir ASCII büyük küçük harf duyarsız dize top, sonra belgenin belirtilen kısım belgenin üst; algoritma burada dur maç.

  8. Aksi takdirde, belgenin belirtilen kısmı yok.

Adım 8 vurduğumuz sürecebelgenin belirtilen kısmı yokaşağıdaki kuralı devreye giriyor:

Eğer belirtilen kısmı ise yok ... sonra kullanıcı Aracısı bir şey yapmak gerekir.

tarayıcı kaydırma yok ediliyor.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Damien Walters

    Damien Walte

    20 AĞUSTOS 2006
  • Dion Coulls

    Dion Coulls

    16 AĞUSTOS 2006
  • RiceBunny

    RiceBunny

    16 ŞUBAT 2006