begin process at 2010 03 16 11:32:38
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

JavaScript Orienté objet (POO)

 > 

Evènements

 > 

One more "Stack overflow at line: 0":-/


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

One more "Stack overflow at line: 0":-/

vendredi 24 avril 2009 à 10:48:09 | One more "Stack overflow at line: 0":-/

mono_neurone

Salut à tous.
J'ai beau chercher je ne vois pas d'ou vient le probleme avec mon bout de code.
En gros j'ai une fonction récursive (appelé sur le onload de chaque image) que j'appele pour charger une image apres l'autre. De temps a autre je reçois un stack overflow que je ne m'explique pas.
Comme il y a plus d'idées dans X tetes que dans une ...
Voici mon bout de code:
<code>
  try
  {
    var ImgPathArr = new Array(
      'Btns/BtnAccueilNB.gif',
      'Btns/BtnContactNB.gif',
      'Btns/BtnGalerieNB.gif',
      'Btns/BtnLiensNB.gif',
      'Btns/BtnNewsNB.gif',
      'Btns/BtnPrestaNB.gif',
      'Btns/BtnAccueilCLR.gif',
      'Btns/BtnContactCLR.gif',
      'Btns/BtnGalerieCLR.gif',
      'Btns/BtnLiensCLR.gif',
      'Btns/BtnNewsCLR.gif',
      'Btns/BtnPrestaCLR.gif',
      'Img/bord.png',
      'Img/DegraDEntete.gif',   
      'Img/LesJongleriesDeNoar.gif',
      'Img/PostIt.png',
      'Img/LeftUpCorner.png',
      'Img/LeftDownCorner.png',
      'Img/RightUpCorner.png',
      'Img/RightDownCorner.png',
      'Img/CircacroLogo.gif',
      'Img/GipsyCircusLogo2.gif',
      'Img/homesymbol.gif'
    );
    Preload(ImgPathArr,0,(ImgPathArr.length - 1));
  }
  catch(err)
  {
    alert("Main section error : " + err);
  }
 
  /*FUNCTIONS*/
  function Preload(ImgPathArr, ImgIdx, ImgIdxMax)
  {
    try
    {
      if (ImgIdx <= ImgIdxMax)
      {
        var objImage = new Image();
        objImage.onload=function(){Preload(ImgPathArr, (ImgIdx + 1), ImgIdxMax);};
        objImage.onerror=function(){Preload(ImgPathArr, (ImgIdx + 1), ImgIdxMax);};
        // preload the image file
        objImage.src=ImgPathArr[ImgIdx];
      }
      else
      {
        GoToMain();
      }
    }
    catch(err)
    {
      alert("Preload error : " + err);
    }
  }

  function GoToMain()
  {
    try
    {
      var WidthTab = new Array(600,800,1024,1152,1280,1440,1680,1920);
      var i = WidthTab.length - 1;
      var res = false;
     
      while ((i > 0) && (res == false))
      {
        if (screen.width >= WidthTab[i])
        {
          window.location.replace("main.php?page=Accueil&res=" + WidthTab[i]);
          res = true;
        }
        else
        {
          res = false;
        }
        i = i - 1;
      }
    }
    catch(err)
    {
      alert("GoToMain error : " + err);
    }
  }
</code>

Please Help

vendredi 24 avril 2009 à 12:42:08 | Re : One more "Stack overflow at line: 0":-/

Bul3

Membre Club


Bonjour,
à priori, à l'oeil, comme ça, sans tester.... ça devrait baigner
même si je t'avoue que je pense que tu te compliques la vie
        : par exemple : t'es sûr d'avoir besoin de tous ces try/catch ?
t'es sûr que cela vient du pré chargement ?
       oui : ça tombe bien, c'est totalement inutile, voire
              nuisible : sucre tout ! ;o)
      non : donc du test de la taille de l'écran ?
              j'aurais fait "plus simplement", mais ça devrait baigner
              à retenter quand le preload sera sucré... ;o)
Cordialement [mon Site] [M'écrire] Bul
vendredi 24 avril 2009 à 13:33:32 | Re : One more "Stack overflow at line: 0":-/

mono_neurone

Bonjour Bul3,

Ben oui selon moi aussi ca devrait tourner! lol
Bah je me complique la vie ... si on veut. Mon but est d'afficher une page html sur laquelle tu peux choisir (avec des liens) quelle résolution tu veux pour le site (pour ceux qui ont désactivé javascript). Pour ceux dont javascript est actif, ils sont redirigés automatiquement sur le site avec la bonne résolution. J'essaye de contenter tout le monde quoi ;-).
Tant que j'y étais, je me suis dit que j'allais précharger quelques unes des images de l'interface du site (pour ceux sans javascript:préchargement avec tag html + css et pour ceux avec :préchargement javascript).
Mais avant de rediriger les visiteurs sur mon site, je veux que les images aient fini de loader ! D ou le récursif sur l'évènement onload.
C'est un peu plus compliqué que de balancer les liens simplement dans l'image.src mais bon... ;-) Ca correspond mieux à ce que je veux faire.
Concernant les try catch, c'était surtout pour resortir des erreurs éventuelles liées à mon stack overflow. Je pense que je les virerai apres.

