No soy en absoluto un desarrollador de JS (de hecho, apenas un desarrollador), pero quería intentar escribir un pequeño script de Greasemonkey para ocultar algunos elementos en una página web determinada. Una vez que comencé a limpiarlo, he decidido usar jQuery, solo para hacerlo más fácil. Todo fue bien, el script funciona, pero ahora que está listo, comencé a preguntarme sobre los detalles.Cómo congelar los repintados del navegador web al cambiar la visibilidad de los elementos?
Como parte de la secuencia de comandos, necesito encontrar un elemento específico y ocultarlo, junto con el anterior y el siguiente de sus hermanos. He terminado con no tan fácil de leer, pero la línea de trabajo:
$('div#some-weird-box').prev().toggle(w).next().toggle(w).next().toggle(w);
Mi preocupación aquí es, que soy la eliminación de tres divs separados en tres etapas separadas. Esto provocaría que el navegador "vuelva a pintar" la página tres veces, ¿verdad? No es un problema con tres divs, probablemente comenzaría a importar cuando haya más elementos. Entonces, mi pregunta es: ¿hay alguna manera de decirle al navegador "dejar de actualizar/volver a dibujar la página"? Si lo hay, podría usar eso, ocultar una cantidad arbitraria de elementos y luego pedirle al navegador que actualice la pantalla.
Interesante. ¿Hay alguna buena lectura acerca de la que me puede señalar? Si ese es el caso, ¿por qué veo todos esos consejos para eliminar elementos del árbol, aplicar cambios y luego volver a traerlos? http://www.slideshare.net/nzakas/writing-efficient-javascript - diapositiva 77 o 88 ...? – yacoob
Esa es una declaración general bastante audaz, No puedes decir que será el caso el 100% del tiempo. –
No hice una declaración general. Hice una declaración relacionada con el código que publicó. Él no tiene nada de qué preocuparse con esto. Solo verá un repintado en cualquier navegador, y cuando modifique 3 nodos, no debe clonar el nodo y modificarlo fuera de la página. – Prestaul