5

estoy usando jQuery .scrollTop para desplazarse imagen dentro de un div. Funciona muy bien en Firefox: el desplazamiento es muy sencillo y rápido. En IE 8, el desplazamiento es muy lento e irregular: la imagen se desplaza una vez en aproximadamente un segundo, dos segundos. El tamaño de la imagen es, por término medio, entre 2000 * 2000 y 4000 * 4000 píxeles.jQuery rendimiento scrollTop en IE 8

¿Hay una manera de mejorar esto para IE 8?

rendimiento en IE 7 es un poco mejor, pero todavía no es lo suficientemente bueno.

Gracias

Editar: creo que es un problema en la forma de desplazamiento se lleva a cabo en el IE 7 y 8. He permitido ambas barras de desplazamiento (x-desbordamiento y el desbordamiento-y), y tengo intenté desplazar una imagen usando estas barras de desplazamiento. El problema es exactamente el mismo. He intentado ejecutar esto en una PC con poco poder: pentium dual core de hace unos años con 2 GB de RAM y Core i7 desktop con CPU a 2.8 GHz 1600Mhz RAM y los resultados son casi idénticos. Firefox se desplaza mucho más rápido, sin embargo, su uso de la CPU en promedio es 10% más alto que el uso de la CPU IE. Esto me deja perplejo ... ¿seguramente Microsoft habría abordado este problema por ahora?

Otra cosa que he encontrado un poco extraña es que el desplazamiento se ejecutó más rápido en una computadora portátil Core 2 Duo. Me pregunto si esto tiene algo que ver con los controladores de tarjetas gráficas ... ¿IE 7/8 incluso hace uso de la GPU?

Discúlpeme si algo de esto suena tonto, pero estoy realmente interesado en la solución de este problema ... IE no puede ser tan malo ..

+0

No conozco una respuesta inmediata a su pregunta, pero obviamente el rendimiento se basará en las especificaciones de la máquina cliente. En este caso, sospecho que la memoria y la búsqueda serán el cuello de botella. Para confirmar que se trata de un problema relacionado con el tamaño de la imagen, ¿las imágenes estrechas (1-2px) pero altas tienen el mismo problema? – Basic

+0

Hola, esto funciona bien en cualquier Core 2 duo con 2 gb ram y tarjeta gráfica integrada. No creo que el rendimiento de una máquina sea un problema, especialmente porque funciona al menos dos veces más rápido en Firefox. –

+0

Por favor, mira editar –

Respuesta

6

de jQuery .scrollTop() es notoriamente lento en Internet Explorer, y si el el marcado es incluso ligeramente complejo o grande, nunca lo lograrás.

La solución es no usar la función jQuery .scrollTop(), pero construya la suya basándose en las propiedades nativas .scrollHeight y .scrollTop.

La razón es la forma en que se calculan las compensaciones, que es la base de la lentitud de jquery .scrollTop() - tiene que caminar por el árbol DOM y calcular las compensaciones para cada padre en ie.

jQuery hace esto lo mejor que puede, pero siempre podrá hacerlo más rápido ya que conoce el marcado por adelantado y puede optimizarlo; incluso puede hacer los cálculos de desplazamiento por adelantado la mayor parte del tiempo y solo usar una constante como modificador.

Dicho todo esto, esto podría no ser culpa de jQuery; simplemente puede ser un problema con la tubería de renderización de ie. Dependiendo de cómo haya hecho su marcado y estilo, un rollo podría obligar a volver a pintar completamente la página por cada píxel que se desplaza, y eso lo ralentizará todo a paso de tortuga.