SORU
24 Mayıs 2012, PERŞEMBE


HTML5 Tarihine tarayıcı kaydırma önlemek popstate

Popstate bir olay ortaya çıktığında, belge kaydırma varsayılan davranışı önlemek mümkün mü?

Sitemizde kullanır ve History.js ve durum değişiklikleri animasyon kaydırma jQuery kullanıcı etrafında olup pushstate veya popstate aracılığıyla sayfanın farklı alanlara kaydırma. Sorun otomatik olarak popstate bir olay meydana önceki devlet kaydırma konumu geri yükler tarayıcı.

Kapsayıcı öğe 100% genişliği ayarlayın ve belgenin yüksekliğini kullanarak ve bu kabın içinde içeriği kaydırmayı denedim. Bunu buldum sorun belge kaydırma kadar pürüzsüz olması için görünmüyor; özellikle css3 çok kullanıyorsanız kutusu-gölgeler ve eğimler gibi.

Ayrıca bir kullanıcı kaydırma ve tarayıcı sayfayı kaydırır sonra yeniden başlatılan sırasında belgenin kaydırma konumu (popstate) depolama denedim. Bu Firefox 12'de gayet iyi çalışıyor ama Chrome 19'da bir titreşim sayfa kaydırılan ve geri kaynaklanmaktadır. Bu kaydırma ve kaydırma olayı harekete kaydırma konumu geri olduğu) arasında bir gecikme ile ilgisi olduğunu düşünüyorum.

Firefox sayfa kaydırma olayı) popstate yangınlar ve Krom harekete önce verilirse popstate ilk belgeyi kayar.

Bir kullanıcı geri gitmez history API ya da bir çözüm yukarıdaki gibi kullanın ya da sadece kaydırma konumunu değiştirmek görmezden gördüğüm tüm siteler ileriye (örneğin GitHub)/.

Bu belge hiç kaydırılan popstate olayları önlemek mümkün mü?

CEVAP
20 AĞUSTOS 2012, PAZARTESİ


Bu reported issue with the mozilla developer core for more than a year now olmuştur. Ne yazık ki, bilet gerçekten ilerleme olmadı. Krom aynı olduğunu düşünüyorum: tarayıcı davranışlarını doğal. yana kaydırma konumu onpopstate js ile mücadele için güvenilir bir yol Var mı

Eğer bakarsanız gelecek için umut olsa da, açıkça devlet nesneyi temsil edilmek kaydırma konumu için istediği HTML5 history spec,:

Tarihi nesneler oturum tarihi girdileri düz bir liste şeklinde tarama bağlamı oturum geçmişi temsil eder. Her oturum tarihi giriş URL ve durum nesnesi, ve ayrıca bir başlık olabilir isteğe bağlı olarak, bir Belge nesnesi, form verilerini, kaydırma konumunu ve diğer bilgileri kapsamaktadır.

Bu, ve eğer okuduğunuz yorumlar mozilla bilet yukarıda, bazı gösterge verir bu mümkün olduğunu yakın gelecekte kaydırma konumunu olmayacak artık geri onpopstate, en azından insanları kullanarak pushState.

Ne yazık ki, o zamana kadar, kaydırma konumu pushState kullanıldığında depolanır, ve replaceState kaydırma konumunu değiştirmez. Aksi takdirde, çok kolay olurdu, ve replaceState kullanıcı sayfada (biraz dikkatli onscroll işleyicisi ile) kaydırılan her zaman geçerli Kaydırma konumunu ayarlamak için kullanabilirsiniz.

Ayrıca ne yazık ki, HTML5 spec değil belirtin tam olarak ne zaman popstate olay olmalı ateş, aynen şöyle diyor: «ateş, bazı durumlarda gezinirken bir oturum tarihi giriş», hangi değil açıkça söylemek gerekirse ... ... önce veya sonra; eğer her zaman önce, bir çözüm ile işleme kaydırma meydana gelen olay sonrasında popstate olurdu mümkün.

Kaydırma olayı iptal mi?

Ayrıca, kolay, değil mi ki kaydırma olayı nereye iptal edilemez olurdu. Eğer, sadece iptal ilk kaydırma olayı bir dizi (kullanıcı kaydırma olayları gibi lemmings, geliyorlar onlarca, oysa kaydırma olayı ateş ederek tarihi yeniden konumlandırma tek bir tane), ve sorun olmaz.

Şimdilik çözüm yok

Bildiğim kadarıyla görüyorum ki, tek şey önerebilirim şimdilik beklemek için HTML5 Spec için tam olarak uygulanan ve rulo ile tarayıcı davranışlarını bu durumda, bunun anlamı: animasyon kaydırma zaman tarayıcı sağlar, ve tarayıcıyı yeniden konumlandırmak sayfa ne zaman bir tarihi olay.Pozisyon zenginliği etkisi tek şey sayfayı iyi bir şekilde geri dönmek için getirildiğinde pushState kullanın.Başka bir çözüm ya da hata var, ya da tarayıcı özgü, ya da her ikisi de olmak durumundadır.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BenjiManTV

    BenjiManTV

    20 Mart 2011
  • Dion Coulls

    Dion Coulls

    16 AĞUSTOS 2006
  • RawBrahs

    RawBrahs

    28 Aralık 2010