W przeglądarkach Internet Explorer od wersji 8 (włącznie) w dół można napotkać problem w postaci wyskakującego dialogu/alerta z treścią Stack overflow at line 0. Większość poradników (w tym bardziej oficjalne) sugeruje wyłączenie wszystkich zbędnych wtyczek. Innym powodem może być funkcja wywoływana rekursyjnie. Istnieje jednak możliwość trzecia – dwie funkcje odpalające siebie nawzajem wystarczająco wiele razy – przykład poniżej:
var i = 0;
function a() { b(); }
function b() {
i++;
if (i < 30) {
a();
}
}
a();
Rozwiązaniem jest przerwanie łańcucha wywołań. Można to zrobić korzystając z funkcji setTimeout(fn, 0) w następujący sposób:
var i = 0;
function a() { b(); }
function b() {
i++;
if (i < 30) {
setTimeout( function() {
a();
}, 0);
}
}
a();
A jeśli to zawiedzie, to warto zajrzeć na portal stackoverflow