2011-12-02 16 views
5

Alcune domande qui:iOS Javascript DOM "Congelamento?"

  1. Esiste un modo per mantenere iOS congelamento javascript nella pagina durante lo scorrimento?

  2. iOS si blocca javascript quando è in un'altra scheda o se si cambia app?

  3. Esistono altre principali limitazioni di javascript su iOS?

risposta

1

Per rispondere alla terza domanda, una limitazione di dimensioni decenti è quella sometimes innerHTML just plain doesn't work. Dalla risposta accettata:

Accade quando la CPU del telefono è molto occupata (ad esempio 100%). Quindi il motore di rendering a volte dimentica le impostazioni innerHTML.

La soluzione inclusa nel mio progetto unify consiste nel verificare se esiste un elemento in childNodes, altrimenti applicarlo nuovamente.

+1

[John McKerrell ha scritto sul bug MobileHHML interno di Safari] (http://blog.johnmckerrell.com/2007/03/07/problems-with-safari-and -innerhtml /) anche nel 2007. – sdleihssirhc

6

iOS 6.x sospende tutti i timer di eventi in risposta a eventi di tocco come lo scorrimento e ha la tendenza a non riavviare tutti i timer una volta che l'evento è stato completato. È un noto bug di iOS 6 che è super-fastidioso. Rompe praticamente la parallasse e roba del genere. Alcune persone hanno fatto ricorso alla creazione della propria funzionalità di scorrimento.

Ecco un altro StackOverflow sullo stesso argomento: iOS 6 safari, setInterval doesn't get fired

e un altro: setInterval pauses in iphone/ipad (mobile Safari) during scrolling

e qui è la cosa più vicina si arriva a un bug report su di esso (Apple non ha bug segnala al pubblico di mantenere l'illusione della perfezione, così gli sviluppatori hanno creato il proprio sito bug): http://openradar.appspot.com/12756410

Questo bit di codice sbloccherà i timer che sono stati interrotti/persi/distrutti da iOS durante lo scorrimento di una pagina: https://gist.github.com/ronkorving/3755461

Si tratta di un altro tentativo di risolvere il congelamento: iOS 6 js events function not called if has setTimeout in it

Purtroppo, non c'è niente che puoi fare per generare gli eventi mentre la pagina di scorrimento. Come svanire un collegamento back-to-top durante lo scorrimento della pagina. Quando si tratta di scorrere, iOS6 non è in grado di sfregarsi sul ventre e accarezzargli la testa. (iOS5 funziona bene, btw. Questa è una regressione)

+0

C'è un'altra soluzione qui menzionata: http://stackoverflow.com/questions/10482227/javascript-dom-changes-in-touchmove-delayed-until-scroll-ends-on-mobile-safari -> crea la tua funzione di scorrimento. .. – chaenu

Problemi correlati