2010-08-17 26 views
11

Sekmeli arayüzlü bir sayfam var. Her sekmenin kendine özgü bir kimliği vardır. Karmadan sonra ekli imleci içeren o sayfaya işaret eden bağlantıları etkinleştirdim ve şu anda sayfada öğenin yerinde bir hash ile bir URL açan varsayılan tarayıcı davranışını atlatmaya çalışıyorum.Varsayılan karma davranışı önlemek için sayfa yükleme

Yani:

  • pageA bağlantılar böyle Sayfa B'ye: <a href="pageB.php#Tab4">Go</a>
  • pageB açılır ve benim jQuery doğru sekme aktive ettiği, ancak tarayıcı <div id="Tab4"> sayfada nerede bulunduğunu aşağı kayması durumunda.

Bu tam olarak önlemek istediğim şeydir.

Herhangi bir fikrin var mı? Teşekkürler!

cevap

43

Varsayılan karma davranışı engellemenin bir yolu yok, ancak karma şemayı değiştirebilirsiniz, böylece #tag sayfanızdaki herhangi bir kimlikle uyuşmuyor. Sayfa yükleme sırasında karma değerini alın ve bir sabit ekleyin (örn .: _hash), daha sonra jQuery'yi kullanarak buna ilerleyin.

Örnek: http://mysite/page.php#tab4

page.php <div id="tab4_hash"></div> sayfa yüklenirken

, doğru sekme yükleniyor tamamladıktan sonra tab4 + _hash

+1

. Teşekkürler! – bobsoap

+0

Hackish ama aradığım şey! ve bu açık bir şey düşünmediğim aptalca. Teşekkürler! –

+1

html5 ile, data/target veya data-hash gibi bir şeyi kullanarak elementi/div'i seçebilirsiniz. – nabrown78

1

, bu çalıştırmak yaparak div almak vardır:

window.location = '#'; 
+0

bunu denemedi, ancak ... ... aşağı doğru kayıyor mu? – nico

+0

Test edildi, webkit tarayıcılarında harika çalışıyor ancak FF'de başarısız oldu. IE'de denemedim. Ne öğrendiğimi anlatayım. –

3

bu kullanırsınız:

window.scrollTo(0,0); 

Bu şekilde, öğe kimliğini veya başka bir şeyi değiştirmeniz gerekmez.

Sorguyu, aşağı kaydırmak istediğim yere rastladım, ancak bir nedenle sayfanın sonuna doğru kaydırdı (hayır, yinelenen bir kimlik olmadı). Bunun nedeni, tarayıcının içeriğin yüklenmesi tamamlanmadan önce kimliğe kaydırılmasının ve fazla içeriğin öğeyi yeni kaydırma pozisyonunun üzerine itmesidir. Ben bu konuda düzelttim:

if(document.location.hash) 
{ 
    window.location = document.location.hash; 
} 

burada ifadesi zorunludur veya "eğer" varsayılan olarak sonsuz

0
  1. numarasına göre eleman gizlemek sadece gerektiği döngü = karma alabilirsiniz
  2. Аnd daha sonra, sayfa yüklendikten sonra, öğeyi görünür yaparsınız.

Burada daha fazla bilgi bulabilirsiniz: aradığım sadece ne mükemmel bir fikir, var How to disable anchor "jump" when loading a page?

İlgili konular