Ecco un pezzo di codice dalla fonte jQuery (bit.ly/jqsource):ripetuto setTimeout() con 1 millisec
// The DOM ready check for Internet Explorer
function doScrollCheck() {
if (jQuery.isReady) {
return;
}
try {
// If IE is used, use the trick by Diego Perini
// http://javascript.nwbox.com/IEContentLoaded/
document.documentElement.doScroll("left");
} catch(e) {
setTimeout(doScrollCheck, 1);
return;
}
// and execute any waiting functions
jQuery.ready();
}
E 'un trucco per rilevare quando il DOM è pronto per IE. Mentre teoricamente questo sembra molto bello, sono un po 'preoccupato per setTimeout(doScrollCheck, 1);
, il che significa che la funzione doScrollCheck()
è chiamata 1000 volte al secondo prima che il DOM sia pronto.
Devo aspettarmi che questo sia un enorme drenaggio delle prestazioni?
Ho difficoltà a vedere come questo * non * dovrebbe essere una perdita di prestazioni. Per lo meno stai bloccando il browser, che non è mai una buona idea. – Blazemonger
Sì, questa è la mia domanda. Perché * non * è uno scarico delle prestazioni? (Perché presumo che le persone di jQuery stiano facendo un buon lavoro qui.) – Randomblue
IE ha (o ha avuto?) Una durata minima 'setTimeout/setInterval' di qualcosa come' 13ms', quindi non è così male come 1000 /secondo. Più come 77/secondo. Di tutti i problemi di prestazioni di IE, non ho mai sentito lamentarsi del fatto che '' .ready() 'di jQuery sia un grosso problema. – user113716