Переменная не работает с scrollTop

Я искал несколько часов и ничего не нашел.

Я определяю позицию прокрутки пользователей на beforeunload и сохраняю ее в файл cookie (используя плагин). После обновления страницы страница теперь должна прокручиваться до этой позиции, однако это не так.

Я вижу, что позиция сохранена, и я также могу прочитать ее внутри alert().

scrollTop работает с "твердыми числами", но не с данными из куки.

parseInt тоже не помогает.

Есть идеи, почему? Заранее большое спасибо!


Этот код не работает:

window.onload = function() {
    setTimeout(function() {
    $(document).scrollTop(300);
}, 100);

это работает

vari = $.cookie("scrollTil");

window.onload = function() {
    setTimeout(function() {
    $(document).scrollTop(vari);
}, 100);

ED:

$(document).ready(function(){

vari = $.cookie("scrollTil");

window.onload = function() {
    setTimeout(function() {
        $(document).scrollTop(vari);
    }, 100);
}

$(window).unload(function(){
    $.cookie("scrollTil", $(window).scrollTop());
})
});

person John Porlarn    schedule 12.04.2013    source источник
comment
если вы console.log(vari), что вы получите   -  person Kai Qing    schedule 12.04.2013
comment
Я получил номер, так что он должен работать. Если я устанавливаю vari=300, scrolltop работает, так что я понятия не имею.   -  person John Porlarn    schedule 12.04.2013
comment
Да, scrollTop будет работать с целым числом или строкой. В вашем примере кода отсутствует закрывающий } для функции загрузки. но это может быть просто потому, что вы не опубликовали все это. Странный.   -  person Kai Qing    schedule 12.04.2013
comment
Да, я только что написал без } ^^ Также, когда я печатаю (вари), я получаю число, так что это очень странно. Спасибо за помощь   -  person John Porlarn    schedule 12.04.2013
comment
Кажется, в этой скрипке работает нормально. Похоже, у вас есть проблема в другом месте, вероятно, в том, где он устанавливает файл cookie? jsfiddle.net/ryanbrill/WxKgx   -  person ryanbrill    schedule 12.04.2013
comment
Вы правы, вроде так работает. Таким образом, ручная установка файла cookie работает. Однако, когда я обновляю файл cookie с помощью jquery, прокручивая вниз и обновляя, я получаю разные значения, чем дальше я прокручиваю - как и ожидалось. Но когда я передаю его scrollTop, он не работает. $.cookie("scrollTil", $(window).scrollTop()); правильно устанавливает cookie, но не работает с scrollTop. $.cookie("scrollTil", 300); устанавливает значение 300 (не положение мыши), но работает. Я сделал правку с полным кодом.   -  person John Porlarn    schedule 12.04.2013


Ответы (1)


Ваш код в порядке. Но это не сработало, как вы ожидали, потому что $(window).scrollTop(), который вы вызывали в $(window).unload(function(), всегда возвращает 0.

Вы должны зафиксировать положение прокрутки, когда пользователь выполнил прокрутку. Вы можете найти обходной путь здесь

Javascript: выполнить действие после того, как пользователь завершит прокрутку

person Telvin Nguyen    schedule 12.04.2013