2013-01-15 14 views
13

Şu ana kadar bulduğum şeyin tersini yapmak istiyorum. Js ile çok fazla yükseklik ayarlıyorum ve sayfa yüklendikten sonra url'deki hashtag dosyasına gitmek istiyorum. ... buraya göz atın bu basit tahmin ediyorum ama bir örnek için ... bariz bir cevap göremiyorum kodu kullanarak bu girişimiSayfa yüklendikten sonra hashtag'e nasıl giderim?

http://alavita.rizenclients.com/#story

...

$(window).load(function() { 
    var hashTag = window.location.hash; 
    window.location = '/' + hashTag; 
}); 

aslında ... etiketli bir bölümünün üstüne beni almaz

+0

Yepnope ile tamamlanmış bir işlevi zincirleme kullanarak bitirdim. jQuery içerik doldurulmadan önce hasthtag ofsetinin değerini alıyordu. Tamamen yardımcı olduğunuz kodun bir karışımıyla başladım. – brunam

cevap

23

sadece sayfa yüklendikten sonra karma değiştirmek isterseniz: Yeni karma ile URL'ye istiyorsanız

window.onload = function (event) { 
    window.location.hash = "#my-new-hash"; 
}; 

: Eğer dinlemek istiyorsanız

window.location.href = "http://website.com/#my-new-hash"; 

URL'nin karma değerinde değişiklikler için; window.onhashchange DOM olayını kullanmayı düşünebilirsiniz.

window.onhashchange = function() { 
    if (location.hash === "#expected-hash") { 
     doSomething(); 
    } 
}; 

Ancak, henüz her büyük tarayıcı tarafından desteklenmez. Artık geniş bir browser support var. window.location.hash'u küçük aralıklarla yoklayarak da değişiklikleri kontrol edebilirsiniz, ancak bu da çok etkili değildir.

Bir tarayıcılar arası çözüm için; Bu yöntemleri ve birkaçını bir geri dönüş mekanizmasıyla birleştiren Ben Alman's jQuery hashchange plugin'u öneririm.

DÜZENLEME: Sorunuz güncellemesinden sonra, sana sayfa yer imi gitmek için ?:

Sen Element.scrollTop veya jQuery'nin $.scrollTop() yöntemi kullanabilirsiniz istiyorum anlıyoruz.

$(document).ready(function (event) { 
    var yOffset = $("#my-element").offset().top; 
    $("body").scrollTop(yOffset); 
}); 

Bkz. Belgeleme here.

0

sadece mevcut konumunu ayarlamak olabilir:

window.location = 'http://alavita.rizenclients.com/#story'; 

Ya (zaten değilse) karma ayarlayın, ardından yeniden:

window.location.hash = hashTag; 
window.location=window.location.href; 
+0

Hatta bu kod çalıştıran: [kod] $ (pencere) .Load (fonksiyonu() { \t \t \t var hashtag'ının = window.location.hash; \t \t \t window.location = '/' + Karma etiket; \t \t }); aslında beni etiketli bölümün en üstüne götürmez ... – brunam

+0

cevabımı başka bir yöntem eklemek için düzenledim –

0

sorunuzu değiştirdi.

Bu çözüme göz atın. https://stackoverflow.com/a/2162174/973860 böylece neler olup bittiğini ve çapraz tarayıcı çözümünün nasıl uygulanacağını anlıyorsunuz.

BİLDİRİM: Altta ihtiyacınız olanı yapacak jQuery eklentisinden bahseder.

http://benalman.com/projects/jquery-hashchange-plugin/

Bu eklenti böyle bir şey yapmanızı sağlayacaktır. Bu, mevcut sayfanız için çalışacaktır. Ama daha sağlam olması için onu değiştirmek isteyebilirsiniz.

$(function(){ 

    // Bind the event. 
    $(window).hashchange(function(){ 
     // get the hash 
     var hash = window.location.hash; 
     // click for your animation 
     $('a[href=' + hash + ']').click(); 
    }) 

    // Trigger the event (useful on page load). 
    $(window).hashchange(); 

}); 
İlgili konular