Firefox 以编程方式确定要将“滚动”侦听器添加到的DOM元素

Firefox 以编程方式确定要将“滚动”侦听器添加到的DOM元素,firefox,dom,javascript-events,Firefox,Dom,Javascript Events,我正在编写一个Firefox插件,大部分时间使用 document.addEventListener("scroll", scrollListener, false); 很好用。然而,在cuil.com上,这是行不通的。基本上,任何具有固定页眉或页脚但不滚动的站点都会导致上述代码出现问题。如何确定将事件侦听器添加到哪个元素?使用 document.addEventListener("scroll", scrollListener, true); 工作。调用事件侦听器。我仍然需要获取根元素才能

我正在编写一个Firefox插件,大部分时间使用

document.addEventListener("scroll", scrollListener, false);
很好用。然而,在cuil.com上,这是行不通的。基本上,任何具有固定页眉或页脚但不滚动的站点都会导致上述代码出现问题。如何确定将事件侦听器添加到哪个元素?

使用

document.addEventListener("scroll", scrollListener, true);
工作。调用事件侦听器。我仍然需要获取根元素才能从中获取滚动值。在我的例子中,我有一个后裔元素开始。无论如何,这是我在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中,他们后来实际设置了溢出