Bref, sans les try catch c'est la meme galere et j'ai pas plus d'info sur l'erreur.
La fonction pour la résolution est OK (quand je la mets en commentaire j'ai toujours le stack overflow), c'est donc pas ca.
Pour le préchargement : il passe 2 fois sur 3 sans mettre de stack overflow.
Je pense donc plutot à une erreur d'allocation/désallocation de resource liée au temps d'execution des fonctions preload les unes par rapport aux autres.Quand je mets moins d'images j'ai moins de stack overflow ! Pourtant comme j'ai mis ca dans l'event onload ca ne doit pas s'executer en parallèle!...
En plus en mettant des alert j'ai remarqué que ca se passe apres le chargement de la derniere image mais avant la redirection. Et entre les 2 y a rien qui est fait !!!
J 'y comprends rien

Si t'as des idées  ...
vendredi 24 avril 2009 à 13:49:12 | Re : One more "Stack overflow at line: 0":-/

Bul3

Membre Club

>>sans les try catch c'est la meme galere et j'ai pas plus d'info sur l'erreur

NavigateursQuelques Explications

Chrome
contrôler page actuelle / Options pour développeurs
/ Console Javascript

FireFox
Outils / Console d'erreurs
et mieux : télécharger FireBug

Internet
Explorer
activer le deboggage : Outils/options Internet/Avancés
dans la liste, sous "Navigation" : décocher
o Afficher une notification de chaque erreur de script
o Désactiver le débogage de Scripts (Internet Explorer)
et mieux (pour IE < 8) : télécharger le Debogger IE
voir aussi : DebugBar et Companion JS

K-Meleon
Outils / Console d'erreurs

Opera
Outils / Avancé / Console d'erreurs

Safari
Debug / Show JavaScript Console
° modifier Fichier com.apple.Safari.plist situé dans le
répertoire : Support:\Documents and Settings\utilisateur
\Application Data\Apple Computer\Safari\Preferences\
y ajouter <key>IncludeDebugMenu</key>
<true/>
avec certains : pas à pas possible , mais comme c  'est
peut-être une histoire de timeOut ( voir ci dessous )
l'erreur ne sera pas déclenchée !
>>En plus en mettant des alert j'ai remarqué que ca se passe apres le chargement
>>de la derniere image mais avant la redirection.
j'aurais bien parié sur la dernière image ( au nez ! )
je n'ai rien testé/contrôlé/ ni regardé sérieusement de ton script !
il y a peut-être ( sûrement ) une explication
peut-être une histoire de timeOut, mais comme je pense qu'un
préchargement est nocif, je ne vais pas regarder beaucoup plus loin !

@+

vendredi 24 avril 2009 à 14:34:23 | Re : One more "Stack overflow at line: 0":-/

mono_neurone

Merci pour le tableau avec les browser ! Excellent
Vais me garder ca sous le coude.
Ok je vais continuer à chercher.

Juste une question : pourquoi tu penses que le préchargement est nocif ?
Si c'est des grosses images d'accord mais si ce n'est que quelques images d'une 10aine de ko chacunes ?
On voit presque pas la différence (temps pour l'affichage de la page) et ca donne un meilleur rendu à l'affichage (ex les coins arrondis qui arrivent par la suite ...)
J'aimerais avoir ton idée sur la question.
En tous cas merci quand meme d'etre penché sur mon prob

A+
vendredi 24 avril 2009 à 14:48:40 | Re : One more "Stack overflow at line: 0":-/

Bul3

Membre Club

>>pourquoi tu penses que le préchargement est nocif ?
si tu ne fais pas de préchargement, la page s'affiche, est disponible immédiatement,
   les images : au fur et à mesure, à leur rythme ( enfin au rythme de la connexion )
si tu fais un préchargement, ta page n'est affichée, n'est accessible que lorsque
   toutes les images sont téléchargées, même celles qu'on ne consultera jamais (!!!)
   temps d'attente insupportable à la connexion, et inutile ( sauf cas précis qui
   existent peut-être mais j'aimerais voir ).
moi qui n'ai qu'un modem 56k je peux te dire que ce genre d'inutilitaire me
  font quitter le site avant la fin et que je n'y reviens plus.


vendredi 24 avril 2009 à 15:12:19 | Re : One more "Stack overflow at line: 0":-/

mono_neurone

Oui je peux comprendre (surtout avec un 56k).
Dans mon cas, toutes les images que je charge sont de petites images (apres verif elles font entre 1ko et 7ko) destinées au "look" de la page d'accueil . Autrement dit : toutes les images chargées seront utilisées!
Et pour les plus grosses images qui seront affichées, je les laisse en dehors du préchargement expret (à cause de ce temps d'attente).
Maintenant c'est vrai que ne voir qu'une page blanche pendant des plombes c'est pas agréable mais je pense quand meme que dans mon cas, pour qq images légères, l'idée n'est pas mauvaise.
Apres c'est chacun son point de vue

vendredi 24 avril 2009 à 15:28:52 | Re : One more "Stack overflow at line: 0":-/

Bul3

Membre Club
c'est comme tu le sens....
attendre ou pas, perso, je préfère "ne pas attendre" !
"pour moi", rien ne justifie un préchargement,
mais c'est comme tu dis :
chacun fait comme il sent, et les vaches seront bien gardées.
@+



samedi 25 avril 2009 à 11:20:58 | Re : One more "Stack overflow at line: 0":-/

Bul3

Membre Club

néanmoins... ce qu'utilisent en général les autres "préloader"
( mais tout aussi nocifs ! ) : un Array.

var I = new Array();
et dans la fonction, en incrémentant une variable k :
   I[k] = new Image();
   I[k].onload =function()  { rappel de la fonction };
   I[k].src = l'image à charger[k];

Yeux Sur Ligne.gif
pour tenter de t'expliquer :
sans préload : la page est immédiatement disponible
                    les images se chargent/s'affichent
avec préload, les images sont chargées, plus lentement que sans, puisque javascript en plus
                   puis il faudra les afficher, en allant les chercher dans le cache si le
                         navigateur juge que c'est mieux que sur le site
                   la page n'est disponible ( visible même ) à la fin du préchargement
@+

mardi 28 avril 2009 à 09:51:20 | Re : One more "Stack overflow at line: 0":-/

XtremDuke

@Bultez : Suivant ce qu'on veut faire, un préchargement d'image peut être nécessaire afin d'éviter des effets de bord. Exemple : http://joof-api.net/demos/smartbox/ "avec préload, les images sont chargées, plus lentement que sans, puisque javascript en plus" >> Je n'ai pas remarqué de differences. "puis il faudra les afficher, en allant les chercher dans le cache si le navigateur juge que c'est mieux que sur le site" >> Il n'y a rien à faire. Le navigateur gère ça tout seul comme un grand.

1 2 3 4

Cette discussion est classée dans : gif, img, png, btns, imgpatharr


Répondre à ce message

Sujets en rapport avec ce message

hebergement gratuit [ par MisterPeace ] Bonjour, je cherche un hebergeur gratuit sans pub, avec minimum de 5MO d'espaceMerci d'avanceParce que nous sommes tous newb quelque part <img src=/i Changement contenu DIV [ par Nargzul ] Bonjour,J'ai un petit programme qui tourne avec du AJAX, tous les 250ms, je reçois une mise à jour(ca c'est controlé la ligne d'au desuss le problème Fenêtre flottante sous FireFox [ par monpseudopasutiliser ] Bonsoir, je ne connais strictement le JavaScript, mais en récoltant des infromation j'ai réussis à faire une fenêtre "flottante" sur mon site: elle ma Superposer des images et les combiner [ par Koppa ] Bonjour !J'aurais besoin d'un code (pas de PHP svp) qui permet de faire ceciLors d'un clique sur une image (0001.gif) elle apparaisse sur l'image de b Taille des images [ par bizibiz17 ] bonjour,En fait j'ai un problème avec des images en javascript.J'ai besoin de connaître la taille (en pixels) des images que je charge.Je fais:my_img. expression reguliere : img html vers bbcode [ par Full62 ] bonjour,je veut utiliser une expression reguliere pour convertir mon code html vers du bbcode mais cela ne fonctionne pas...voici ce que j'ai mis :// Erreur c00ce56e [ par ov3rdoze ] Bonjour à tousJe viens de terminer un site dans lequel j'utilise XMLHttpRequest. En local pas de problème. Je viens d'envoyer le site sur le serveur e Un appel javascript dans une div [ par cosycorner ] Bonjour à tous, Je voudrais insérer des images aléatoires dans une div aux dimensions précises.(en background ?)J'ai trouvé ce script qui fonctionne p Ouvrir une page dans un cadre donné... [ par yatusutya ] Bonjour, Pour un site Internet à 4 cadres : haut, gauche, bas et centre. Le menu est dans le cadre du bas et je ne parviens pas à ouvrir les pages dan un appel javascript dans une div [ par cosycorner ] Bonjour à tous, Je voudrais insérer des images aléatoires dans une div aux dimensions précises.(en background ?)J'ai trouvé ce script qui fonctionne p


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,373 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales