Можно ли предотвратить поведение по умолчанию прокрутки документа при возникновении события popstate?
Наш сайт использует анимированную прокрутку jQuery и History.js, а изменения состояния должны прокручивать пользователя в разные области страницы, будь то через pushstate или popstate. Проблема заключается в том, что браузер автоматически восстанавливает положение прокрутки предыдущего состояния, когда происходит событие popstate.
Я попытался использовать элемент контейнера, установленный на 100% ширину и высоту документа и прокрутку содержимого внутри этого контейнера. Проблема с тем, что я обнаружил, так это не так гладко, как прокрутка документа; особенно при использовании большого количества css3, таких как тени и градиенты.
Я также попытался сохранить позицию прокрутки документа во время прокрутки, инициированной пользователем, и восстановить ее после того, как браузер прокручивает страницу (по popstate). Это отлично работает в Firefox 12, но в Chrome 19 есть мерцание из-за прокрутки и восстановления страницы. Я предполагаю, что это связано с задержкой между прокруткой и запущенным событием прокрутки (где позиция прокрутки восстанавливается).
Firefox прокручивает страницу (и запускает событие прокрутки) перед тем, как срабатывает всплывающее окно, и Chrome сначала запускает popstate, затем прокручивает документ.
Все сайты, которые я видел, которые используют API истории, используют либо решение, аналогичное приведенному выше, либо просто игнорируют изменение положения прокрутки, когда пользователь возвращается/пересылает (например, GitHub).
Возможно ли предотвратить прокрутку документа на всплывающие события?