Букмарклет для прокрутки до нижней части веб-страницы - PullRequest
2 голосов
/ 07 июня 2010

Интересно, можно ли создать букмарклет, по которому можно щелкнуть, а текущая веб-страница прокручивается вниз!

javascript:function%20scrollme(){dh=document.body.scrollHeight;ch=document.body.clientHeight;if(dh>ch){moveme=dh-ch;window.scrollTo(0,moveme);}}

если я создаю новую закладку и вставляю ее как адрес, ничего не происходит. На самом деле я понятия не имею, как запустить javascript внутри букмарклета, однако я просто добавил закладки css-tricks Printliminator

Может быть, вы могли бы помочь, я хотел бы иметь такой букмарклет!

Ответы [ 3 ]

2 голосов
/ 07 июня 2010

Во-первых, ваш JavaScript определяет только функцию и больше ничего не делает.

Во-вторых, вам нужно использовать document.documentElement (который представляет элемент <html>) вместо document.body:

javascript:dh=document.documentElement.scrollHeight;ch=document.documentElement.clientHeight;if(dh>ch){moveme=dh-ch;window.scrollTo(0,moveme);}

или просто

javascript:window.scrollTo(0,document.documentElement.scrollHeight)

(очевидно, не имеет значения, если y-coord из window.scrollTo больше максимальной позиции).

Обновление: В случае, если вам приходится иметь дело с IE в режиме причуд, корневым элементом действительно является document.body. Другие браузеры позволяют document.documentElement.clientHeight представлять высоту документа (см. Нахождение размера окна браузера , которое относится к высоте окна, но содержит хорошую таблицу) В любом случае, вы хотите установить положение скроллера на любое из трех значений:

javascript:window.scrollTo(0,Math.max(document.documentElement.scrollHeight,document.body.scrollHeight,document.documentElement.clientHeight))
1 голос
/ 26 июня 2011

Вот функция, которая плавно прокручивается вниз страницы:

function scroll(scroll_to) {
if (scroll.timer) clearTimeout(scroll.timer);
var scroll_current = document.body.scrollTop,
    distance = Math.abs(scroll_current - scroll_to);
if (scroll_current == scroll_to) return;
if (scroll_current > scroll_to) {
    if (distance < 5) {
        scroll_current -= distance;
    } else {
        scroll_current -= Math.ceil(distance / 10);
    }
}
if (scroll_current < scroll_to) {
    if (distance < 5) {
        scroll_current += distance;
    } else {
        scroll_current += Math.ceil(distance / 10);
    }
}
document.body.scrollTop = scroll_current;
scroll.timer = setTimeout(function() {
    scroll(scroll_to)
    }, 10);
}

Если вы называете это:

scroll(document.body.scrollHeight - innerHeight);

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

scroll(0);

Просто прикрепите его к событию onclick кнопки или ссылки.

0 голосов
/ 07 июня 2010

Вы можете просто использовать якорь с этим синтаксисом

<a name="label">Any content</a> 
and
<a href="#label">Any content</a> 
...