ScrollHeight не обновляется в IE8 с помощью JQuery - PullRequest
2 голосов
/ 23 мая 2009

Я пытаюсь добавить текст (div) к прокручиваемому div, а затем автоматически прокрутить нижнюю часть.

Почему-то, когда я пытаюсь сделать это в IE8, это не работает. Раскомментирование строк 'alert' показывает, что IE8 возвращает два значения для атрибута ScrollHeight.

Запросы Jquery запускаются асинхронно или DOM требует времени для обновления?

Как правильно справиться с этим?

HTML-страница в вопросе:

Стили:

.scrollbox
{
   border-style: solid;
   overflow-y: scroll;
   padding: 5px;
   margin: 20px;
   border-color: #C0C0C0;
   height: 400px;
   width: 500px;
   font-family: "Times New Roman", Times, serif;
   font-size: 20px;
   color: #333333;
}

Jquery скрипт:

$(document).ready(function() {
    var node = $("#list");
    for (i = 1; i <= 100; i++) {
        node.append("<div>Item :" + i + "</div>");
    }
    //alert(node.attr("scrollHeight"));
    //alert(node.attr("scrollHeight"));
    node.animate({ scrollTop: node.attr("scrollHeight") }, 500);
});

Тело:

<div id="list" class="scrollbox"></div>

Ответы [ 3 ]

1 голос
/ 23 мая 2009

попробуйте использовать значение innerHeight () в jQuery, также я считаю, что вам нужно 'px' со значением.

node.animate({ scrollTop: node.innerHeight() + 'px' }, 500);
1 голос
/ 30 июня 2010

Я тоже получаю эту проблему - мне кажется, что это дефект в IE8 (режим совместимости не демонстрирует такое же поведение). В моем случае я просто прочитал значение один раз, чтобы «простить» его и проигнорировал результат, тогда последующие чтения будут правильными. Не идеально, но, кажется, работает нормально.

1 голос
/ 23 мая 2009

Вы пытались использовать node.outerHeight() вместо получения значения scrollHeight?

...