2009-10-06 10 views
0

에 '스크롤'리스너를 추가 할 DOM 요소를 결정 파이어 폭스 부가 기능은 대부분의 시간은 잘는 프로그래밍 내가 쓰고 있어요

document.addEventListener("scroll", scrollListener, false); 

작품을 사용. 그러나 cuil.com에서는 작동하지 않습니다. 기본적으로 스크롤되지 않는 고정 된 머리글이나 바닥 글이있는 사이트의 경우 위의 코드에 문제가 발생합니다. 이벤트 수신기를 추가 할 요소는 어떻게 결정합니까?

document.addEventListener("scroll", scrollListener, true); 

작품을 사용

답변

0

. 이벤트 리스너가 호출됩니다. 나는 여전히 스크롤 값을 가져 오기 위해 루트 요소를 가져야했습니다. 필자의 경우에는 필자가 자손 요소를 가지고 있었다. 어쨌든 여기 onScroll 함수에서 사용한 코드의 일부입니다.

if(!x.scrollObj){ 
x.scrollObj = x.doc; 
var scrollObj = x.bElem.parentNode; 
while(scrollObj && scrollObj.nodeName != 'BODY'){ 
    var overflowY = x.doc.defaultView.getComputedStyle(scrollObj, null).overflowY; 
    if( overflowY == 'auto' || overflowY == 'scroll'){ 
    x.scrollObj = scrollObj; 
    break; 
    } 
    scrollObj = scrollObj.parentNode; 
} 
} 

var w = x.doc.defaultView; 
var scrollY = w.scrollY, scrollHeight = x.doc.body.scrollHeight; 
if(x.scrollObj&& x.scrollObj != x.doc){ 
scrollY = x.scrollObj.scrollTop; 
scrollHeight = x.scrollObj.scrollHeight; 
} 

나는 onScroll 기능을 설정하기 전에 scrollObj을 결정하려했지만, cuil.com, 그들은 실제로 나중에 오버 플로우를 설정합니다.

관련 문제