Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2463 connectés 

  FORUM HardWare.fr
  Programmation

  [javascript] experts des erreurs souhaités :[:[

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[javascript] experts des erreurs souhaités :[:[

n°164786
k666
dites non à petitmou
Posté le 24-06-2002 à 16:31:45  profilanswer
 

salut,
j'ai un système de navigation en Javascript pour mon site, avec des frames etc...
le blème est que parfois (et je n'arrive pas à trouver QUAND, mais en général quand dans la frame de contenu ya une erreur JS) bin ma navigation ne fonctionne plus,
mes targuette.location.href ne font plus rien, ou alors font des trucs sur certains frames et pas sur d'autres ...
je vois pas du tout comment je pourrais capturer les erreurs et comment continuer à naviguer sans que des erreurs du contenu influent sur le tout ?
bref
 
eske c possible qu'une erreur de script dans un des frames empêche la bonne exécution des actions dans un autre frame, ou alors .... avez vous des bons liens vers des gestions d'erruer JS ?
 
(note: ces erreurs dans la navigation n'existent que sur IE, j'ai testé sous mozilla et sur IE for mac etr ça passe )
 
merci c urgent en fait (livraison produit imminente :'( )

mood
Publicité
Posté le 24-06-2002 à 16:31:45  profilanswer
 

n°164830
youdontcar​e
Posté le 24-06-2002 à 17:30:08  profilanswer
 

k666 a écrit a écrit :

je vois pas du tout comment je pourrais capturer les erreurs et comment continuer à naviguer sans que des erreurs du contenu influent sur le tout ?


try
{
  ... ton code javascript
}
catch (e)
{
  ... e est un objet contenant l'erreur.
  for (i in e)
  {
     alert(i + eval('e.' + i));
  }
}
 
tu rajoutes ça dans les bouts de code qui te semblent poser problème et tu regardes ce que tu obtiens.
 
si tu as une url, je veux bien tester ta page ...

n°164894
k666
dites non à petitmou
Posté le 24-06-2002 à 18:26:44  profilanswer
 

ça marche pas :(
 
mon script est à la racine d'un frameset,
ça marche pas ça me claque aucune erreur et c bien ça le problème,
il y a seulement une des frames à reloader qui se reloade pas, et c en général celle dans laquelle ya eu une erreur,
pourtant la navigation n'est pas dans cette frame, je la reloade rechange depuis l'extérieur :(

n°164914
youdontcar​e
Posté le 24-06-2002 à 19:04:12  profilanswer
 

sisi ça marche. mais vu la profusion de détails que tu donnes, j'ai du mal à voir où le problème pourrait être.

n°165214
k666
dites non à petitmou
Posté le 25-06-2002 à 09:49:03  profilanswer
 

ouais
bin en fait je donne des détails parceq'uils sont très importants:
 
un frameset contenant 3 frames et un script de navigation,
il y a une seule des frames qui, parfois, ne veut plus rechanger son location.href et ne pète aucune erreur à la gueule, simplement elle change pas l'url (alors que toutes les autres le font) ....
 
les détails ont donc une valeur je crois :'(

n°165219
kayasax
Posté le 25-06-2002 à 09:52:00  profilanswer
 

k666 t'as pas senti comme une touche de sarcasme dans le s propos de youdontcare??
des details c bien mais le code source c'est mieux pour depanner...


---------------
All we need is a soul revolution
n°165354
k666
dites non à petitmou
Posté le 25-06-2002 à 12:58:36  profilanswer
 

okaie
mais j'avoue: ya bcp de php derrière ;)
c parti!
 

Code :
  1. <script language="Javascript">
  2. // état actuel de la navigation
  3. var current_activity_id = <?= $activity_id ?>;
  4. var current_offer_id = <?= $offer_id ?>;
  5. var current_root_offer_id = <?= $root_offer_id ?>;
  6. var current_user_id = <?= $user_id ?>;
  7. var player_ready = false;
  8. var debug = true;
  9. var tries = 0;
  10. <?
  11. if ($_GET['undocked'] == "y" )
  12. {
  13. echo "var undocked = \"y\";";
  14. }
  15. else
  16. {
  17. echo "var undocked = \"n\";";
  18. }
  19. ?>
  20. var obj_infobar;
  21. var obj_topbar;
  22. var obj_navbar;
  23. var obj_content;
  24. function showHelp()
  25. {
  26. var helpwindow = window.open("" );
  27. helpwindow.document.write("<html><body>ici aide, non dispo...</body></html>" );
  28. }
  29. function objExists(which)
  30. {
  31. if ( (which != null) )
  32. {
  33.  return true;
  34. }
  35. else
  36. {
  37.  return false;
  38. }
  39. }
  40. function dockOrUndock()
  41. {
  42. if (undocked == "y" )
  43. {
  44.  obj_navbar.close();
  45.  this.location = "./?activity_id=" + current_activity_id + "&offer_id=" + current_offer_id + "&root_offer_id=" + current_root_offer_id + "&user_id=" + current_user_id ;
  46. }
  47. else
  48. {
  49.  this.location = "./?activity_id=" + current_activity_id + "&offer_id=" + current_offer_id + "&root_offer_id=" + current_root_offer_id + "&user_id=" + current_user_id + "&undocked=y" ;
  50. }
  51. }
  52. function goHome()
  53. {
  54. if ( (undocked == "y" ) && objExists(obj_navbar) )
  55. {
  56.  obj_navbar.close();
  57. }
  58. this.location = "../../details/?root_offer_id="+current_root_offer_id;
  59. }
  60. function goFirst()
  61. {
  62. obj_infobar.location.href = "infobar.php?activity_id=" + current_activity_id + "&offer_id=" + current_offer_id + "&root_offer_id=" + current_root_offer_id + "&user_id=" + current_user_id+ "&action=first";
  63. }
  64. function goPrevious()
  65. {
  66. obj_infobar.location.href = "infobar.php?activity_id=" + current_activity_id + "&offer_id=" + current_offer_id + "&root_offer_id=" + current_root_offer_id + "&user_id=" + current_user_id+ "&action=previous";;
  67. }
  68. function goNext()
  69. {
  70. obj_infobar.location.href = "infobar.php?activity_id=" + current_activity_id + "&offer_id=" + current_offer_id + "&root_offer_id=" + current_root_offer_id + "&user_id=" + current_user_id+ "&action=next";
  71. }
  72. function reDir(obj,newurl)
  73. {
  74. if( objExists(obj) )
  75. {
  76.  obj.location.replace(newurl);
  77.  tries = 0;
  78.  return true;
  79. }
  80. else if ( tries < 10 )
  81. {
  82.  tries++;
  83.  setTimeout("reDir("+obj+","+newurl+" );","200" );
  84. }
  85. else
  86. {
  87.  return false;
  88. }
  89. }
  90. function gotoActivity(activity_id,offer_id)
  91. {
  92. try
  93. {
  94.  if (player_ready)
  95.  {
  96.   current_activity_id = activity_id;
  97.   current_offer_id = offer_id;
  98.   var querystring = "activity_id=" + current_activity_id + "&offer_id=" + current_offer_id + "&root_offer_id=" + current_root_offer_id + "&user_id=" + current_user_id + "&expand=" + current_offer_id + "&undocked=" + undocked;
  99.   reDir(obj_content,"content.php?" + querystring);
  100.   reDir(obj_topbar,"topbar.php?" + querystring);
  101.   reDir(obj_navbar,"navbar.php?" + querystring + "#"+current_offer_id+"-"+current_activity_id);
  102.  }
  103. }
  104. catch (e)
  105. {
  106.  for (i in e)
  107.  {
  108.      alert(i + eval('e.' + i));
  109.  }
  110. }
  111. }
  112. function tagActivity(status)
  113. {
  114. if (objExists(obj_infobar))
  115. {
  116.  obj_infobar.location.href = "platform.php?activity_id=" + current_activity_id + "&offer_id=" + current_offer_id + "&root_offer_id=" + current_root_offer_id + "&user_id=" + current_user_id+ "&status="+status;
  117.  return true;
  118. }
  119. else
  120. {
  121.  return false;
  122. }
  123. }
  124. function doLoad()
  125. {
  126. obj_infobar = eval("infobar" );
  127. obj_topbar = eval("topbar" );
  128. obj_navbar = eval("navbar" );
  129. obj_content = eval("content" );
  130. if ( objExists(obj_infobar) && objExists(obj_topbar) && objExists(obj_navbar) && objExists(obj_content) )
  131. {
  132.  player_ready = true;
  133.  tries = 0;
  134. }
  135. else if ( tries < 10 )
  136. {
  137.  tries++;
  138.  setTimeout("doLoad();","200" );
  139. }
  140. else
  141. {
  142.  player_ready = false;
  143.  return false;
  144. }
  145. }
  146. function blank()
  147. {
  148. return "<html></html>";
  149. }
  150. function preloaded()
  151. {
  152. window.status = "ok";
  153. }
  154. </script>
  155. <?
  156. if ($_GET['undocked'] == "y" )
  157. {
  158. ?>
  159. <script language="javascript">
  160. var navbar = window.open("navbar.php?activity_id=<?= $activity_id ?>&offer_id=<?= $offer_id ?>&root_offer_id=<?= $root_offer_id ?>&user_id=<?= $user_id ?>&action=login&undocked=y#<?= $offer_id ?>-<?= $activity_id ?>","","height=400,width=300,status=no,toolbar=no,menubar=no,location=no,resizable,scrollbars" );
  161. </script>
  162. <frameset rows="0,50,*" frameborder="no" framespacing="0" onload="javascript:doLoad();">
  163.  <frame name="infobar" src="blank();">
  164.  <frame name="topbar" src="topbar.php?activity_id=<?= $activity_id ?>&offer_id=<?= $offer_id ?>&root_offer_id=<?= $root_offer_id ?>&user_id=<?= $user_id ?>&action=login">
  165.  <frame name="content" src="content.php?activity_id=<?= $activity_id ?>&offer_id=<?= $offer_id ?>&root_offer_id=<?= $root_offer_id ?>&user_id=<?= $user_id ?>&action=login">
  166. </frameset>
  167. <?
  168. }
  169. else
  170. {
  171. ?>
  172. <frameset rows="0,50,*" frameborder="no" framespacing="0" onload="javascript:doLoad();">
  173.  <frame name="infobar" src="blank();" frameborder="no">
  174.  <frame name="topbar" src="topbar.php?activity_id=<?= $activity_id ?>&offer_id=<?= $offer_id ?>&root_offer_id=<?= $root_offer_id ?>&user_id=<?= $user_id ?>&action=login" frameborder="no">
  175.  <frameset cols="250,*" frameborder="no">
  176.   <frame name="navbar" src="navbar.php?activity_id=<?= $activity_id ?>&offer_id=<?= $offer_id ?>&root_offer_id=<?= $root_offer_id ?>&user_id=<?= $user_id ?>&action=login" frameborder="no">
  177.   <frame name="content" src="content.php?activity_id=<?= $activity_id ?>&offer_id=<?= $offer_id ?>&root_offer_id=<?= $root_offer_id ?>&user_id=<?= $user_id ?>&action=login" frameborder="no">
  178.  </frameset>
  179. </frameset>
  180. <?
  181. }
  182. ?>
  183. </html>

n°165357
k666
dites non à petitmou
Posté le 25-06-2002 à 13:00:18  profilanswer
 

la frame dans laquelle se trouvera le contenu est celle instanciée par obj_content
 
 
 
la fonction qui chie, et que je suis entrain de bosser, c'est:
 

Code :
  1. function gotoActivity(activity_id,offer_id)
  2. {
  3. try
  4. {
  5.  if (player_ready)
  6.  {
  7.   current_activity_id = activity_id;
  8.   current_offer_id = offer_id;
  9.   var querystring = "activity_id=" + current_activity_id + "&offer_id=" + current_offer_id + "&root_offer_id=" + current_root_offer_id + "&user_id=" + current_user_id + "&expand=" + current_offer_id + "&undocked=" + undocked;
  10.   reDir(obj_content,"content.php?" + querystring);
  11.   reDir(obj_topbar,"topbar.php?" + querystring);
  12.   reDir(obj_navbar,"navbar.php?" + querystring + "#"+current_offer_id+"-"+current_activity_id);
  13.  }
  14. }
  15. catch (e)
  16. {
  17.  for (i in e)
  18.  {
  19.      alert(i + eval('e.' + i));
  20.  }
  21. }
  22. }


 
 
 

n°165359
k666
dites non à petitmou
Posté le 25-06-2002 à 13:00:50  profilanswer
 

bref ...
j'ai rajouté des try catch etc... faites semblant qu'ils sont pas là, paske ça fait rien du tout :'(


Message édité par k666 le 25-06-2002 à 13:01:20
n°165401
kayasax
Posté le 25-06-2002 à 14:03:41  profilanswer
 

try fo pas le rajouter c simplement youdontcare qui te dis d'essayer sa technique...
je pas mate tt le code pour l'instant


---------------
All we need is a soul revolution
mood
Publicité
Posté le 25-06-2002 à 14:03:41  profilanswer
 

n°165435
k666
dites non à petitmou
Posté le 25-06-2002 à 14:33:49  profilanswer
 

okaie, version super simplifiée:
 

Code :
  1. function gotoActivity(activity_id,offer_id)
  2. {
  3.   obj_content.location.href = "content.php?" + querystring;
  4.   obj_navbar.location.href = "navbar.php?" + querystring;
  5.   obj_topbar.location.href = "topbar.php?" + querystring;
  6. }
  7. function doLoad()
  8. {
  9.   obj_infobar = eval("infobar" );
  10.   obj_topbar = eval("topbar" );
  11.   obj_navbar = eval("navbar" );
  12.   obj_content = eval("content" );
  13. }
  14. </script>


<frameset rows="0,50,*" frameborder="no" framespacing="0" onload="javascript:doLoad();">  
 <frame name="infobar" src="blank();" frameborder="no">  
 <frame name="topbar" src="topbar.php?activity_id=<?= $activity_id ?>&offer_id=<?= $offer_id ?>&root_offer_id=<?= $root_offer_id ?>&user_id=<?= $user_id ?>&action=login" frameborder="no">  
 <frameset cols="250,*" frameborder="no">  
  <frame name="navbar" src="navbar.php?activity_id=<?= $activity_id ?>&offer_id=<?= $offer_id ?>&root_offer_id=<?= $root_offer_id ?>&user_id=<?= $user_id ?>&action=login" frameborder="no">  
  <frame name="content" src="content.php?activity_id=<?= $activity_id ?>&offer_id=<?= $offer_id ?>&root_offer_id=<?= $root_offer_id ?>&user_id=<?= $user_id ?>&action=login" frameborder="no">  
 </frameset>  
</frameset>
 
 
 
donc:
 
à certains moments, quand la frame centrale comporte (je crois) certaines erreurs etc .... la navigation ne se fait plus, la frame centrale n'est plus rechargée :(


Message édité par k666 le 25-06-2002 à 14:35:36
n°165465
k666
dites non à petitmou
Posté le 25-06-2002 à 14:49:24  profilanswer
 

c'est comme si la propriété de l'objet obj_content ne répondait plus à location.href ou alors la cible est ailleurs :[

n°165717
youdontcar​e
Posté le 25-06-2002 à 18:37:31  profilanswer
 

sisi faut bien mettre le try ...
 
ça peut venir de ton setTimeout() qui éxécute du code incorrect, du fait que tu essayes d'accéder à des variables pas encore 'nées' (avant le onload()) ou mortes. ton obj_content ne supporte peut-être pas le eval() du chargement ... d'ailleurs ce machin n'est compatible qu'ie, vaut mieux utiliser document.getElementById().
 
* regarde à quel moment le panneau d'erreur jaune apparaît en bas à gauche dans ie
 
* le mieux ce serait quand même que tu foutes le code sur une page html et que tu files le lien. pas TOUT le code, tu enlèves tout ce qui marche jusqu'à ce que tu trouve une erreur reproductible que tu ne piges pas / ininterceptable avec try & catch.

n°165729
k666
dites non à petitmou
Posté le 25-06-2002 à 18:47:38  profilanswer
 

euh
c très chaud paske c'est une application que je suis entrain de développer et je peux malehureusement pas donner accès à tout ça en ligne :(
 
et à aucun moment n'apparait une erreur en bas à gauche,
le fait que ça s'arrête de fonctionner n'est pas dû à une erreur durable ..
le truc marche nickel sous MOZILLA 1.0 et marche nickel sous MAC/IE,
ce n'est que sous winIE que, dans certaines conditions maheureusement irréproductibles, ça s'arrête de marcher,
mais ça ne s'arrête pas totalement,
il y a uniquement la FRAME potentiellement dangereuse (celle qui comporte le contenu hétérogène) qui arrête de changer son HREF, sans claquer aucune erreur ni rien, c'est comme si'lobjet continuait d'exister mais devenait un fantôme,
c'est pour ça que c'est très chiant à expliquer :(:(:(
 
bref,
le truc c'est que j'aimerais trouver un moyen pour changer qd me^me cette URL du frame de contenu, mais apparemment ya pas moyen :(

n°165770
youdontcar​e
Posté le 25-06-2002 à 19:25:48  profilanswer
 

ça te dirait pas de tester donc :
 
  function gotoActivity(activity_id,offer_id)  
  {  
   try  
   {
      obj_content.location.href = "content.php?" + querystring;  
      obj_navbar.location.href = "navbar.php?" + querystring;  
      obj_topbar.location.href = "topbar.php?" + querystring;  
   }
   catch(e)
   {
      alert('ERREUR';);
   }
 
  }  
 
?

n°165891
k666
dites non à petitmou
Posté le 25-06-2002 à 22:02:37  profilanswer
 

c'est ce que j'ai fait, cf. post nº7 :'(

n°165896
youdontcar​e
Posté le 25-06-2002 à 22:17:24  profilanswer
 

he bien je suis à court d'idées ... :D

n°165939
k666
dites non à petitmou
Posté le 25-06-2002 à 23:18:20  profilanswer
 

sinon vous connaissez pas un forum ou je puisse poster ?
 :kaola:  
 
 :ange:

n°167140
k666
dites non à petitmou
Posté le 27-06-2002 à 12:16:04  profilanswer
 

bon merci à tous ceux qui ont participé :)
 
j'ai corrigé mon bug en ré-évaluant les objets à chaque action, car en effet comme je le pensais, la fenêtre de contenu devenait zombie dans certains cas/erreurs/bugs de IE pour windows, et donc en réévaluant l'objet, elle retrouvait bien sa fenêtre,
c'est pour ça que ça pétait pas d'erreurs à la gueule, paske ça changeait bien d'url dans une fenêtre inexistante :(
j'ai mis du temps à trovuer, et j'ai compris aussi que le try catch, c pas encore ça ;)

n°167147
ethernal
Chercheur de vérité...
Posté le 27-06-2002 à 12:25:33  profilanswer
 

j'ai pas tout lu (du tout), j'espère que ce n'st pas trop hors sujet...
 
(sans vous prendre pour des newbies) Le débogueur de js de Netscape fait bien son travail et c'est bien pratique.
Tu tapes "javascript:" dans la barre d'url, il t'ouvres une autre fenêtre qui t'indique toutes les erreurs de la page en cours.


---------------
...oups kernel error...
n°167153
k666
dites non à petitmou
Posté le 27-06-2002 à 12:34:05  profilanswer
 

ouais je sais je m'en sers souvent,
mais là c'était un bug 100% ie :(
et leur débogueur est mal foutu, et l'erreur n'était pas détectée ;)

n°167165
ethernal
Chercheur de vérité...
Posté le 27-06-2002 à 12:52:31  profilanswer
 

ha ok :)
c'est encore pire ces erreurs là :lol:
 
haaa, js qd tu nous tiens...


---------------
...oups kernel error...
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [javascript] experts des erreurs souhaités :[:[

 

Sujets relatifs
[Flash/Javascript] Faire un bouton windows.close ???[JavaScript] bypasser les erreurs de script ; méthode ?
Javascript pour le mode plein écran[php] et [Javascript] Comment inserer du java dans une page php ???
Javascript : un lien pour afficher une image parmi une liste d'imagesContrôle javascript sur radio buttons...
[javascript]Document.write [je désespére.....][Javascript & HTML] OnUnload et Mozilla
Comment faire passer un argument en javascript ? 
Plus de sujets relatifs à : [javascript] experts des erreurs souhaités :[:[


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR