2011-01-12 17 views
26

Çok basit bir web sayfası tasarlıyorum (sadece HTML), uygulamak istediğim tek "özellik", kullanıcı sayfayı aşağı kaydırdığında bir şey yapmaktır, "olay" ı bir şekilde yakalamanın bir yolu var mıdır?"Aşağı kaydır" olayını yakalama?

cevap

16

, başka JS çerçevesini (Mootools)

window.addEvent('scroll',function(e) { 
    //do stuff 
}); 
+1

Neden window.addEventListener ("scroll", function (e) {...}); '? kullanılmıyor Fazladan 8 harften dolayı? –

+1

Bu şekilde (mootools tarzı), IE <9 (attachEvent şeyler) özelliğini de (ed) destekliyorsunuz ... – stecb

+0

Yani pencerenin prototipini değiştiriyor mu? –

22

Sadece HTML ile yapamazsınız, Javascript kullanmanız gerekir. İstediğiniz veya jQuery kullanmak mümkün değildir yoksa, sen Anthony tarafından yayınlanmıştır onscroll çözümü kullanabilirsiniz

$(document).ready(function() { 
    $(window).scroll(function() { 
     // do whatever you need here. 
    }); 
}); 

: çözüm şöyle olabilir bu yüzden, jQuery kullanılması önerilir. Eğer (eğer çok basit bir HTML sayfası için ne olmayabilir) jQuery kullanmak istemiyorsanız

+0

Sadece kaydırma aşağı kaydırmak için değil sanırım. sadece aşağı kaydırmak için bir şey var. –

37

, bu kullanarak düzenli JavaScript başarabilirsiniz:

<script> 
function scrollFunction() { 
    // do your stuff here; 
} 

window.onscroll = scrollFunction; 
</script> 
Sen bir şey yapmak istedim bahsettiniz

'u sayfasından aşağı kaydırdıklarında - onscroll olayı, x veya y ekseninde herhangi bir yönde kaydırmayı durdurur, böylece işleviniz, kaydırdıklarında çağrılır. Gerçekten, sayfa aşağı kaydırıldığında sadece kodunuzu çalıştırmak istiyorsanız

, sen onscroll çağrılan her karşılaştırmak için önceki kaydırma konumunu korumak gerekiyordu. Sadece şeyiyle

+3

"attachCroll" yerine "attachEvent" (IE) ve 'addEventListener' (muhtemelen diğer her şey) kullanılmalıdır. – crush

+0

@crush, Neden addCroll yerine attachEvent ve addEventListener kullanıyorsunuz? – Pacerier

+1

@Pacerier Tamam, bu yorumu tekrar gözden geçirelim çünkü yanıltıcıdır ve Internet'te elde ettiğim ve yayıldığım hatalı bilgilere dayanmaktadır. [W3C HTML5 spesifikasyonuna] göre (http://www.w3.org/TR/html5/webappapis.html#event-handlers-on-elements,-document-objects,-and-window-objects) var 'onscroll' kullanarak yanlış bir şey yok. Özellikle 'incroll' özelliğinin, [HTML4 belirtiminde] bulunmadığını belirtmek önemlidir (http://www.w3.org/TR/html4/interact/scripts.html#h-18.2.3). – crush

11

Daha iyi bir yol kaydırma olayları için değil, aynı zamanda aşağıda gibi kaydırma yönünde kontrol etmek için değil sadece kullanarak başka çözüm var;

$(window).bind('mousewheel', function(event) { 
if (event.originalEvent.wheelDelta >= 0) { 
    console.log('Scroll up'); 
} 
else { 
    console.log('Scroll down'); 
} 
}); 
+2

Doğru cevap bu olmalı. –

+0

Yavaş gezinmek için mousewheel kullanmıyorsanız veya bir dokunmatik cihaz kullanıyor musunuz? – HyderA

+0

@hydeA farklı cihazlar farklı tepki veriyor. Bunun için bir plugin hammerjs veya benzer bir şey kullanmak zorunda kalabilirsiniz. Aksi halde bunun burada cevaplandığını düşünüyorum. Http://stackoverflow.com/questions/2863547/javascript-scroll-event-for-iphone-ipad –

0

Bu benim için çalışır.

var previousPosition 

$(window).scroll(function(){ 
    var currentScrollPosition=$(window).scrollTop() + $(window).height() 
    if (currentScrollPosition>previousScrollPosition) { 
    console.log('down') 
    }else if(currentScrollPosition<previousScrollPosition){ 
    console.log('up') 
    } 
    previousScrollPosition=currentScrollPosition 
});