Tengo una página con menús desplegables encadenados. Elegir un option
del primer select
rellena el segundo y elegir un option
del segundo select
devuelve una tabla de resultados coincidentes utilizando la función innerHtml
en un div
vacío en la página.¿Cómo puedo forzar la recolección de basura de Javascript en IE? IE está actuando muy lento después de las llamadas AJAX y la manipulación DOM
El problema es que, una vez que he hecho mis selecciones y una considerable cantidad de datos se introducen en la página, todo el Javascript subsiguiente en la página se ejecuta excepcionalmente despacio. Parece como si todos los datos que retiré a través de AJAX para llenar el div
todavía están acaparando mucha memoria. Intenté configurar el objeto de devolución que contiene los resultados de AJAX en null
después de llamar al innerHtml
pero sin suerte.
Firefox, Safari, Chrome y Opera no muestran ninguna degradación del rendimiento cuando uso Javascript para insertar una gran cantidad de datos en el DOM, pero en IE es muy evidente. Para probar que es un problema de Javascript/DOM en lugar de un viejo problema simple de IE, creé una versión de la página que devuelve todos los resultados en la carga inicial, en lugar de AJAX/Javascript, y encontré que IE no tenía problemas de rendimiento.
FYI, estoy usando el método jQuery.get de jQuery para ejecutar la llamada AJAX.
EDITAR Esto es lo que estoy haciendo:
<script type="text/javascript">
function onFinalSelection() {
var searchParameter = jQuery("#second-select").val();
jQuery.get("pageReturningAjax.php",
{SEARCH_PARAMETER: searchParameter},
function(data) {
jQuery("#result-div").get(0).innerHtml = data;
//jQuery("#result-div").html(data); //Tried this, same problem
data = null;
},
"html");
}
</script>
quiero tener en cuenta que esto sólo se convierte en un problema cuando el retorno data
es bastante grande. Está directamente relacionado con el tamaño, ya que puedo ver una desaceleración moderada para los resultados de tamaño mediano y solo una desaceleración importante cuando se devuelven unos cientos de registros.
No hubo suerte con el uso de la función de html o eliminar. Solo estoy devolviendo una tabla de texto (muchas filas, pero solo texto) –
¿Está vinculando eventos a las filas, celdas, texto dentro de las celdas? ¿Cuántos datos estás insertando? –
Hay más de 2000 filas, para un total de ~ 250kb. Solo estoy vinculando un único evento en el DIV que contiene el conjunto de resultados completo. –