Чи можна запобігти поведінці за замовчуванням при прокрутці документа, коли відбувається подія popstate?
Наш сайт використовує анімоване прокручування jQuery та History.js, а зміни стану повинні прокручувати користувача по різних областях сторінки, за допомогою pushstate або popstate. Проблема полягає в тому, що браузер автоматично відновлює позицію прокрутки попереднього стану, коли відбувається поп-стан.
Я спробував використати елемент контейнера, встановлений на 100% ширини та висоти документа, та прокрутити вміст всередині цього контейнера. Проблема, яку я виявив, полягає в тому, що вона, здається, не настільки гладка, як прокрутка документа; особливо якщо використовується велика кількість css3, наприклад, тіні та градієнти.
Я також спробував зберегти позицію прокрутки документа під час прокрутки, ініційованої користувачем, і відновити її після того, як браузер прокручує сторінку (у popstate). Це добре працює у Firefox 12, але в Chrome 19 з’являється мерехтіння через прокручування та відновлення сторінки. Я припускаю, що це пов’язано із затримкою між прокруткою та спрацьованою подією прокрутки (де позиція прокрутки відновлюється).
Firefox прокручує сторінку (і запускає подію прокрутки) перед запуском popstate, а Chrome запускає popstate, а потім прокручує документ.
Усі сайти, які я бачив, що використовують API історії, використовують або рішення, подібне до наведених вище, або просто ігнорують зміну позиції прокрутки, коли користувач повертається вперед / назад (наприклад, GitHub).
Чи можна запобігти прокручуванню документа взагалі на виставках, що проводяться у державній залі?
document.body.clientHeight
але я не бачив, як це працює у всіх браузерах.