[JAVASCRIPT] un probleme pour les balezes et vieux routards

un probleme pour les balezes et vieux routards [JAVASCRIPT] - Programmation

Marsh Posté le 17-05-2001 à 18:04:32    

Alors là, je ne sais plus quoi penser ....
je m'explique :
je fais un script qui permet d'ecrire tout le contenu d'une page (une frame en fait). Ainsi, je fais des
top.frames[frame].document.write('truc');
mais ça ,j'en fais plein:

Code :
  1. top.frames[frame].document.write('<html>');
  2. top.frames[frame].document.write('<!-- page générée automatiquement par JavaScript-->');
  3. top.frames[frame].document.write('<head>');
  4. top.frames[frame].document.write('<style type="text/css">');
  5. top.frames[frame].document.write('   <!--');
  6. top.frames[frame].document.write('    a:link {text-decoration:none; color:'+couleur+';}');
  7. top.frames[frame].document.write(' a:visited {text-decoration:none; color:'+couleur+';}');
  8. top.frames[frame].document.write(' a:hover {text-decoration:underline; color:'+couleur+';}');
  9. top.frames[frame].document.write('   -->');
  10. top.frames[frame].document.write('</style>');
  11. top.frames[frame].document.write('</head>');
  12. top.frames[frame].document.write('<body marginheight="0" marginwidth="0">');
 

ça c pour l'entete.

 

ensuite, j'ecris dedans un menu automatiquement genere. Pour cela, j'ai une fonction qui me retourne la chaine de caractere contenant le code HTML pour le menu (ça fait au moins 2000 caracteres ...). mais je pense pas que le pb vienne de là.

 

puis ensuite, je n'ai plus qu'a ecrire la fin :

Code :
  1. top.frames[frame].document.writeln('</body>');
  2. top.frames[frame].document.writeln('</html>');
  3. top.frames[frame].document.writeln('<!-- Fin de la page générée -->');
 

Bon, jusque là, tout aller bien (sous IE4 ou plus, NS4.x et NS6).
puis je me dis; tiens je vais mettre des info bulles sur les liens du menu. Donc, je me sert de script pour faire ça.
Donc il faut que je mette le script dans la page.
Alors pour ça, je me suis dis que le plus simple, c'est de mettre mon script dans un fichier separée, puis de revoir mon entete :

Code :
  1. top.frames[frame].document.writeln('<html>');
  2. top.frames[frame].document.writeln('<!-- page générée automatiquement par JavaScript-->');
  3. top.frames[frame].document.writeln('<head>');
  4. top.frames[frame].document.writeln('<style type="text/css">');
  5. top.frames[frame].document.writeln('   <!--');
  6. top.frames[frame].document.writeln('    a:link {text-decoration:none; color:'+couleur+';}');
  7. top.frames[frame].document.writeln(' a:visited {text-decoration:none; color:'+couleur+';}');
  8. top.frames[frame].document.writeln(' a:hover {text-decoration:underline; color:'+couleur+';}');
  9. top.frames[frame].document.writeln('   -->');
  10. top.frames[frame].document.writeln('</style>');
  11. top.frames[frame].document.writeln('<script language="javascript" src="cgi-bin/infobulle.js"></script>');
  12. top.frames[frame].document.writeln('</head>');
  13. top.frames[frame].document.writeln('<body marginheight="0" marginwidth="0">');
  14. top.frames[frame].document.writeln('<script language="JavaScript">InitBulle("black","#FFFFE7","black",70);</script>');
 

voila ya les 2 lignes en plus; la premiere pour l'inclure, l'autre pour executer le script (donc apres la balise BODY).

 

