2010-11-07 14 views
9

Albümdeki resimler arasında geçiş yaptığımda facebook'un URL'yi nasıl değiştirdiğini merak ediyorum. Hash etiketi yok, sadece gerçek bir url var.URL ile JavaScript'i değiştirin (karma etiketi yok)

Örnek: akım url: Gelecek tıklarsanız facebook.com/photo.php?fbid=XXXXXX1 ve facebook.com/photo.php?fbid=XXXXXX2

için url değişiklikleri

bilen var mı Bunu JavaScript ile nasıl gerçekleştirebiliriz?

Ör:

benim testlerinde elde

cevap

9

Evet. Check ith anahtarını kullanmak yerine yeni bir geçmiş durumunu (bir HTML5 şey) iter.

+0

olmalıdır. Bu diğer tarayıcılarda da çalışıyor mu? – daniel

+0

Bu, eğer daha sonra çalışıyorsa? herhangi bir site başka bir site gibi davranabilir :(herwere bakın. –

+0

@ JamesM-SiteGen: Hayır, Matthew Brown tarafından sağlanan bağlantıda belirtildiği gibi çapraz etki alanları çalışmıyor: "Yeni URL, geçerli URL ile aynı kaynakta olmalıdır;" –

0

, sadece karma etiketini değiştirir Gerçek URL: içinde

http://www.facebook.com/photo.php?fbid=x&set=z 

tıklayarak sonraki sonuçlar: karma sonra

http://www.facebook.com/photo.php?fbid=x&set=z#!/photo.php?fbid=y&set=z&pid=pid&id=id 

parçası Google AJAX crawl için yapılandırıldı. Ancak tarayıcının amacı için, sadece bir karma (parça tanımlayıcı).

+0

Mhh, ama benim Firefox 4'üm (beta) bana karma göstermiyor mu ?! – daniel

+0

Evet, güncellemeye gerçekten benzeyen karmaşayı bu yüzden kafa karıştırıcı olduğunu fark ettim. –

+0

@dan, haklısınız, Firefox 4'te farklı bir şey yapıyor. Karma kullanılmıyor ve adres çubuğu hiçbir zaman değişmiyor, ancak bir kabuk açık tutarsam, 'window.location' güncellemeleri. –

1

Benim ilk önsezi olacaktır:

document.location = facebook.com/photo.php?fbid=XXXXXX2; 

varsayılan sayfayı yeniden yükle eylemi önlemenin bir şekilde bulunmaktadır.

+1

URL'yi değiştirirseniz (karma hariç) yeniden yüklemeyi engellemenin bir yolu yoktur. –

+0

Bahşiş için teşekkürler, sadece bir teoriydi. –

+0

ReferenceError: facebook tanımlı değil :) bu bir dizgedir :) Ve bu durumda "http: // başlangıçta –

1

özetlenmesi tüm cevapları,

biz Facebook kullanan (Ben FB kodlayıcı değilim) söyleyebiliriz:

  • HTML5 bu yöntemleri destekleyen tarayıcı üzerinde window.history.pushState/replaceState/popState yöntemleri (Birini düşünmek Chrome’dur Bu şekilde, Facebook , gerçek URL'u değiştirir (yalnızca # karakterinden sonraki bölüm değil). Bu yeni HTML5 yöntemlerini desteklemeyen diğer tarayıcılar, On

  • (IE6/IE7 ve IE8 gibi), Facebook sadece basitçe window.location.hash özelliğini ayarlayarak, # karakterden sonra url kısmını değiştirir.