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:
1 2 3 4 5 6 7 8 9 10 11 |
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:
1 2 3 4 5 6 7 8 9 10 11 12 |
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