Sto creando un'applicazione web a schermo intero che avrà alcuni moduli/widget che fanno uso del nuovo overflow di iOS 5: funzioni di scorrimento. Quello che voglio è disabilitare l'effetto "rimbalzante" quando si scorre html/body (dato che è a schermo intero) ma mantenere questo effetto solo sugli elementi scorrevoli.disabilitando lo scorrimento rimbalzante solo per html ma mantenendo gli elementi con overflow: scroll
per attenuare gli effetti di elementi scorrevoli che ho:
html, body { overflow: hidden; }
.scrollable {
overflow: scroll;
-webkit-overflow-scrolling: touch;
}
e quindi il seguente script che disabilita l'effetto tocco di scorrimento:
$(document).bind('touchmove', function (e) {
if (e.target === document.documentElement) {
e.preventDefault();
}
});
anche se questo non sembra funzionare affatto , perché quando si scorre un elemento in fondo o in alto si scorre anche il documentElement
.
C'è un modo per disabilitare solo quell'effetto per l'elemento html del corpo?
Qui si tratta di un buon esempio di come questo influisce sulla funzionalità:
http://dl.dropbox.com/u/1928164/ios5/index.html
Non penso che il gestore di eventi raggiungerà mai preventDefault() perché la destinazione è l'elemento che ha attivato l'evento, che non può mai essere document.documentElement (). Quindi stai vedendo lo stesso comportamento come se non avessi il gestore di eventi. – ThinkingStiff
che sarebbe "currentTarget", temo. l'obiettivo può restituire qualsiasi cosa al suo interno, si potrebbe voler provare;) – zanona
currentTarget restituisce l'elemento con l'ascoltatore, non l'elemento che ha gettato l'evento. – ThinkingStiff