Oto fragment kodu od źródła jQuery (bit.ly/jqsource):powtarzane setTimeout() z 1 milisek
// 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();
}
To jest hack do wykrycia, gdy DOM jest gotowy do IE. Chociaż teoretycznie wydaje się to bardzo piękne, jestem trochę zaniepokojony setTimeout(doScrollCheck, 1);
, co oznacza, że funkcja doScrollCheck()
jest nazywana 1000 razy na sekundę, zanim DOM jest gotowy.
Czy powinienem się spodziewać, że będzie to ogromny spadek wydajności?
Mam problem z zobaczeniem, jak to * nie * może być odpływem wydajności. Przynajmniej blokujesz przeglądarkę, co nigdy nie jest dobrym pomysłem. – Blazemonger
Tak, to jest moje pytanie. Dlaczego * nie jest * to spadek wydajności? (Ponieważ zakładam, że ludzie jQuery wykonują tutaj dobrą robotę). – Randomblue
IE ma (lub miał?) Minimalny czas 'setTimeout/setInterval' z czymś takim jak' 13ms', więc nie jest tak zły jak 1000 /druga. Więcej jak 77/sekundę. Ze wszystkich problemów związanych z wydajnością IE nigdy nie słyszałem skargi na '.ready()' jQuery, która jest poważnym drenażem. – user113716