Tengo una gran cantidad de HTML, pero donde pensé que el cuello de botella sería incorrecto: es cuando abro el diálogo, no cuando estoy construyendo la cadena de HTML (~ 35ms), ni cuando lo estoy agregando al contenedor de diálogo div (~ 50ms). Cuando llamo a un cuadro de diálogo ("abrir") a continuación En FF, constantemente obtengo 1800+ ms, IE7 es alrededor de 17000 (!) Ms. Puedo vivir con 1800ms, pero en IE7 (99% de mi base de usuarios), eso es demasiado largo.El diálogo de IU de jquery abierto es extremadamente lento en IE7
// prep dialog
$("#print-box").dialog({
bgiframe: false,
width:900,
height: 1000,
modal: true,
autoOpen: false,
draggable: false
});
// display selected items in print preview modal
$("#print-preview").click(function() {
$('#print-box').empty();
var tmp = ['<div class="print-container">'];
var rows = $('[name="print-this-listing"]:checked').parents("div.listing").clone();
for (var i=0; i < rows.length; i++) {
tmp.push($(rows[i]).html());
}
tmp.push('</div>');
$('#print-box').html(tmp.join(''));
$('#print-box').dialog('open');
});
¿Alguna idea? Intento crear una página de vista previa de impresión y preferiría no realizar otro viaje de ida y vuelta al servidor para recuperar todos esos datos nuevamente, pero ahora es mucho más rápido que el lado del cliente.
Gracias. Terminé usando un iframe como una "ventana de vista previa" y ocultando elementos del DOM, pero volví, y esto fue de hecho notablemente más rápido, aún no es aceptable para mis grandes requisitos de datos, pero aún así más rápido. – gravyface
Encontré el mismo problema en IE6 e IE8. Mi solución fue hacer una llamada ajax para obtener los contenidos de mi diálogo, y configurarlo como el contenido del diálogo después de abrirlo, como se sugiere en esta respuesta. –