Je rencontre des problèmes de débordement de pile Javascript côté client, en particulier dans le navigateur IE, Cela se passe à l'intérieur d'une bibliothèque tierce qui fait des appels de fonction et pour une raison quelconque, ils se bloquent occasionnellement dans IE seulement en raison de sa faible limite de pile.
J'ai ensuite codé un petit test HTML pour tester la limite de la taille de la pile pour certains navigateurs et j'ai constaté que IE8 a en fait une petite limite de pile si on le compare à FF 7 ou Chrome 14 fonctionnant sur un ordinateur portable avec Windows 7 OS, 8Gb RAM :
<html>
<body>
<!-- begin Script: -->
<script type="text/javascript">
function doSomething(){
var i = 3200;
doSomethingElse(i);
}
function doSomethingElse(i){
if (i == 0) return -1;
doSomethingElse(i-1);
}
doSomething();
</script>
<!-- END OF PAGE -->
</body>
</html>
IE soulève un débordement de pile lorsque les valeurs sont autour de 3200, Firefox et Chrome peuvent gérer une récursion très profonde si on les compare à IE.
J'aimerais savoir s'il existe un moyen de lier l'exception de débordement de pile avec la fonction Javascript qui l'a soulevée pendant l'exécution dans IE ou tout autre navigateur et s'il est possible de donner la trace de la pile avec la chaîne de fonction dans la pile au moment où l'erreur a été soulevée.
2 votes
3200 appels, c'est beaucoup d'espace pour la pile. Les programmeurs Python (enfin, ceux qui ne s'acharnent pas à écrire des analyseurs récursifs ou à remplacer des boucles parfaitement simples par de la récursion pour le plaisir) se débrouillent très bien avec une limite de 1000 appels. Que faites-vous ?
4 votes
Il n'est pas formulé strictement en mode interrogatif, mais la dernière phrase "Je me demande s'il y a ..." pourrait être commencée par "Y a-t-il" et terminée par un point d'interrogation, ce qui donnerait une question assez directe.
0 votes
Merci pour les commentaires, je vais mieux clarifier la question.