Hanno una grande quantità di HTML, ma dove pensavo che il collo di bottiglia sarebbe errato: è quando sto aprendo la finestra di dialogo, non quando sto costruendo la stringa di HTML (~ 35 ms), né quando lo aggiungo alla finestra di dialogo div contenitore (~ 50 ms). Quando si chiama dialog ("open") sotto in FF, ottengo costantemente 1800+ ms, IE7 è intorno a 17000 (!) Ms. Posso vivere con 1800ms, ma in IE7 (il 99% della mia base di utenti), è troppo lungo.jquery La finestra di dialogo dell'interfaccia aperta è incredibilmente lenta in 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');
});
Qualche idea? Sto cercando di creare una pagina di anteprima di stampa e preferisco non fare un altro giro al server per recuperare tutti quei dati di nuovo, ma è molto più veloce rispetto al lato client in questo momento.
Grazie. Ho finito per usare un iframe come una "finestra di anteprima" e nascondere elementi dal DOM, ma sono tornato indietro, e questo era davvero notevolmente più veloce - ancora non accettabile per i miei grandi requisiti di dati, ma comunque più veloce. – gravyface
Ho riscontrato lo stesso problema in IE6 e IE8. La mia correzione era di effettuare una chiamata ajax per ottenere il contenuto della mia finestra di dialogo, e impostarlo come il contenuto della finestra di dialogo dopo averlo aperto, come suggerito in questa risposta. –