проблема с scrollto и scrolltop в chrome с помощью jquery - PullRequest
4 голосов
/ 12 июля 2011

Я попытался использовать scrollTo (y, x) и scrollTop (x-pos), значения в скобках - значения offset.top отдельных элементов DOM. Похоже, что они изначально работают во всех браузерах, однако при обновлении Chrome для повторной отправки отправленной формы страница переходит туда, где она должна быть на долю секунды, а затем снова переходит наверх. Это происходит, когда я возвращаюсь к началу страницы до ее обновления. Сохраняет ли Chrome какую-либо переменную сеанса или отслеживает положение страницы при обновлении, чтобы при нажатии кнопки обновления страница фокусировалась на той части экрана, которая была просмотрена в последний раз? И если да, то есть ли способ предотвратить такую ​​реакцию Chrome? Я попытался добавить setTimeout в надежде, что мой scrolltop или scrollto (как уже говорилось, я пробовал оба) подождать, пока Chrome отреагирует на загрузку страницы, но без изменений в результате.

if ($('.register_box').length > 0) {
    if ($('.register_box').find('.error').length > 0) {
        var regbox = $('.register_box').offset();
        $('body').scrollTop(regbox.top);
    }
}

Я пробовал «body», «html», оболочку селектора, окно, экран и их комбинацию - без изменений. Я также предупредил значение regbox.top и последовательно получил значение 699, поэтому я знаю, что оно передает правильное значение. Нужно ли останавливать распространение или предотвращать дефолт, и если да, то где? Firefox и IE оба отвечают правильно. Chrome, как на Mac, так и на ПК, нет.

1 Ответ

1 голос
/ 02 августа 2012

Попробуйте $ ('html, body'). Смотрите jsfiddle здесь.

...