web-dev-qa-db-fra.com

"Dépassement de pile en ligne 0" sous Internet Explorer

Je me rends compte que ce n’est pas l’endroit idéal pour poser des questions à ce sujet en termes de capacité de recherche, mais j’ai une page dont le code JavaScript génère des erreurs "Stack overflow in line 0" lorsque je le regarde dans Internet Explorer.

Le problème est clairement non pas à la ligne 0, mais quelque part dans la liste des éléments que j'écris dans le document. Tout fonctionne bien dans Firefox, je n’ai donc pas le plaisir de Firebug et de ses amis de vous aider à résoudre les problèmes.

Y at-il des causes standard pour cela? Je suppose que c'est probablement un bogue d'Internet Explorer 7 ou quelque chose d'assez obscur, et que mon Google-f m'apporte peu de joie actuellement. Je peux trouver beaucoup de gens qui ont déjà eu affaire à cela auparavant, mais je n'arrive pas à trouver comment ils ont résolu le problème.

38
glenatron

Vous pouvez activer off le "Disable Script Debugging" option dans Internet Explorer et démarrez le débogage avec Visual Studio si vous en avez.

J'ai découvert qu'il s'agissait de l'une des rares façons de diagnostiquer certains de ces problèmes spécifiques à IE.

17
Mitchel Sellers

J'ai récemment rencontré ce problème et écrit un article sur le cas particulier de notre code qui était à l'origine de ce problème.

http://cappuccino.org/discuss/2010/03/01/internet-Explorer-global-variables-and-stack-overflows/

En résumé, la récursivité passant par l'objet global Host est limitée à une profondeur de pile de 13. En d'autres termes, si la référence utilisée par votre appel de fonction (pas nécessairement la fonction elle-même) a été définie avec un formulaire window.foo = fonction, puis récursif à travers foo est limité à une profondeur de 13.

32
Ross Boucher

Aha!

J'ai eu un événement OnError() dans un code qui définissait la source de l'image sur un chemin d'image par défaut s'il n'était pas trouvé. Bien sûr, si le chemin de l'image par défaut n'était pas trouvé, le gestionnaire d'erreurs serait déclenché ...

Pour les personnes qui ont un problème similaire mais pas le même, je suppose que la cause en est probablement une boucle non terminée, un gestionnaire d’événements qui se déclenche ou quelque chose de similaire qui lance le moteur JavaScript en vrille.

20
glenatron

J'ai eu ce problème et je l'ai résolu. Il y avait un attribut dans le <%@ Page balise nommée MaintainScrollPositionOnPostback et après l'avoir supprimée, l'erreur a disparu. Je l'ai ajouté avant pour empêcher le défilement après chaque publication.

7
massoud

Si vous êtes venu ici parce que vous avez eu le problème dans vos tests Selenium: IE n'aime pas By.id("xyz")] _. Utilisez By.name, xpath ou autre chose à la place.

3
devsnd

Avoir aussi smartNavigation = "true" provoque ceci "

2
CDev

J'ai mis en place un projet par défaut et découvert ce qui suit:

Le problème est la combinaison de smartNavigation et de maintenanceScrollPositionOnPostBack. L'erreur ne se produit que lorsque les deux sont définis sur true.

Dans mon cas, l'erreur a été produite par:

<pages smartNavigation="true" maintainScrollPositionOnPostBack="true" />

Toute autre combinaison fonctionne bien.

Quelqu'un peut-il confirmer cela?

2
Tillito
  1. Options Internet
  2. Outils
  3. Options Internet
  4. Avancée
  5. Section de navigation
  6. Cliquez sur> Désactiver le débogage de script

    afficher une notification pour chaque erreur de script

  7. se connecter
  8. Vous allez sourire!
1
Janaka senatilleke

Mon était "à la ligne 1" à la place mais ...

J'ai eu ce problème en utilisant la méthode .clone De jQuery. J'ai remplacé ceux-ci en utilisant la création d'objets jQuery à partir de la chaîne html: $($(selector).html()).

1
Muhd

J'ai reproduit la même erreur sur IE8. L'une des zones de texte contient des gestionnaires d'événements pour remplacer les données non valides.

$('.numbersonly').on("keyup input propertychange", function () {
    //code
});

Le message d'erreur apparaissait lors de la saisie de données dans cette zone de texte. Nous avons supprimé l'événement "propertychange" du code ci-dessus et maintenant, il fonctionne correctement.

P.S. peut-être que ça va aider quelqu'un

1
Max

Dans mon cas, j'avais deux fonctions a() et b(). Le premier appelait le deuxième et le deuxième appelait le premier:

var i = 0;
function a() { b(); }
function b() {
  i++; 
  if (i < 30) {
    a();
  }
}

a();

J'ai résolu ceci en utilisant setTimeout:

var i = 0;
function a() { b(); }
function b() {
  i++; 
  if (i < 30) {
    setTimeout( function() {
      a();
    }, 0);
  }
}

a();
0
lord_t

Je ne sais pas quoi vous dire, mais le même problème s'est produit avec le tri de table jQuery et SEARCH. Lorsqu'il ne reste plus rien dans la table, où vous recherchez une chaîne par exemple, vous obtenez également cette erreur. Même dans Google Analytics, cette erreur se produit souvent.

0
FasoService