Программно определить элемент DOM, чтобы добавить слушателя «прокрутки» - PullRequest
0 голосов
/ 06 октября 2009

Я пишу дополнение для Firefox и большую часть времени использую

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

работает просто отлично. Однако на cuil.com это не работает. В основном любой сайт с фиксированным верхним или нижним колонтитулом, который не прокручивается, вызывает проблему с приведенным выше кодом. Как определить, к какому элементу добавить прослушиватель событий?

1 Ответ

0 голосов
/ 08 октября 2009

Использование

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;
}

Я пытался определить scrollObj перед настройкой функции onScroll, но на cuil.com они фактически установили переполнение позже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...