2009-10-06 6 views
0

J'écris un Firefox add-on et la plupart du temps à l'aidedéterminer l'élément Programmatically DOM pour ajouter le « scroll » auditeur

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

fonctionne très bien. Cependant sur cuil.com cela ne fonctionne pas. Fondamentalement, tout site qui a un en-tête ou un pied de page fixe qui ne défile pas provoque un problème avec le code ci-dessus. Comment déterminer l'élément auquel ajouter l'écouteur d'événement?

Répondre

0

En utilisant

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

œuvres. L'écouteur d'événement est appelé. Je devais toujours obtenir l'élément racine pour obtenir les valeurs de défilement. Dans mon cas, j'avais un élément descendant pour commencer. Quoi qu'il en soit, voici une partie du code que j'ai utilisé dans ma fonction 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; 
} 

J'avais essayé de déterminer la scrollObj avant la mise en place de la fonction OnScroll, mais cuil.com, ils ont effectivement mis en place le trop-plein plus tard.

Questions connexes