Si consideri la seguente pagina Web:come catturare tutti gli eventi di scorrimento in una pagina senza associare un gestore onscroll ad ogni singolo contenitore
<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>
Questo html crea un div con una barra di scorrimento. Se sposti la barra di scorrimento, viene attivato l'evento "onscroll" sull'elemento div. Tuttavia, l'evento "onscroll" sul corpo NON viene attivato. Questo è previsto, dal momento che il W3C afferma che gli eventi onscroll dell'elemento non "bolla".
Tuttavia, sto sviluppando un framework Web sul lato client che deve sapere ogni volta che si scorre una barra di scorrimento su QUALSIASI elemento della pagina. Questo sarebbe facile da fare se bolle "onscroll", ma sfortunatamente no. C'è un altro modo per rilevare eventi onscroll su un'intera pagina? (In questo momento mi sto concentrando principalmente su Webkit, quindi una soluzione specifica per Webkit andrebbe bene ...)
Qui ci sono alcune cose che ho provato: 1. Catturare DOMAttrModified (non sembra sparare per barre di scorrimento in movimento.) 2. Utilizzo di osservatori DOM (anche non sembrano al fuoco per le barre di scorrimento) 3. Modifica del tipo "onscroll" evento a bollire (sembra non essere possibile)
Sembra che l'unico modo per catturare eventi onscroll a livello globale è quello di allegare un evento onscroll a OGNI elemento che può scorrere, che è molto brutto e danneggerà le prestazioni del mio framework.
Qualcuno conosce un modo migliore?
Grazie in anticipo!
window.onscroll non ha funzionato? – JustinDanielson