IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Message d'erreur "Stack overflow"


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 3
    Par défaut Message d'erreur "Stack overflow"
    Bonjour à tous,

    Après des heures de recherche, je n'ai toujours pas trouvé d'où provient l'erreur de "Stack overflow at line : ..".
    J'explique rapidement la partie qui est concerné : il s'agit d'une fiche client qui m'indique les postes sur lequel il est rattaché. Lorsque je clique sur "Supprimer" l'erreur apparaît...

    J'utilise JS et IE8 en local

    Voici le bout de code dans le .js :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    function SupprimerPoste(Liaison, Postes)
    	{
    		if (Postes == 2)
    		{
    			alert("Un contact doit être rattaché à au moins un poste");
    		}
    		else
    		{
    			var SupprPoste = ConnectorDb("DELETE", "SupprimerPoste|SuccesEchec", Liaison);		
    			if (SupprPoste != "Echec")
    			{
    				window.location.reload();
    			}
    			else
    			{
    				alert("Echec lors de la suppression");
    			}
    		}
    	}
    Merci pour votre aide et bonne fête à tous !

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    je dirais que tu as une boucle infinie ..
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 3
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    je dirais que tu as une boucle infinie ..
    Merci pour ta rapidité.

    J'ai lu que ça pouvez être soit à cause d'une boucle infinie ou alors un erreur sur la pile... Je vais faire différents test pour voir où ça plante

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    avec la console firebug met sun point d'arret et fais un pas à pas ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre Expert
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Par défaut
    Ou si tu utilises les Chrome Dev Tools, place debugger; dans ton code.

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var i = 0, arr = ["un", "deux", "trois"], len = arr.length;
     
    for (; i < len ; i++) {
      debugger;
      console.log(i + ' : ' + arr[i]);
    }

    Sous IE8, cette erreur "Stack overflow at line : .." apparait sous forme de "popup" non ?
    IE 8 = Limité en nombre de récursions (une douzaine je crois) quand une fonction récursive est rattachée à l'objet global (window). Par exemple, ce code va générer un Stack overflow at line : .. sous IE8 (en admettant que le nombre totale de récursion autorisée est de 12) :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    window.recursive = function(nb) {
      if (nb !== 0) {
        console.log('nb : ' + nb);
        recursive(nb - 1);
      }
    }
    recursive(13);
    Il faut donc mettre cette fonction récursive dans une variable non attachée au scope global (window). Par exemple, en utilisant le "module pattern" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    (function(){
      // la fonction récursive est locale
      var recursiveLocal = function(nb) {
        if (nb !== 0) {
          console.log('nb : ' + nb);
          recursiveLocal(nb - 1);
        }
      }
     
      // on attache notre fonction locale à une fonction globale pour y accéder en dehors de ce scope. La fonction locale sera "utilisée" pour faire la récursivité
      window.recursive = recursiveLocal;
    }());
     
    recursive(13);
    Ainsi, la récursion se passe dans une variable locale et non plus dans une variable gloable = IE8 est content.

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 3
    Par défaut
    Merci pour cette réponse mais je crois que je n'ai pas tout compris, enfin, je ne sais pas comment exploiter ce code (où le placer et comment l'utiliser )

Discussions similaires

  1. Vba Access - message d'erreur overflow
    Par christian81 dans le forum VBA Access
    Réponses: 5
    Dernier message: 15/08/2007, 15h10
  2. Erreur Stack Overflow
    Par Soulama dans le forum Delphi
    Réponses: 3
    Dernier message: 03/05/2007, 13h32
  3. Message d'erreur Overflow
    Par Sofie109 dans le forum Access
    Réponses: 3
    Dernier message: 25/07/2006, 09h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo