2016-08-02 4 views
0

Я пытаюсь написать функцию в jquery, что при нажатии кнопки позиция прокрутки пользователя сохраняется, а затем, когда страница загружает ссылку, на которую направлена ​​кнопка, выбирается позиция прокрутки. Вот моя функция. Я не уверен, в чем проблема, поскольку я относительно новичок.Сохранить позицию прокрутки по щелчку, а затем получить?

var scrolltop; 

$(document).ready(function(){ 
$('a.page-numbers').click(function() { 
    scrolltop = $(document).scrollTop(); // store it 
    var href = $(this).attr('href'); 
    window.location= href; // I am doing this to force a button to go to a link and temporarily fix a pagination issue if people are curious. Not the current issue at hand. 
    return false; // Doing this so page doesn't scroll on click 
}); 
}); 

$(document).ready(function(){ 
$('html, body').animate({scrollTop: scrolltop}); //not scrolling to where saved 
}); 

Бонусные баллы для тех, кто может также сделать его мобильным (ИОС, Android и т.д.), совместимые :)

+0

Переменные или любые javascript, просто делают ** не ** сохраняются в pageloads. Для этого вам нужно постоянное хранилище. – adeneo

+0

Могу ли я спросить, о каком типе постоянного хранения вы думаете? – LearntoExcel

+0

Ну, любое постоянное хранилище, которое может хранить значения до загрузки следующей страницы. Local Storage, Cookies, используя URL-адрес или сервер для хранения значений и т. Д. – adeneo

ответ

0

ликвидируется с помощью хранения сессии. Работает, но не очень красиво, когда он начинается сверху, когда страница загружается и сразу же переходит туда, где вы были, прежде чем нажимать ссылку.

$(document).ready(function(){ 
$('a.page-numbers').click(function(){ 
    sessionStorage["scrollPosition"] = $(window).scrollTop(); 
}); 
$(window).scrollTop(sessionStorage["scrollPosition"]); 
    sessionStorage.clear(); 
}); 
+0

Это также, похоже, не работает на мобильных устройствах. – LearntoExcel

+0

Если кто-нибудь знает, почему я буду принимать этот ответ – LearntoExcel

1

Я считаю, что вопрос заключается в том, что вы сохраняете позицию в локальной переменной, которая исчезает при загрузке новой страницы.

Вам нужно каким-то образом передать значение верхней части прокрутки на новую страницу. Я предлагаю использовать URL-адрес хэш - см https://developer.mozilla.org/en-US/docs/Web/API/Window/location#Example_3

так далее нажмите: window.location = href + '#' + scrollTop; (примечание: если какая-либо из ваших ссылок уже есть хэш, как моя ссылка выше, вы должны будете сделать более сложный подход к объединению scrollTop со старым хэша, и разделив их на другом конце)

о нагрузке: var scrollTop = window.location.hash;

+0

Я использую эти функции с разбиением на страницы, чтобы хэш постоянно менялся. Так будет ли вышеприведенный подход полезен? – LearntoExcel

+0

Конечно, см. Мою заметку о ссылках, которые уже имеют хеши в них - вам просто нужно добавить позицию в хэш перед загрузкой новой страницы и удалить позицию из хеша после загрузки новой страницы. – alexanderbird

+0

Цените справку, но рану чтобы выяснить, как использовать хранилище сеансов. – LearntoExcel

 Смежные вопросы

  • Нет связанных вопросов^_^