Как захватить все события прокрутки на странице, не подключая обработчик прокрутки к каждому контейнеру

Рассмотрим следующую веб-страницу:

 <html>
   <body onscroll="alert('body scroll event')">
     <div style='width:200px;height:200px;overflow:auto' onscroll="alert('div scroll event')">
       <div style='height:400px'>
       </div>
     </div>
   </body>
 </html>

Этот HTML создает div с полосой прокрутки. Если вы передвинете полосу прокрутки, сработает событие «onscroll» для элемента div. Тем не менее, событие «onscroll» на теле НЕ запускается. Это ожидаемо, поскольку W3C заявляет, что события onscroll элемента не «всплывают».

Тем не менее, я разрабатываю клиентскую веб-инфраструктуру, которая должна знать каждый раз, когда прокручивается полоса прокрутки на ЛЮБОМ элементе страницы. Это было бы легко сделать, если бы «onscroll» всплыл, но, к сожалению, это не так. Есть ли другой способ обнаружить события прокрутки на всей странице? (Сейчас я сосредоточен в основном на Webkit, так что решение для Webkit было бы хорошо ...)

Вот некоторые вещи, которые я попробовал: 1. Захват DOMAttrModified (похоже, не срабатывает при перемещении полос прокрутки.) 2. Использование DOM Observers (также, похоже, не срабатывает при прокрутке полос) 3. Изменение типа события «onscroll» пузыриться (кажется невозможным)

Кажется, ЕДИНСТВЕННЫЙ способ захвата событий onscroll в глобальном масштабе - это прикрепить событие onscroll к КАЖДОМУ элементу, который может прокручиваться, что очень уродливо и может снизить производительность моей инфраструктуры.

Кто-нибудь знает лучший способ?

Заранее спасибо!

Ответы на вопрос(4)

Ваш ответ на вопрос