Как сохранить полосу прокрутки на предыдущей позиции? - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть div и после вставки динамических данных - его полоса прокрутки всегда переходит в верхнюю позицию (значение 0).

$(document).on('click', '.title', function(){
    var scroll = $('#div').scrollTop();
    console.log(scroll); // for example - 120
    $.post('common.php', {vars}, function(data) {
        $('#div').html(data), function(){$('#div').scrollTop(scroll)};
        var scroll = $('#div').scrollTop();
        console.log(scroll);  // result 0 - expected 120
    });
});

Как сохранить полосу прокрутки на предыдущей позиции?

1 Ответ

0 голосов
/ 25 сентября 2018

Возможно, вы захотите использовать куки.

Они довольно просты в использовании с родным JS (источник W3Schools ):

function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays*24*60*60*1000));
    var expires = "expires="+ d.toUTCString();
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
function getCookie(cname) {
    var name = cname + "=";
    var decodedCookie = decodeURIComponent(document.cookie);
    var ca = decodedCookie.split(';');
    for(var i = 0; i <ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') {
            c = c.substring(1);
        }
        if (c.indexOf(name) == 0) {
            return c.substring(name.length, c.length);
        }
    }
    return "";
}

И теперь вы можете иметьфункция для поддержания вашей позиции cookie-файла в актуальном состоянии (например, каждые 2 секунды)

setInterval(function() { setCookie('Ypos', scroll, 2); }, 2000);

Я не проверял ничего из этого, но, кажется, это хороший способ сделать то, что вы хотите

(Кстати, эта идея пришла из моего GoogleApp "Great Suspender", из-за которого в моих файлах cookie осталось несколько "gsScrollPos")

...