J'essai sous IE; no pb
sous NS (4.x et 6); ça ne marche pas (bon ok je m'y attendais).
la raison ? lui me sort comme erreur (dans la console):

Code :
  1. JavaScript Error: file:/D|/projet/new
  2. site/accueil.htm, line 15:
  3. InitBulle is not defined.
 

alors il faut savoir que acceuil.htm, c une page qui est affichée au debut (d'ou le nom :D), mais meme pas dans cette frame là ... (dans celle située a droite)
En fait, j'ai l'impression que qd j'ecris dans la page avec doc.write(), ça ecrit bien, mais par contre il ne comprend pas ce qu'il ecrit ?? ainsi, il ne cahrge pas le script...
mais alors, pourquoi l'erreur est dans une autre page ??
alors je me demande ce qu'il se passe qd on fait un document.write(), qd le document contient deja des trucs.
Je m'explique : qd j'ecris toute la page, elle contenait deja des trucs dedans.... alors ils deviennent quoi ces trucs? le probleme vient peut etre de là ?
ya pas une fonction document.erase(), ou un truc du style ?

 

bref, vous l'aurez compris, là je ne vois vraiment aps d'ou ça vient ....

 

un paquet de carambars a celui qui trouve !


Message édité par petoulachi le 06-11-2012 à 17:24:39
Reply

Marsh Posté le 17-05-2001 à 18:04:32   

Reply

Marsh Posté le 17-05-2001 à 18:06:18    

ha oui, j'oubliais;
pour etre sur qd meme, j'ai ecrit une page html contenant exactememnt la meme chose que ce qu'il devrait s'ecrire dans la page générée, puis j'ai fait un lien dans une autre frame qui charge la page dans ma frame de menu.
et là, tout marche  :crazy:  :crazy:  :crazy:  
a l'aiiiiide  :sweat:

Reply

Marsh Posté le 17-05-2001 à 18:09:04    

allez je rajoute des precisions :
 
au tout debut , avant d'ecrire l'en-tete, je fais
document.open();
 
puis tout a la fin  
document.close();
 
ça peut poser pb ?

Reply

Marsh Posté le 17-05-2001 à 20:51:28    

ben je ne sais pas trop en fait je n'utilise pas trop  ns, mais par contre il existe une solution pour ecrire ton code de maniere un peu plus optimiséee.
 
  => 13 308o
 

Code :
  1. var s='<html>\n';
  2. s+='<!-- page générée automatiquement par JavaScript-->\n';
  3. s+='<head>\n';
  4. s+='<style type="text/css">\n';
  5. s+='   <!--\n';
  6. s+='    a:link {text-decoration:none; color:'+couleur+'}\n';
  7. s+=' a:visited {text-decoration:none; color:'+couleur+'}\n';
  8. s+=' a:hover {text-decoration:underline; color:'+couleur+'}\n';
  9. s+='   -->\n';
  10. s+='</style>\n';
  11. s+='<script language="javascript" src="cgi-bin/infobulle.js"></script>\n';
  12. s+='</head>\n';
  13. s+='<body marginheight="0" marginwidth="0">\n';
  14. s+='<script language="JavaScript">InitBulle"black","#FFFFE7","black",70);</script>\n';
  15. top.frames[frame].document.write(s);


 
  la ca ne fait plus que 636 octets
 

Code :
  1. var s='<html>\n<!-- page générée automatiquement par JavaScript-->\n<head>\n<style type="text/css">\n<!--\na:link {text-decoration:none; color:'+couleur+'}\na:visited {text-decoration:none; color:'+couleur+'}\na:hover {text-decoration:underline; color:'+couleur+'}\n-->\n</style>\n<script language="javascript" src="cgi-bin/infobulle.js"></script>\n</head>\n<body marginheight="0" marginwidth="0">\n<script language="JavaScript">InitBulle("black","#FFFFE7","black",70);</script>';
  2. top.frames[frame].document.write(s);


 
la ca ne fait plus que 518 octets mais c'est moins lisible
 
desole mais c'est tout ce que je peux faire.

Reply

Marsh Posté le 18-05-2001 à 09:40:15    

ok, je vais deja essayer de faire ça.... je sais pas si ça y feras qq chose a mon pb, mais apparemment ça optimise, donc autant pas s'en priver !

Reply

Marsh Posté le 18-05-2001 à 09:48:24    

essaye avec des tests simples...
dans ton include met une fonction toute conne du style alert(blabla) et regarde si en l'appelant dynamiquement il y arrive...
essaye aussi peutêtre du
document.write('<script>alert("salut sa marche" );</script>')
et des test du genre....
 
à priori ce con de netscape il se rend pas compte qui a du javascript dans ce kil génère (il fait pas le re-parsing de sa page qd il l'écrit à la volée??? :pt1cable:  :pt1cable:  :pt1cable: )
donc avec des simples tests tu devrais trouver le bug!
je peux pas t'aider plus, car g plus de NETSCAPE sur moi  :gun:  :gun:  :gun:  :gun:  
(on m'en a contraint :sweat:  :sweat: )

Reply

Marsh Posté le 18-05-2001 à 10:22:31    

Bon.
tout d'abord, merci darkoli, sans le vouloir tu m'as fait trouver ce qui deconnait.
Je m'explique;
J'ai donc voulu faire ce que tu me disais; stocker le code HTMLdans une variable, puis ecrire cette variable. J'ai fais ça pour l'en-tete et la fin de page.
Je lance IE; no pb, tout marche.
Je lance NS;ha bizarre, il n'applique pas les couleurs sur les liens, comme je le specifie dans l'en-tete. dans l'en-tete ? huhu... je commence a comprendre ...
au lieu de faire un include de mon script, bin je l'ecris directement; style :

Code :
  1. top.frames[frame].document.writeln('<html>');
  2. top.frames[frame].document.writeln('<!-- page générée automatiquement par JavaScript-->');
  3. top.frames[frame].document.writeln('<head>');
  4. top.frames[frame].document.writeln('<style type="text/css">');
  5. top.frames[frame].document.writeln('   <!--');
  6. top.frames[frame].document.writeln('    a:link {text-decoration:none; color:'+couleur+';}');
  7. top.frames[frame].document.writeln('    a:visited {text-decoration:none; color:'+couleur+';}');
  8. top.frames[frame].document.writeln('    a:hover {text-decoration:underline; color:'+couleur+';}');
  9. top.frames[frame].document.writeln('   -->');
  10. top.frames[frame].document.writeln('</style>');
  11. top.frames[frame].document.writeln('<script language="javascript">');
  12. top.frames[frame].document.writeln('<!-- ');
  13. top.frames[frame].document.writeln('var CouleurContour;');
  14. top.frames[frame].document.writeln('var CouleurFond;');
  15. top.frames[frame].document.writeln('var CouleurTexte;');
  16. top.frames[frame].document.writeln('var width;');
  17. top.frames[frame].document.writeln('var nsy=0;');
  18. top.frames[frame].document.writeln('function AffBulle(texte)') ;
  19.         ......


je lance NS, et là; miracle , ça marche !!!
Bon par contre, j'aimerai bien pouvoir ne faire que l'inclusion du script, pas l'ecrire completement.
Donc, mon pb est partiellement resolu ... :crazy:


Message édité par petoulachi le 06-11-2012 à 17:26:24
Reply

Marsh Posté le 18-05-2001 à 12:07:27    

franky , j'ai eu le meme probleme....alors, moi le truc qui chiait, c'etait les   "blabla"+varibles+"blabla"
et impossible de trouver pourquoi....tu sais c ce dont je t'avais parle y'a un mois...et ben...bonne chance...en fairt c pas un probleme de prog...enfin si..c un probleme de programmation de netscape !!!!! putain de netscape !!...
ps : la methode de darkoli fait toujours le meme probleme, je l'avais deja essayé....et oui, le document.write() de netscape, il faut po en abuser...sur tout les bouquins que j'ai lu , ils te disent que reecrire une page entiere avec document.write(), ca peut chier....et be voila t'en as fait l'experience ;o)  
 
je chie sur netscape...si si..mais un gros gros caca !!! bien puant...avec les mouches et tout et tout !!!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed