Рассмотрим следующую веб-страницу:
<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" пузырился, но, к сожалению, этого не происходит. Есть ли другой способ обнаружения событий onscroll на всей странице? (Сейчас я сосредоточен в основном на Webkit, поэтому решение для Webkit будет в порядке...)
Вот некоторые вещи, которые я пробовал: 1. Захват DOMAttrModified (кажется, не срабатывает для перемещения полос прокрутки). 2. Использование наблюдателей DOM (также, похоже, не срабатывает для полос прокрутки) 3. Изменение типа события onscroll на пузырь (кажется, не возможно)
Кажется, ТОЛЬКО способ захватить события onscroll во всем мире - это привязать событие onscroll к КАЖДОМУ элементу, который может прокручиваться, что очень уродливо и может повредить производительность моей инфраструктуры.
Кто-нибудь знает лучший способ?
Спасибо заранее!