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

  FORUM HardWare.fr
  Programmation

  [JAVASCRIPT] un probleme pour les balezes et vieux routards

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JAVASCRIPT] un probleme pour les balezes et vieux routards

n°32741
petoulachi
A fortiori, brigadier chef
Posté le 17-05-2001 à 18:04:32  profilanswer
 

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
mood
Publicité
Posté le 17-05-2001 à 18:04:32  profilanswer
 

n°32742
petoulachi
A fortiori, brigadier chef
Posté le 17-05-2001 à 18:06:18  profilanswer
 

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:

n°32745
petoulachi
A fortiori, brigadier chef
Posté le 17-05-2001 à 18:09:04  profilanswer
 

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 ?

n°32782
darkoli
Le Petit Dinosaure Bleu
Posté le 17-05-2001 à 20:51:28  profilanswer
 

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.

n°32838
petoulachi
A fortiori, brigadier chef
Posté le 18-05-2001 à 09:40:15  profilanswer
 

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 !

n°32839
k666
dites non à petitmou
Posté le 18-05-2001 à 09:48:24  profilanswer
 

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: )

n°32850
petoulachi
A fortiori, brigadier chef
Posté le 18-05-2001 à 10:22:31  profilanswer
 

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
n°32909
under
(avec u comme under)
Posté le 18-05-2001 à 12:07:27  profilanswer
 

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 !!!


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

  [JAVASCRIPT] un probleme pour les balezes et vieux routards

 

Sujets relatifs
[HTML]-FLASH-JAVASCRIPT lancer un .exe en local..[javaScript] : navigation avec le bouton "Precedent "
[JavaScript] Pourquoi mon curseur reste en sablier ?JavaScript: textArea
[JSP/javascript/HTML] tout en un, c le bordel.....[BASH] Problème message d'erreur
[SQL] [access] problème avec requête sur un champ de type date(PHP) probleme (incomprehensible ?) avec mes variables
JavaScript: fermeture de fenetreJavascript... JE cherche...
Plus de sujets relatifs à : [JAVASCRIPT] un probleme pour les balezes et vieux routards


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