Zapobiegaj przewijaniu przeglądarki na popstate historii HTML5

Czy można zapobiec domyślnemu zachowaniu przewijania dokumentu, gdy wystąpi zdarzenie popstate?

Nasza strona wykorzystuje animowane przewijanie jQuery i History.js, a zmiany stanu powinny przewijać użytkownika do różnych obszarów strony, czy to poprzez pushstate czy popstate. Problem polega na tym, że przeglądarka automatycznie przywraca pozycję przewijania poprzedniego stanu, gdy wystąpi zdarzenie popstate.

Próbowałem użyć elementu kontenera ustawionego na 100% szerokości i wysokości dokumentu i przewijając zawartość wewnątrz tego kontenera. Problem z tym, że go znalazłem, nie wydaje się być tak gładki, jak przewijanie dokumentu; zwłaszcza jeśli używasz wielu css3, takich jak cienie i gradienty.

Próbowałem także zapisać pozycję przewijania dokumentu podczas przewijania inicjowanego przez użytkownika i przywracania go po przewinięciu strony przez przeglądarkę (na popstate). Działa to dobrze w Firefoksie 12, ale w Chrome 19 występuje migotanie spowodowane przewijaniem i przywracaniem strony. Zakładam, że ma to związek z opóźnieniem między uruchomionym przewijaniem i przewijaniem (w którym przywracana jest pozycja przewijania).

Firefox przewija stronę (i uruchamia zdarzenie przewijania) przed pożarem popstate i Chrome uruchamia najpierw popstate, a następnie przewija dokument.

Wszystkie strony, które widziałem, używające historii API, albo używają rozwiązania podobnego do powyższych, albo po prostu ignorują zmianę pozycji przewijania, gdy użytkownik wraca / przekazuje (np. GitHub).

Czy jest możliwe, aby zapobiec przewijaniu dokumentu na imprezach popstate?

questionAnswers(11)

yourAnswerToTheQuestion