Механизм Javascript для автопрокрутки в нижней части растущей страницы?

надеюсь, это будет простой ответ для кого-то с Javascript время позади них...

У меня есть файл журнала, который просматривается скриптом, который подает новые строки в выходе в любые подключенные браузеры. Несколько человек прокомментировали, что то, что они хотят видеть, больше похоже на поведение "хвост-f" - последние строки всегда будут внизу страницы браузера, пока зритель не прокручивает назад, чтобы что-то увидеть. Прокрутка вниз должна вернуть вас к автоматической прокрутки.

мой Google strikeout на этом - надеюсь-просто вопрос не зная ничего вообще о javascript и, следовательно, не зная, какие ключевые слова для поиска. Мне не нужно полное решение - просто достаточно близко, что позволяет мне прыгать и пачкать руки.

изменить:

Я пытался идею scrollTop/scrollHeight, но явно чего-то не хватает. Я почти ничего не сделал с Javascript, поэтому снова я вероятно, задавая вопросы очень низкого уровня:

<html><body>
<script type="text/javascript">
for (i=0; i<100; i++)
{
    document.write("" + i + "<br />");
    document.scrollTop = document.scrollHeight;
}
</script>
</body></html>

Это была одна из многих перестановок. Очевидно, что я не могу выводить журнал строка за строкой в javascript, но я просто пытаюсь увидеть правильное поведение. Какое недостающее звено мне здесь нужно?

ИЗМЕНИТЬ ЕЩЕ РАЗ: Это превратилось в гораздо более интересную проблему, которую я сначала ожидал. Предложение кода с помощью окна.свиток делает трюк. Я начал играть с ограничением прокрутки только тогда, когда браузер находился в нижней части корпуса документа. Это достаточно легко сделать в теории, но на практике это попадает в загвоздку:

каждый раз, когда вы получаете новый текст с сервера, размер тела увеличивается, и ваша текущая позиция прокрутки больше не находится в нижней части документа. Вы больше не можете сказать разницу (используя scrollHeight, clientHeight и scrollTop), прокрутился ли пользователь или текст только что выстрелил за пределы их зрения.

Я думаю, что если это идя на работу, я собираюсь взять на себя обязательство иметь событие JS, которое срабатывает, когда пользователь прокручивает и отключает прокрутку, если они находятся выше нижней части окна, но включает его, если они прокрутились вниз до точки, где они эффективно находятся в нижней части представления. Я смотрю на событие onScroll и, учитывая, что математика по переменным, о которых я упомянул, работает довольно хорошо, я думаю, что я на правильном пути. Спасибо за Ваш вклад, все!

6 ответов


x = 0;  //horizontal coord
y = document.height; //vertical coord
window.scroll(x,y);

для прокрутки всего документа используйте следующее:

window.scrollTo(0, document.body.scrollHeight);

Если у вас есть только один прокручиваемый div или что-то процесс по-другому:

var obj = $('id');
obj.scrollTop = obj.scrollHeight;

for (i = 0; i < 100; i++) {
    document.write("" + i + "<br />");
    window.scroll(0,document.body.offsetHeight);
}

хорошая функция jQuery делает это

$('html,body').animate({ scrollTop: element.offset().top }, 'slow');

это сработало для меня, использовал его для автопрокрутки в выпадающее меню, чтобы привести его в фокус


Это объясняет, какой интервал времени -http://www.w3schools.com/jsref/met_win_setinterval.asp

Это объясняет, что установленное время ожидания -http://www.w3schools.com/jsref/met_win_settimeout.asp

это будет прокручивать страницу с javascript и остановится через 6 секунд

    <script type = "text/javascript" >

    var x;
    function autoscroll(){
    self.scrollBy(0,x)
    }

    function playautoscroll(){
    x = 1;
    setInterval('autoscroll()',0.01);
    stop();}

    function onetozero(){
    x=0;
    }

    function stop(){
    setTimeout ("onetozero()",6000);
    }
    window.onload=playautoscroll

    </script>

obj.scrollTop = obj.scrollHeight;