2013-03-07 10 views
6

Wszystko, co próbuję zrobić, to wywołać funkcję, gdy przewijany jest DIV. Dla uproszczenia nie wymieniam niczego innego. Również patrzę tylko na przeglądarki zgodne z DOM, takie jak Chrome,Safari (nie IE).Obsługa przewijania JavaScript nie jest uruchamiana

Mój problem polega na tym, że obsługa przewijania nigdy nie jest wywoływana. Jeśli zmienię scroll na click, działa po kliknięciu. W jakiś sposób zwój nie działa.

uwaga: nie można użyć jQuery :(

Tu jest mój kodu:

HTML:

<div id="test">--long content--</div> 

JS:

function myFunc() { 
     console.log('in myFunc'); 
    } 
    var objTable = document.getElementById("test"); 

    objTable.addEventListener("scroll", function() { 
     myFunc(); 
    }, false); 

Fiddle:

http://jsfiddle.net/yymg5/7/

Odpowiedz

11

To dlatego, że okno nie jest przewijanie div. Spróbuj zmienić odbiornik elementu na rodzica div (w tym przypadku w oknie), na przykład this.

window.addEventListener("scroll", function() { 
    myFunc(); 
}, false); 
+0

Dzięki, masz rację. Dodałem atrybut przepełnienia do mojego DIV i dodano trochę treści. Teraz działa nawet na obiekcie DIV. Zaktualizowałem skrzypce. –

+1

Funkcja anonimowa jest niepotrzebna. Możesz po prostu przekazać myFunc jako funkcję pierwszego rzędu: window.addEventListener ('scroll', myFunc, false); – bean

Powiązane problemy