Anche se questo non è possibile, fuori dalla scatola, per così dire, è possibile farlo utilizzando iscroll
Quindi, utilizza iScroll per iOS e Android dispositivi mobili/tablet, e utilizzare il modo in cui si lo stiamo attualmente facendo per i dispositivi desktop.
iScroll ha un sacco di opzioni per le funzioni di callback da chiamare su determinati eventi, come "onScrollMove", "onBeforeScrollEnd", "onTouchEnd", ecc. Sfortunatamente, non c'è un'opzione per eseguire una richiamata su "OGNI posizione" modifica, comprese le modifiche causate dal momento dello scorrimento dopo che l'utente ha smesso di toccare lo schermo ". Ma è abbastanza facile aggiungerne uno.
Nella fonte iScroll, intorno alla linea 127, nei pressi del commento "// Events", aggiungere una nuova variabile:
onPosChange: null
Poi, intorno alla linea 308, al termine della funzione "_pos", aggiungere questa riga:
if (this.options.onPosChange) this.options.onPosChange.call();
(che sarà solo chiamare la funzione passata l'opzione "onPosChange", se esiste).
Fatto questo, il seguente codice di esempio sarà istituito iScroll per il div con id = "iscroll_container", e stamperà la Y-offset alla console ogni volta che cambia:
var myScroll;
function loaded() {
myScroll = new iScroll('iscroll_container', { onPosChange: actOnScroll });
}
document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
//Use this for high compatibility (iDevice + Android)
document.addEventListener('DOMContentLoaded', function() { setTimeout(loaded, 200); }, false);
function actOnScroll(){
console.log('got a scroll move! Vert offset is: ' + myScroll.y);
}
nota, Ben the Bodyguard Parallax Site opere su iPad utilizzando iScroll (usano una versione molto più vecchia di iscroll e non farlo esattamente come ho descritto qui)
Inoltre, Life of Pi Parallax Site opere su iPad davvero bene - non riesco a capire come fallo, ma almeno dimostra che è possibile!
@tkalve stesso su droide ... –
Ho provato t lui stesso a http://www.hakoniemi.net/labs/onscroll.html e finì con la stessa risoluzione: iOS scroll non può essere tracciato. Non esiste un listener di eventi per questo + entrambi i timeout/intervallo non vengono eseguiti durante lo scorrimento. E poiché non c'è richiestaAnimationFrame in iOS5, questo sembra impossibile da risolvere. – zvona
Sicuramente non ci si aspetta che rAF venga eseguito se l'intervallo non riesce a funzionare. È, tuttavia, FWIW, possibile ottenere una lettura aggiornata nei Safari Dev Tools alimentati da socket Web mentre è in corso lo scorrimento del momentum. –