2013-07-11 15 views
6

In un'applicazione per PhoneGap che è quasi terminata, inserisco dinamicamente gli elementi nella dom durante lo scorrimento. Per questo uso i callback 'touchmove' e 'scroll'. Il problema che sto affrontando attualmente è che la dom si aggiorna solo dopo che lo scorrimento è terminato. Dopo aver fatto qualche ricerca, ora penso che la causa è che PhoneGap non aggiorna la dom dopo aver terminato lo scroll.Aggiorna dom durante lo scorrimento nell'app per PhoneGap

Qualcuno di voi ha affrontato questo problema da sé e ha trovato una soluzione per questo?

Aggiornamento

Il risultato dei miei test era che JavaScript non viene aggiornata a tutti durante lo scorrimento. Mi piacerebbe sapere perché questo è, e quale sarebbe un buon modo per eseguire javascript e aggiornare il dom durante lo scorrimento. Se riesci a pensare ad un altro modo per aggiornare gli elementi quando il viewport è vicino a loro, anche quello andrebbe bene. Al momento tutto si aggiorna quando l'utente smette di scorrere, ma se l'utente non lo fa, incontra lo spazio della pagina 'vuoto'.

Richiesta di codice di rilevamento di scorrimento

Questo è quello che ho attualmente in uso per rilevare lo scorrimento.

document.addEventListener("touchmove", callback, false); // This works on android, but on iOS the callback is called when scrolling stops. Usually multiple times, because they stack while scrolling and not being executed. I see the event being executed during touchmove, but when the viewport begins moving, the callbacks pause until after the scrolling ends. 
document.addEventListener("scroll", callback, false); // This is only executed once, and only when scrolling has fully stopped; the viewport is not moving anymore. On android this is executed all the time during scrolling, which is good. 

La combinazione di aggiornare solo durante touchmove, e un'altra volta quando scorrimento si è fermato sarebbe sufficiente. La possibilità che l'utente scorra così velocemente (dopo il touchmove) che incontra lo spazio vuoto è molto piccola. Il problema è che la richiamata dell'evento touchmove non viene eseguita durante lo scorrimento.

+0

Ora sono abbastanza sicuro che questo è il caso. Anche il mio console.logs mostra solo dopo lo scorrimento si ferma. –

+0

Che cosa stai usando per rilevare lo scorrimento? Puoi mostrarci il tuo codice? – caiocpricci2

+0

Seduto qui con lo stesso problema, l'hai risolto in qualche modo? – mattias

risposta

2

Suggerirei di dare un'occhiata a iScroll, che può darvi un grande controllo sullo scorrimento dell'utente.

È possibile registrarsi quando un utente ha eseguito lo scorrimento fino a un determinato punto e quindi è possibile eseguire una funzione per caricare più elementi DOM, quindi aggiornare istantaneamente lo scroll per continuare l'esperienza dell'utente con gli elementi aggiornati.

+0

Grazie, ci proverò. –

+0

Assegnare un rappresentante perché questa era l'unica risposta e potrebbe essere una soluzione, anche se non l'ho ancora provato. –

Problemi correlati