Механизм 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 ответов
для прокрутки всего документа используйте следующее:
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>