Ho un javascript abbastanza complesso prodotto da GWT e funziona perfettamente su tutti i browser (incluso IE10) ma in IE11 sto affrontando problemi di prestazioni.Prestazioni di Internet Explorer 11 con JS
Attivazione profiler ho scoperto come il codice più consumo è ... (in ordine dal più consumo)
clientWidth, offsetHeight e metodi simili con valori impressionanti:
clientWidth 32 secondi (32806ms) per soli 60 chiamate 29 secondi offsetHeight per 181 chiamate
mi sembra la causa dei miei problemi di prestazioni localizzate in IE11 (considerare l'esecuzione in IE10 è di circa 2 secondi per l'intero codice) e accanto, naturalmente, posso iniziare a ottimizzare la riduzione del numero di chiamate (se possibile) Mi piacerebbe capire se c'è qualcosa di sbagliato con i metodi che sto usando o qualcos'altro Qualcuno sa cosa c'è di sbagliato in IE11?
UPDATE: solo per dare un termine di paragone: clientWidth nello stesso codice in modalità documento = 10 è 15ms ... una differenza di 2000 volte così strano non riesco a trovare un bug di IE in questo stesso codice , stessi metodi profilati in bordo modalità documento (11) vs 10
UPDATE: andare più in profondità con profiler sembra che clientWidth scavare dentro il mio albero più tempo:
vedo: clientWidth -> layout -> HTML-> corpo -> tabella x -> genitore generato per la visualizzazione: tabella -> td -> tabella-> tabella generata per la visualizzazione: tabella -> td -> tabella .......
e così via per un enorme quantità di tempo (non riesco a raggiungere la fine dell'albero!
qualcuno sa cosa significa tabella generata per la visualizzazione: tabella esattamente? l'unica cosa che posso immaginare è che IE11 per qualche ragione continua a funzionare sempre più sull'albero DOM per calcolare la larghezza ... ma non riesco a indovinare come rompere questo lungo ciclo
AGGIORNAMENTO con WORKAROUND: Interessante abbastanza (e confermando quanto visto fino ad ora) esiste un modo per "risolvere" il problema delle prestazioni: impostare il div/contenitore più esterno su una dimensione fissa in pixel (almeno una delle due dimensioni) per rendere più facile per IE calcolare le dimensioni del contenitore e risolvere ogni problema. È una soluzione interessante che potrebbe essere utile per alcuni casi, purtroppo nel mio caso avrei bisogno di mantenere la mia dimensione "100%" per adattare schermi diversi ... quindi non è una soluzione accettabile
AGGIORNA con un campo possibile limite: Sembra che il grande uso di cellWidth e cellHeight sia implicito, il mio JS ha impostato per quasi tutte le div le dimensioni della cella e le dimensioni effettive in percentuale, eliminando la dimensione della cella sembra ridurre il tempo per il calcolo della dimensione a 1ms per ogni chiamata!
Si potrebbe essere un problema con la modalità standard contro la modalità quirk.Per qualche ragione, forse, il tuo IE11 entra in modalità quirks, e questo è il motivo della prestazione lenta. Prova a controllare in quale modalità viene eseguito IE11. – davidkonrad
nop, selezionato con javascript: window.alert ('Sei in' + (document.compatMode === 'CSS1Compat'? 'Standard': 'Quirks') + 'modalità'.) e la risposta è la Modalità standard ... come previsto – noone1
Che dire di documentMode? http://msdn.microsoft.com/en-us/library/ie/cc196988(v=vs.85).aspx e http://msdn.microsoft.com/en-us/library/dn321432.aspx – davidkonrad