Ajax, geri düğmesi ve DOM güncellemeleri
Eğer javascript değiştirir DOM sayfa, kullanıcı gider sayfa B ve sonra hits geri düğmesi geri dönmek için sayfa A. Tüm değişiklikler için DOM sayfa kaybolmuş ve kullanıcı sunulan sürüm olduğunu ilk alınan sunucu.
Stackoverflow, reddit ve birçok diğer popüler web sitelerinde bu şekilde çalışır. (bu soru için test yorum eklemek, farklı bir sayfaya gidin deneyin ve geri vur geri gel düğme yorumunuz olacak "") gitti
Bu mantıklı, ancak bazı web siteleri (apple.com, basecamphq.com vb) bir şekilde tarayıcı kullanıcı sayfanın son durumu hizmet etmeye zorluyor. (http://www.apple.com/ca/search/?q=ipod, üst bağlantı Popülerlik ve geri düğmesi - DOM güncellemeleri korunmuş olacak) ' I söyle tıklayın
nerede tutarsızlık nereden geliyor?
CEVAP
Cevap: diğer şeyler Arasındakaldırma olayları ileri/geri önbellek geçersiz olmasına neden.
Bazı tarayıcılar sözde tüm web Sayfası mevcut durumu store "" veya "page cache". bfcache Bu yeniden oluşturma yoluyla geri gidildiğinde Bu sayfa Çok hızlı ve ileri düğmeleri için onlara izin verir, ve DOM ve JavaScript değişkenlerin durumunu korur. Ancak, ne zaman bir sayfa içerir onunload olayları, bu olaylar olabilecek koymak sayfasına işlemeyen bir devlet, ve bu kadar sayfa yok kayıtlı bfcache ve olmalıdır yeniden (ama olabilir yüklü gelen standart önbellek) ve yeniden işlenen sıfırdan da dahil olmak üzere çalışan tüm yüklendiğinde işleyicileri. Bu bfcache üzerinden bir sayfa dönerken, DOM yüklendiğinde işleyicileri sayfa zaten yüklü olduğu için) ateş kalmadan önceki haliyle muhafaza edilmektedir.
Bu bfcache davranışını Cache-Control ve diğer HTTP başlıkları ile ilgili standart tarayıcı önbelleğini farklı olduğunu unutmayın. Birçok durumda, tarayıcılar, aksi takdirde standart önbellekte saklamak olmasa bile bfcache bir sayfa önbelleğe alır.
bir WordPress kullanmak bir pencere kaldırma olayı otomatik olarak ekler, ne yazık ki jQuery kullanarak DOM koruma bfcache içinde saklı olmaktan diskalifiye ve sayfa ileri/geri hızlı olacaktır. [Güncelleme: bu sadece IE için geçerlidir, böylece 1.4 jQuery] düzeltildi
- Information about the Firefox bfcache
- Information about the Safari Page Cache possible future changes to how unload events work
- Opera uses fast history navigation
- Chrome sayfa önbellek (, *[1]*6) yok
- DOM manipülasyonları ile oynamak için sayfaları ve bfcache:
Yolunu kesmek yumuşak klavye geri düğm...
Nasıl " gizlemek için;geri" d...
Android: çıkış etkinliği için İKİ kez ...
Algılama Geri Düğmesi/URL Değiştirmek ...
UİBarButton düğmesi ok renk iOS 7 geri...