Есть ли способ отключить поведение, когда некоторые современные браузеры (Chrome и Safari) запоминают вашу позицию прокрутки на странице обновления?Отключить автоматическую прокрутку броузера после обновления страницы?
ответ
Для браузеров, которые поддерживают history.scrollRestoration поведение автопрокрутка может быть отключена:
if ('scrollRestoration' in history) {
history.scrollRestoration = 'manual';
}
Источник: https://developers.google.com/web/updates/2015/09/history-api-scroll-restoration
Поскольку это все еще экспериментальное свойство, кто-нибудь знает поддержку браузера? –
не только для хром, но и для всех я думаю, что это будет работать хорошо.
window.onload = function() {
window.scrollTo(0, 0);
};
После обновления вашего вопроса:
Я думаю, его лучше, если мы будем использовать некоторые куки или хранения сессии.
Это тоже была моя мысль - но мне не повезло с таким обратным вызовом - кажется, что хром делает автопрокрутку после того, как он заряжается. – Anthony
Вы пытались выстрелить после того, как документ готов?
$(document).ready(function(){
window.scrollTo(0, 0);
});
, если это не работает ...
$(document).ready(function(){
setTimeout(function(){
window.scrollTo(0, 0);
}, 1);
});
Какой будет толкать это к нижней части стека вызовов
Вместо того, чтобы надеяться на setTimout заканчивается в нижней части стека - Я скорее убеждаю его, что мы попадаем в положение прокрутки, которое мы хотим. Я все еще считаю это взломом, я надеялся на какое-то событие браузера, с которым мы связываемся.
var scrollToYPos = 100;
var interval = setInterval(checkPos, 0);
function checkPos() {
if ($(window).scrollTop() == scrollToYPos) {
clearInterval(interval);
} else {
window.scrollTo(0, scrollToYPos);
checkPos();
}
}
Я столкнулся с этой же проблемой. Вот основное решение, которое я придумал:
// scroll the user to the comments section if we need to
wt = win.scrollTop();
wb = wt + win.height();
// if scroll position is 0, do this (it's a fresh user), otherwise
// the browser is likely to resume the user's scroll position, in
// which case we don't want to do this
yab.loaded().done(function() {
// it seems that browsers (consistently) set the scroll position after
// page load. Accordingly wait a 1/4 second (I haven't tested this to the lowest
// possible timeout) before triggering our logic
setTimeout(function() {
// if the window top is 0, scroll the user, otherwise the browser restored
// the users scroll position (I realize this fails if the users scroll position was 0)
if(wt === 0) {
p = self.container.offset().top;
if(wb != p) {
win.scrollTop(p - th - 20);
}
}
}, 250);
});
О, и 'yab.loaded' - это обещание, которое разрешается после загрузки окна. Эквивалент '$ (window) .load (function() {// ...});' – Skone
Я думаю, что самый простой способ будет обмануть браузер в перезаряжания, что он думает, что это новая страница.
window.location = window.location
Все браузеры, которые я тестировал в этом, работают последовательно. Я лично остался бы в стороне от обратных вызовов onload, поскольку они могут вызывать прыжки во время загрузки, которые не слишком визуально привлекательны.
- 1. QGraphicsView: отключить автоматическую прокрутку
- 2. Как отключить автоматическую прокрутку?
- 3. отключить автоматическую прокрутку при выборе div
- 4. Отключить автоматическую прокрутку в командном окне
- 5. Как отключить автоматическую горизонтальную прокрутку Excel 2016?
- 6. Запретить автоматическую прокрутку JQuery?
- 7. Как выполнить автоматическую прокрутку?
- 8. Отключить автоматическую перезагрузку после ошибки
- 9. Различать автоматическую прокрутку браузера и прокрутку пользователя
- 10. Отключить прокрутку страницы до загрузки страницы - JQuery
- 11. Обновления страницы после обновления
- 12. Отключить прокрутку страницы в UIPageViewController
- 13. Отключить прокрутку веб-страницы iPad
- 14. Как отключить автоматическую прокрутку выделенной ячейки в сетке ExtJS?
- 15. Отключить обновления страницы после нажатия кнопки ASP.NET
- 16. Как отключить автоматическую прокрутку uiwebview до конца при завершении загрузки
- 17. jQTouch отключить прокрутку, включить прокрутку, отключить прокрутку
- 18. Как отключить автоматическую прокрутку в ListView при добавлении новых элементов?
- 19. Android отключить автоматическую прокрутку в расширяемом виде списка
- 20. Можете ли вы отключить автоматическую горизонтальную прокрутку в Eclipse?
- 21. Как отключить автоматическую прокрутку UITableView при прокрутке с помощью VoiceOver?
- 22. Как включить и отключить прокрутку страницы
- 23. Добавление класса в прокрутку и сохранение поведения после обновления страницы
- 24. Как предотвратить автоматическую прокрутку JScrollPane?
- 25. Autoscrolling после обновления страницы не работает
- 26. Отключить сфокусированную прокрутку UICollectionView
- 27. Отключить перетаскивание Gmaps, включить прокрутку страницы?
- 28. Отключить прокрутку прокрутки страницы на iOS
- 29. сделать прокрутку страницы отключить в pagerslidingtabstrip
- 30. jQuery Mobile - Включить прокрутку отключить перетаскивание страницы
Почему вы хотите сделать это? Хороший пользовательский интерфейс должен вернуться к этой позиции. – putvande
@putvande 100% согласен в большинстве случаев, но в случае использования большой таблицы данных, которая добавляет новые данные в верхнюю часть, и хотя мы можем динамически обновлять данные, если пользователь по какой-то причине обновляется, мы надеваем Не хочу возвращать их в свою прежнюю позицию прокрутки. Это не ожидаемое поведение с их точки зрения, учитывая этот опыт - также это всего лишь один случай использования, есть и другие, которые существуют. – Anthony
Любая страница, использующая бесконечный прокрутки для загрузки, будет иметь эту (неожиданную) проблему. –