2013-04-06 3 views
0

Я пытаюсь выполнить некоторый код js, теперь они заменяются предупреждениями, когда полоса прокрутки перемещается сверху вниз на любую другую высоту.Пытается выполнить js-код при прокрутке пользователя

Поэтому, когда пользователь впервые прокручивается, загорается предупреждение «прокручивается». , и если пользователь прокручивается назад, он сбрасывает и запускает предупреждение «назад наверх».

Я пробовал делать это с помощью scrollTop, scrollHeight и clientHeight, но, похоже, он не запускает предупреждение о прокрутке.

Я не пытаюсь запускать предупреждение каждый раз, когда пользователь прокручивается, только на первом свитке. Но он сбрасывается и появляется новое предупреждение, если пользователь прокручивается назад.

Так что, если они прокручивают сверху до X, предупреждающие «прокручиваемые» огни. Если они прокручиваются с X на Y, ничего не происходит. Если свиток от X или Y до вершины, то «назад наверх» срабатывает. И затем, если прокрутка сверху до X или Y, она сбрасывается, и предупреждение «прокручивается» срабатывает (снова).

Вот мой код:

var body = $('body'); 
var scrollTop = body.scrollTop; 
var difference = body.scrollHeight - body.clientHeight; 
var percentScrolled = (scrollTop/difference)*100; 
if(percentScrolled > 0){ 
alert("scrolled!"); 
} 

Update:

теперь у меня есть это работы благодаря одному из комментариев, он стреляет «назад к началу» предупреждение при прокрутке назад к сверху, но срабатывает предупреждение «прокручивается» на каждом прокрутке. Как я могу заставить «прокручивать» предупреждение срабатывать только тогда, когда полоса прокрутки перемещается из верхней части в другое место, кроме вершины?

Вот код:

window.onscroll = function() { 
    var doc = document.body, 
    scrollPosition = doc.scrollTop, 
    pageSize = (doc.scrollHeight - doc.clientHeight), 
    percentageScrolled = Math.floor((scrollPosition/pageSize) * 100); 

    if(percentageScrolled == 0){ 
     alert("back at top"); 
    } 
    else if(percentageScrolled > 0){ 
     alert("scrolled"); 
    } 
}; 
+0

Конечно это когда вы прокручиваете назад вверх, scrollTop снова равен нулю. – adeneo

+0

Код http://stackoverflow.com/questions/1247874/changing-scrollbar-position и пример http://jsbin.com/eqote – Grmn

+0

@Grmn Спасибо. Это помогает, но есть еще одна проблема. Я обновил сообщение, описывающее его. – IMUXIxD

ответ

0

Exmaple использования JavaScript для автоматически происходит Вернитесь к вершине после прокрутки пользователя на x процентов. И, как спросил noidea3p5, что это именно вы пытаетесь сделать ..

var AllowedPercentageToScroll = 20; 
window.onscroll = function() { 
    var doc = document.body, 
    scrollPosition = doc.scrollTop, 
    pageSize = (doc.scrollHeight - doc.clientHeight), 
    percentageScrolled = Math.floor((scrollPosition/pageSize) * 100); 

    if(percentageScrolled > AllowedPercentageToScroll){ 
     window.scrollTo(0,0); // back to top 
    } 
    else if(percentageScrolled > 0){ // if user starts to scroll it will trigger 
     //do whatever you like, dont recommend alert though 
    } 
}; 

Edit: Показывает статус, если в верхней части, и показывает прокрутке активность при запуске прокручивать

window.onscroll = function() { 
    var doc = document.body, 
    scrollPosition = doc.scrollTop, 
    pageSize = (doc.scrollHeight - doc.clientHeight), 
    percentageScrolled = Math.floor((scrollPosition/pageSize) * 100); 

    if(percentageScrolled == 0){ 
     document.getElementById("status").innerHTML = "Your at the top";  
    } 
    else if(percentageScrolled > 1){ 
     document.getElementById("status").innerHTML = percentageScrolled + "%";  
    } 
}; 

</script> 
<body> 
<div style="width: 100%; position: fixed; top:0px; background-color:#c0c0c0;"> 
    Scroll Position: <span id="status">0%</span> 
</div> 
+0

Я не хочу, чтобы пользователь прокручивал в любом месте, используя .scrollTo или ограничивая, насколько далеко они могут прокручиваться. Я просто хочу слушать, когда они прокручиваются, откуда они прокручиваются, туда, где они прокручиваются, и сколько они прокручиваются. Когда они прокручиваются сверху вниз в любое место на дорожке с прокруткой, запускайте предупреждение, а затем наоборот, когда они переходят из любого места обратно в верхний огонь с другим предупреждением. Позднее оповещения будут заменены другим кодом. – IMUXIxD

+1

Здесь вы можете найти хороший пример, используя простой javascript, а также jQuery для обнаружения вверх/вниз, другими словами, вы можете немного изменить его, обнаружить, откуда они пришли и куда идти. http://stackoverflow.com/questions/1222915/can-one-use-window-onscroll-method-to-include-detection-of-scroll-direction – Grmn

+0

Спасибо, эта помощь. Спасибо за твою помощь! – IMUXIxD

0

Не уверен, что вы пытаетесь сделать, но это звучит, как вы можете какой-то флаг:

var body = $('body'); 
var scrollTop = body.scrollTop; 
var difference = body.scrollHeight - body.clientHeight; 
var percentScrolled = (scrollTop/difference)*100; 

if(percentScrolled > 0 && this.leftzero === undefined){ 
    this.leftzero = true; 
    alert("scrolled!"); 
} 
Смежные вопросы